def __init__(self, start, end, name, templated_types, modifiers,<EOL>reference, pointer, array):
_GenericDeclaration.__init__(self, start, end, name, [])<EOL>self.templated_types = templated_types<EOL>if not name and modifiers:<EOL><INDENT>self.name = modifiers.pop()<EOL><DEDENT>self.modifiers = modifiers<EOL>self.reference = reference<EOL>self.pointer = pointer<EOL>self.array = array<EOL>
Args:

        name: str name of main type
        templated_types: [Class (Type?)] template type info between <>
        modifiers: [str] type modifiers (keywords) eg, const, mutable, etc.
        reference, pointer, array: bools