docs: def type_string(self):
          """Returns a string representing the type of the structure"""
          if self.is_tuple:
              subtypes = [item.type_string for item in self.children]
              return '{}({})'.format(
                  '' if self.val_guaranteed else '*',
                  ', '.join(subtypes))
          elif self.is_list:
              return '{}[{}]'.format(
                  '' if self.val_guaranteed else '*',
                  self.children[0].type_string)
          else:
              return '{}{}'.format(
                  '' if self.val_guaranteed else '*',
                  self.type_.__name__)