code: def _parse_value_node(self, vtype, node):
          # type: (str, ElementTree.Element) -> Any
          
          kind = node.tag
          if kind == TAG_XML:
              # Raw XML value
              return next(iter(node))
  
          elif kind == TAG_LIST or kind == TAG_ARRAY:
              # List
              return [
                  self._convert_value(vtype, value_node.text)
                  for value_node in node.findall(TAG_VALUE)
              ]
  
          elif kind == TAG_SET:
              # Set
              return set(
                  self._convert_value(vtype, value_node.text)
                  for value_node in node.findall(TAG_VALUE)
              )
  
          else:
              # Unknown
              raise ValueError("Unknown value tag: {0}".format(kind))
docs: Parses a value node
  
          :param vtype: The value type
          :param node: The value node
          :return: The parsed value