docs: def new(self, **kwargs):
          '''
          :param project: Project ID in which to create the new remote object
          :type project: string
          :param name: Name for the object
          :type name: string
          :param tags: Tags to add for the object
          :type tags: list of strings
          :param types: Types to add to the object
          :type types: list of strings
          :param hidden: Whether the object is to be hidden
          :type hidden: boolean
          :param properties: Properties given as key-value pairs of strings
          :type properties: dict
          :param details: Details to set for the object
          :type details: dict or list
          :param folder: Full path to the destination folder
          :type folder: string
          :param parents: If True, recursively create all parent folders if they are missing
          :type parents: boolean
  
          :rtype: :class:`DXDataObject`
  
          Creates a data object with the given fields. Only *project* is
          required, and only if no default project or workspace is set;
          the remaining arguments are optional and have default behavior
          as specified in the API documentation for the ``/new`` method of
          each data object class.
  
          '''
          if not hasattr(self, '_class'):
              raise NotImplementedError(
                  "DXDataObject is an abstract class; a subclass should" + \
                      "be initialized instead.")
  
          dx_hash, remaining_kwargs = self._get_creation_params(kwargs)
          self._new(dx_hash, **remaining_kwargs)