Is there a reason the parameter name for ForwardingMap.remove(Object object) does not match the interface: Map.remove(Object key)?  In short: 'object' != 'key'
If yes, please kindly explain the history.
Else, can we rename to 'key' to match the interface?
}
      return null;
    }
    @Override
    public boolean containsKey(Object key) {
      return get(key) != null;
    }
  }
  private final class Complement extends TreeRangeSet<C> {
    Complement() {
      super(new ComplementRangesByLowerBound<C>(TreeRangeSet.this.rangesByLowerBound));
    }
    @Override
    public void add(Range<C> rangeToAdd) {
      TreeRangeSet.this.remove(rangeToAdd);
    }
    @Override
    public void remove(Range<C> rangeToRemove) {
      TreeRangeSet.this.add(rangeToRemove);
    }
    @Override
    public boolean contains(C value) {
      return !TreeRangeSet.this.contains(value);
    }
    @Override
    public RangeSet<C> complement() {
      return TreeRangeSet.this;
    }
  }
  private static final class SubRangeSetRangesByLowerBound<C extends Comparable<?>>