Welcome to Hell. =D Some of the things you can do with AAs are recognized by the compiler during semantic and turned into druntime calls, sometimes the constructs survive all the way to the glue layer (e2ir) and are turned into druntime calls there and sometimes the type of an expressions is magically rewritten to AssociativeArray and the methods are looked up normally. (this one caused problems with literals)
The type needs to stay as V[K] _not_ AssociativeArray, so that error messages work properly. Something needs to be done about literals too... Don't forget template arg deduction! There's a function AAGetSym (or something like that) that can be searched for to find where dmd emits druntime calls, but there might be other places it generates them. Enjoy.
