code: def parse_method(self, tup_tree):
          
  
          self.check_node(tup_tree, 'METHOD', ('NAME',),
                          ('TYPE', 'CLASSORIGIN', 'PROPAGATED'),
                          ('QUALIFIER', 'PARAMETER', 'PARAMETER.REFERENCE',
                           'PARAMETER.ARRAY', 'PARAMETER.REFARRAY'))
  
          attrl = attrs(tup_tree)
  
          parameters = self.list_of_matching(tup_tree,
                                             ('PARAMETER', 'PARAMETER.REFERENCE',
                                              'PARAMETER.ARRAY',
                                              'PARAMETER.REFARRAY'))
  
          qualifiers = self.list_of_matching(tup_tree, ('QUALIFIER',))
  
          return_type = attrl.get('TYPE', None)
          if not return_type:
              raise CIMXMLParseError(
                  _format("Element {0!A} missing attribute 'TYPE' (a void "
                          "method return type is not supported in CIM)",
                          name(tup_tree)),
                  conn_id=self.conn_id)
  
          return CIMMethod(attrl['NAME'],
                           return_type=return_type,
                           parameters=parameters,
                           qualifiers=qualifiers,
                           class_origin=attrl.get('CLASSORIGIN', None),
                           propagated=self.unpack_boolean(
                               attrl.get('PROPAGATED', 'false')))
docs: ::
  
              <!ELEMENT METHOD (QUALIFIER*, (PARAMETER | PARAMETER.REFERENCE |
                                             PARAMETER.ARRAY |
                                             PARAMETER.REFARRAY)*)>
              <!ATTLIST METHOD
                  %CIMName;
                  %CIMType;              #IMPLIED
                  %ClassOrigin;
                  %Propagated;>