abstract Future(Dynamic) { @:from static inline function ofAny(v:T):Future return null; } typedef FutureAlias = Future; class Main { static function main() req([1, '{"baz":"baz"}']); static public function req(?arr, ?body:Source) {} } abstract Source(Int) from Int to Int { @:from static function ofFuture(f:FutureAlias):Source return null; }