class Main2 { static function main() { var foo:Vector = null; var bar:Vector = Vector.fromIterable(foo); } } typedef Foo = { final id:String; final ?project:String; } typedef Bar = { final id:String; final createDate:Date; } abstract Vector(Array) { inline function new(a) this = a; @:from static function fromVector(v:Vector):Vector return cast v; static public function fromIterable(v:Iterable):Vector return null; @:to public function toArray() return this.copy(); }