input: from typing import List
  
  def parse_xml(text) -> List[Tag]:
      """
      Parse an XML document and return a list of tag objects. Each tag object contains the tag's ID and its child values.
      
      >>> from xml.etree import ElementTree as ET
      >>> class Tag:
      ...     def __init__(self, tag_id):
      ...         self.tag_id = tag_id
      ...         self.values = []
      ...     def add_value(self, value):
      ...         self.values.append(value)
      >>> parse_xml('''<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>''')
      [Tag(tag_id='1', values=['a', 'b']), Tag(tag_id='2', values=['c', 'd'])]
      """
      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:     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