[module extended(http://www.eclipse.org/emf/2002/Ecore)/]
[template protected protected_extended_template(c:EClass)]
	extended.protected_extended_template called on [c.oclAsType(EObject).eClass().name/] [c.name/]
[/template]

[template protected super_extended_template(c:EClass)]
	extended.super_extended_template called on [c.oclAsType(EObject).eClass().name/] [c.name/]
[/template]

[template private private_extended_template(c:EClass)]
	extended.private_extended_template called on [c.oclAsType(EObject).eClass().name/] [c.name/]
[/template]

[template public imported_template(c:EClass)]
    extended.imported_template called on [c.oclAsType(EObject).eClass().name/] [c.name/]
[/template]


[template public collection_template(c:Collection(EClass))]
extended_collection_template
[/template]

[template public sequence_template(c:Sequence(EClass))]
extended_sequence_template
[/template]

[template public set_template(c:Set(EClass))]
extended_set_template
[/template]

[template public bag_template(c:Bag(EClass))]
extended_bag_template
[/template]

[template public ordered_set_template(c:OrderedSet(EClass))]
extended_ordered_set_template
[/template]