input: from typing import List, Any
  
  
  def parse_xml(text: str) -> List[Any]:
      """ Parse an XML document and return a list of Tag objects.
      Each Tag object has an 'id' attribute and a list of values for each subchild.
      >>> xml_text = '''<xml><root><child1 id="1"><subchild1 value="a"></subchild1><subchild2 value="b"></subchild2></child1><child2 id="2"><subchild3 value="c"></subchild3><subchild4 value="d"></subchild4></child2></root></xml>'''
      >>> tags = parse_xml(xml_text)
      >>> [tag.tag_id for tag in tags]
      ['1', '2']
      >>> tags[0].values
      ['a', 'b']
      >>> tags[1].values
      ['c', 'd']
      """
      from xml.etree import ElementTree as ET
  
      class Tag:
          def __init__(self, tag_id: str):
              self.tag_id = tag_id
              self.values = []
          
          def add_value(self, value: str):
              self.values.append(value)
  
      tag_objects = []
  
      root = ET.fromstring(text)
      for child in root:
          tag = Tag(child.attrib["id"])
          for subchild in child:
              tag.add_value(subchild.attrib["value"])
          tag_objects.append(tag)
  
      return tag_objects
output:     from xml.etree import ElementTree as ET
  
      class Tag:
          def __init__(self, tag_id: str):
              self.tag_id = tag_id
              self.values = []
          
          def add_value(self, value: str):
              self.values.append(value)
  
      tag_objects = []
  
      root = ET.fromstring(text)
      for child in root:
          tag = Tag(child.attrib["id"])
          for subchild in child:
              tag.add_value(subchild.attrib["value"])
          tag_objects.append(tag)
  
      return tag_objects