@property<EOL><INDENT>def class_types(self):<DEDENT>
if None is self.__class_types:<EOL><INDENT>self.__class_types = []<EOL>for type_ in self.argument_types:<EOL><INDENT>decl = None<EOL>type_ = type_traits.remove_reference(type_)<EOL>if type_traits_classes.is_class(type_):<EOL><INDENT>decl = type_traits_classes.class_traits.get_declaration(<EOL>type_)<EOL><DEDENT>elif type_traits_classes.is_class_declaration(type_):<EOL><INDENT>tt = type_traits_classes.class_declaration_traits<EOL>decl = tt.get_declaration(type_)<EOL><DEDENT>else:<EOL><INDENT>pass<EOL><DEDENT>if decl:<EOL><INDENT>self.__class_types.append(decl)<EOL><DEDENT><DEDENT><DEDENT>return self.__class_types<EOL>
list of class/class declaration types, extracted from the
        operator arguments