Map is a multitype abstract, which means that it choses a concrete
type based on its type parameters. These choices are defined by the
@:to functions here:
https://code.google.com/p/haxe/source/browse/trunk/std/Map.hx#126
The compiler will check them from top to bottom, and the first one
whose t argument-type matches is selected.
By extension, this explains why your example above does not work.
The type parameters there are not known, so the compiler does not
know which implementation to pick. I have plans to support this if
MapWrapper is a @:generic class, but not yet in haxe 3.
Simon