code: def unpack_value(self, tup_tree):
          
  
          valtype = attrs(tup_tree)['TYPE']
  
          raw_val = self.list_of_matching(tup_tree, ('VALUE', 'VALUE.ARRAY'))
  
          if not raw_val:
              return None
  
          if len(raw_val) > 1:
              raise CIMXMLParseError(
                  _format("Element {0!A} has too many child elements {1!A} "
                          "(allowed is one of 'VALUE' or 'VALUE.ARRAY')",
                          name(tup_tree)),
                  conn_id=self.conn_id)
  
          raw_val = raw_val[0]
  
          if type(raw_val) == list:  # pylint: disable=unidiomatic-typecheck
              return [self.unpack_single_value(data, valtype)
                      for data in raw_val]
  
          return self.unpack_single_value(raw_val, valtype)
docs: Find VALUE or VALUE.ARRAY under tup_tree and convert to a Python value.
  
          Looks at the TYPE of the node to work out how to decode it.
          Handles nodes with no value (e.g. when representing NULL by omitting
          VALUE)