docs: def include(self, *fields, **kwargs):
          """
          Return a new QuerySet instance that will include related objects.
  
          If fields are specified, they must be non-hidden relationships.
  
          If select_related(None) is called, clear the list.
          """
          clone = self._clone()
  
          # Preserve the stickiness of related querysets
          # NOTE: by default _clone will clear this attribute
          # .include does not modify the actual query, so we
          # should not clear `filter_is_sticky`
          if self.query.filter_is_sticky:
              clone.query.filter_is_sticky = True
  
          clone._include_limit = kwargs.pop('limit_includes', None)
          assert not kwargs, '"limit_includes" is the only accepted kwargs. Eat your heart out 2.7'
  
          # Copy the behavior of .select_related(None)
          if fields == (None, ):
              for field in clone._includes.keys():
                  clone.query._annotations.pop('__{}'.format(field.name), None)
              clone._includes.clear()
              return clone
  
          # Parse everything the way django handles joins/select related
          # Including multiple child fields ie .include(field1__field2, field1__field3)
          # turns into {field1: {field2: {}, field3: {}}
          for name in fields:
              ctx, model = clone._includes, clone.model
              for spl in name.split('__'):
                  field = model._meta.get_field(spl)
                  if isinstance(field, ForeignObjectRel) and field.is_hidden():
                      raise ValueError('Hidden field "{!r}" has no descriptor and therefore cannot be included'.format(field))
                  model = field.related_model
                  ctx = ctx.setdefault(field, OrderedDict())
  
          for field in clone._includes.keys():
              clone._include(field)
  
          return clone