docs: def next_version(self, object, relations_as_of='end'):
          """
          Return the next version of the given object.
  
          In case there is no next object existing, meaning the given
          object is the current version, the function returns this version.
  
          Note that if object's version_end_date is None, this does not check
          the database to see if there is a newer version (perhaps created by
          some other code), it simply returns the passed object.
  
          ``relations_as_of`` is used to fix the point in time for the version;
          this affects which related objects are returned when querying for
          object relations. See ``VersionManager.version_as_of`` for details
          on valid ``relations_as_of`` values.
  
          :param Versionable object: object whose next version will be returned.
          :param mixed relations_as_of: determines point in time used to access
              relations. 'start'|'end'|datetime|None
          :return: Versionable
          """
          if object.version_end_date is None:
              next = object
          else:
              next = self.filter(
                  Q(identity=object.identity),
                  Q(version_start_date__gte=object.version_end_date)
              ).order_by('version_start_date').first()
  
              if not next:
                  raise ObjectDoesNotExist(
                      "next_version couldn't find a next version of object " +
                      str(object.identity))
  
          return self.adjust_version_as_of(next, relations_as_of)