Suppose I have an aggregate type and I want to use it in conjunction with a template iterator. The following C# code gives an exact example of my model:public interface Iterable<T>{    Iterator<T> iterator();}public abstract class Letter{}public abstract class Alphabet : Iterable<Letter>{    public abstract Iterator<Letter> iterator();}public abstract class Iterator<T>{    public abstract void first();    public abstract void next();    public abstract bool done();    public abstract T get();}But I have a little problem when capturing this in UML. The problem is that I'm not sure how to combine two relationships between Alphabet and Iterable: Template Binding and Realisation. I ended up in depicting them separetly but for that I had to introduce two intermediate entities for that and this looks a bit clumsy.You see these new interface AlphabetIterable (binds Iterable with Letter) and class AlphabetIterator (binds Iterator with Letter).Is there a way to make an equivalent UML model without these two intermediates?
UML: How to implement a template interface?
uml
The picture below shows how Sparx Systems Enterprise Architect's code reverse engineering visualizes the relationship between Alphabet and Iterable when fed with your code snippet.I've added the bind stereotype manually to make it compatible withwww.omg.org/spec/UML/2.5/Beta2 7.3.4 Common Structure  Templates  Notation...A TemplateBinding is shown as a dashed arrow with the tail on the bound element and the arrowhead on the template and the keyword bind. The binding information may be displayed as a comma-separated list of template parameter substitutions:<template-param-substitution> ::= <template-param-name> -> <actual-template-parameter>...See also:uml-diagrams.org: Template Binding