docs: def _from_dict(cls, _dict):
          """Initialize a DialogNode object from a json dictionary."""
          args = {}
          if 'dialog_node' in _dict:
              args['dialog_node'] = _dict.get('dialog_node')
          else:
              raise ValueError(
                  'Required property \'dialog_node\' not present in DialogNode JSON'
              )
          if 'description' in _dict:
              args['description'] = _dict.get('description')
          if 'conditions' in _dict:
              args['conditions'] = _dict.get('conditions')
          if 'parent' in _dict:
              args['parent'] = _dict.get('parent')
          if 'previous_sibling' in _dict:
              args['previous_sibling'] = _dict.get('previous_sibling')
          if 'output' in _dict:
              args['output'] = DialogNodeOutput._from_dict(_dict.get('output'))
          if 'context' in _dict:
              args['context'] = _dict.get('context')
          if 'metadata' in _dict:
              args['metadata'] = _dict.get('metadata')
          if 'next_step' in _dict:
              args['next_step'] = DialogNodeNextStep._from_dict(
                  _dict.get('next_step'))
          if 'title' in _dict:
              args['title'] = _dict.get('title')
          if 'type' in _dict or 'node_type' in _dict:
              args['node_type'] = _dict.get('type') or _dict.get('node_type')
          if 'event_name' in _dict:
              args['event_name'] = _dict.get('event_name')
          if 'variable' in _dict:
              args['variable'] = _dict.get('variable')
          if 'actions' in _dict:
              args['actions'] = [
                  DialogNodeAction._from_dict(x) for x in (_dict.get('actions'))
              ]
          if 'digress_in' in _dict:
              args['digress_in'] = _dict.get('digress_in')
          if 'digress_out' in _dict:
              args['digress_out'] = _dict.get('digress_out')
          if 'digress_out_slots' in _dict:
              args['digress_out_slots'] = _dict.get('digress_out_slots')
          if 'user_label' in _dict:
              args['user_label'] = _dict.get('user_label')
          if 'disabled' in _dict:
              args['disabled'] = _dict.get('disabled')
          if 'created' in _dict:
              args['created'] = string_to_datetime(_dict.get('created'))
          if 'updated' in _dict:
              args['updated'] = string_to_datetime(_dict.get('updated'))
          return cls(**args)