code: GeneralRange<T> reverse() {
      GeneralRange<T> result = reverse;
      if (result == null) {
        result =
            new GeneralRange<T>(
                Ordering.from(comparator).reverse(),
                hasUpperBound,
                getUpperEndpoint(),
                getUpperBoundType(),
                hasLowerBound,
                getLowerEndpoint(),
                getLowerBoundType());
        result.reverse = this;
        return this.reverse = result;
      }
      return result;
    }
docs: Returns the same range relative to the reversed comparator.