Can't edit a field of a Model Value

(Bug, To be Fixed , Priority: Critical, Test Status: No automated tests yet , Reported By Justin du Coeur, )
Summary: Create a Model Type, MT, with field F and F2. Create a Parent thing P, and give it a Model Property based on MT, MTP. In P, try to edit F directly: [[MTP -> F._edit]]. It simply doesn't work.
The failure is because the path to F comes out wrong: it omits the step of going through MTP.
The underlying reason is because EditorModule isn't smart enough. It tries to track the inheritance path in EditorModule.getInstanceEditor(), by saving "currentValue" in the Context. But the value it saves is P, so the path winds up including F, MT and P, but not MTP that relates MT to P. (Note that you can't just guess -- there could be several properties based on MT. In the case where this came up, there were 15 such Properties defined on the parent.)
The loss of information happens when we dereference MTP. That produces a value of MT Type, but without any knowledge of where it came from. And we can't inject that knowledge into the Context, because the Property.qlApply() call that it comes from returns only the QValue, not the QLContext. (Once again, I am being bitten by that lack.)
The likely fix will involve enhancing that dereference, to record that we are diving into a sub-Bundle. Then, in EditorModule.applyToPropAndThing(), we fetch that information and use it to set the container in the resulting DisplayPropVal.
I believe there's a general mechanism fighting to break out here (which we need anyway), that a QValue or its containing Context should record where that value comes from. In particular, dereferencing a Property records that Property in the chain somewhere, so that it can be reconstructed later. I would bet that many more-sophisticated scenarios will require this. (And I would bet that we'll need to modify qlApply to return a Context, or possibly wrap it in something that returns a Context.)