Hi Vladimir!
I think this looks very nice. I will try to check it out "in action" to get a better feeling. Until then, a couple of questions (I can give partial answers myself, but I'm thinking that a fresh user might not be able to, so these should be part of the introductory reading):
Is any of the three ways to implement a model recommended over the others?
What are the use cases where each is better suited?
Maybe it would be useful to have a small example for each of the ways (optimally, I'd say "let's take the Java example and do it the other two ways", but it feels like a bit too much duplication). I can try to provide that as a way for me to get acquainted with the new API.
Do I understand correctly that for #2, it means the hierarchy is like below (I hope it gets formatted nicely)?
+--------------------+ +-----------------------+
| | | |
| IMyElement +----------> IElement |
| | | |
+--------------------+ +-----------------------+
^
|
|
|
+--------------------+ +----------------------+
| | | |
| MyElement +-----------> IElementImpl |
| +-----+ | |
+--------------------+ | +----------------------+
|
|
| +----------------------+
| | |
+-----> IElementExtension |
| |
+----------------------+
best regards,
Vlad