docs: def as_dict(self):
          """ Return a dictionary containing the current values
          of the object.
  
          Returns:
              (dict): The object represented as a dictionary
          """
          out = {}
          for prop in self:
              propval = getattr(self, prop)
  
              if hasattr(propval, 'for_json'):
                  out[prop] = propval.for_json()
              elif isinstance(propval, list):
                  out[prop] = [getattr(x, 'for_json', lambda:x)() for x in propval]
              elif isinstance(propval, (ProtocolBase, LiteralValue)):
                  out[prop] = propval.as_dict()
              elif propval is not None:
                  out[prop] = propval
  
          return out