Hi,
I went a bit over your code. Interesting finding. We had a similar idea with MooseMinimalState, but you are bringing it forward.
After loading your improvement, I get on the ArgoUML 0.34:
FMNullMultivalueLink allInstances size ==> 567234
FMMultivalueLink allInstances size ==> 103591
This is signifiant! Good catch.
However, there is still an issue with the way you are dynamically transforming the null value into a real value:
noMoreNull
self owner instVarNamed: self selector put:
(FMMultivalueLink on: self owner opposite: self opposite).
^(self owner perform: self selector)
Here you are assuming that there is an instance variable with the name of the selector. This is brittle. We need to find a better way.
Doru