code: def parse(cls, value):
      
      if is_list_annotation(cls):
          if not isinstance(value, list):
              raise TypeError('Could not parse {} because value is not a list'.format(cls))
          return [parse(cls.__args__[0], o) for o in value]
      else:
          return GenericParser(cls, ModelProviderImpl()).parse(value)
docs: Takes a class and a dict and try to build an instance of the class
  
      :param cls: The class to parse
      :param value: either a dict, a list or a scalar value