code: def parse_paramvalue(self, tup_tree):
          
  
          # Version 2.4 of DSP0201 added CLASSNAME, INSTANCENAME, CLASS,
          # INSTANCE, and VALUE.NAMEDINSTANCE.
  
          # Version 2.1.1 of DSP0201 lacks the %ParamType entity but it is
          # present as optional (for backwards compatibility) in version 2.2.
  
          # VMAX returns TYPE instead of PARAMTYPE, toleration support added to
          # use TYPE when present if PARAMTYPE is not present.
  
          self.check_node(tup_tree, 'PARAMVALUE', ('NAME',),
                          ('TYPE', 'PARAMTYPE', 'EmbeddedObject',
                           'EMBEDDEDOBJECT'))
  
          child = self.optional_child(tup_tree,
                                      ('VALUE', 'VALUE.REFERENCE', 'VALUE.ARRAY',
                                       'VALUE.REFARRAY', 'CLASSNAME',
                                       'INSTANCENAME', 'CLASS', 'INSTANCE',
                                       'VALUE.NAMEDINSTANCE'))
          attrl = attrs(tup_tree)
  
          if 'PARAMTYPE' in attrl:
              paramtype = attrl['PARAMTYPE']
          elif 'TYPE' in attrl:
              paramtype = attrl['TYPE']
          else:
              paramtype = None
  
          if 'EmbeddedObject' in attrl or 'EMBEDDEDOBJECT' in attrl:
              child = self.parse_embeddedObject(child)
  
          return attrl['NAME'], paramtype, child
docs: Parse PARAMVALUE element.
  
            ::
  
              <!ELEMENT PARAMVALUE (VALUE | VALUE.REFERENCE | VALUE.ARRAY |
                                    VALUE.REFARRAY | CLASSNAME | INSTANCENAME |
                                    CLASS | INSTANCE | VALUE.NAMEDINSTANCE)?>
              <!ATTLIST PARAMVALUE
                  %CIMName;
                  %ParamType;  #IMPLIED
                  %EmbeddedObject;>