def parse_types(self, messageSchema, element):
    'parse type, can be repeated'
    for child_element in element:
        if (child_element.tag not in self.VALID_TYPES_ELEMENTS):
            raise ValueError(f'invalid types child element {repr(child_element.tag)}')
        parser = getattr(self, f'parse_types_{child_element.tag}', None)
        if (not parser):
            raise RuntimeError(f'unsupported types parser {repr(child_element.tag)}')
        parser(messageSchema, child_element)
parse type, can be repeated
def parse_types(self, messageSchema, element):
    
    for child_element in element:
        if (child_element.tag not in self.VALID_TYPES_ELEMENTS):
            raise ValueError(f'invalid types child element {repr(child_element.tag)}')
        parser = getattr(self, f'parse_types_{child_element.tag}', None)
        if (not parser):
            raise RuntimeError(f'unsupported types parser {repr(child_element.tag)}')
        parser(messageSchema, child_element)