Dropping comparators for next release (LANG-532)

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/lang/trunk@1199609 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/commons/lang3/compare/ComparableComparator.java b/src/main/java/org/apache/commons/lang3/compare/ComparableComparator.java
deleted file mode 100644
index 39809de..0000000
--- a/src/main/java/org/apache/commons/lang3/compare/ComparableComparator.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.lang3.compare;
-
-import java.io.Serializable;
-import java.util.Comparator;
-
-/**
- * A {@link Comparator Comparator} that compares 
- * {@link Comparable Comparable} objects.
- * <p />
- * This Comparator is useful, for example,
- * for enforcing the natural order in custom implementations
- * of SortedSet and SortedMap.
- * <p />
- * Note: In the 2.0 and 2.1 releases of Commons Collections, 
- * this class would throw a {@link ClassCastException} if
- * either of the arguments to {@link #compare(Object, Object) compare}
- * were <code>null</code>, not {@link Comparable Comparable},
- * or for which {@link Comparable#compareTo(Object) compareTo} gave
- * inconsistent results.  This is no longer the case.  See
- * {@link #compare(Object, Object) compare} for details.
- *
- * @since Commons Collections 2.0
- * @version $Revision$ $Date$
- *
- * @see java.util.Collections#reverseOrder()
- */
-public class ComparableComparator<E extends Comparable<? super E>> implements Comparator<E>, Serializable {
-
-    /** Serialization version. */
-    private static final long serialVersionUID=-291439688585137865L;
-
-    /** The singleton instance. */
-    @SuppressWarnings("rawtypes")
-    public static final ComparableComparator<?> INSTANCE = new ComparableComparator();
-
-    //-----------------------------------------------------------------------
-    /**
-     * Gets the singleton instance of a ComparableComparator.
-     * <p>
-     * Developers are encouraged to use the comparator returned from this method
-     * instead of constructing a new instance to reduce allocation and GC overhead
-     * when multiple comparable comparators may be used in the same VM.
-     * 
-     * @param <E> the type of the enumeration
-     * @return the singleton ComparableComparator
-     */
-    @SuppressWarnings("unchecked")
-    public static <E extends Comparable<? super E>> ComparableComparator<E> comparableComparator() {
-        return (ComparableComparator<E>) INSTANCE;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor whose use should be avoided.
-     * <p>
-     * Please use the {@link #comparableComparator()} method whenever possible.
-     */
-    public ComparableComparator() {
-        super();
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Compare the two {@link Comparable Comparable} arguments.
-     * This method is equivalent to:
-     * <pre>((Comparable)obj1).compareTo(obj2)</pre>
-     * 
-     * @param obj1  the first object to compare
-     * @param obj2  the second object to compare
-     * @return negative if obj1 is less, positive if greater, zero if equal
-     * @throws NullPointerException when <i>obj1</i> is <code>null</code>, 
-     *         or when <code>((Comparable)obj1).compareTo(obj2)</code> does
-     * @throws ClassCastException when <i>obj1</i> is not a <code>Comparable</code>,
-     *         or when <code>((Comparable)obj1).compareTo(obj2)</code> does
-     */
-    public int compare(E obj1, E obj2) {
-        return obj1.compareTo(obj2);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Implement a hash code for this comparator that is consistent with
-     * {@link #equals(Object) equals}.
-     *
-     * @return a hash code for this comparator.
-     * @since Commons Collections 3.0
-     */
-    @Override
-    public int hashCode() {
-        return "ComparableComparator".hashCode();
-    }
-
-    /**
-     * Returns <code>true</code> iff <i>that</i> Object is 
-     * is a {@link Comparator Comparator} whose ordering is 
-     * known to be equivalent to mine.
-     * <p>
-     * This implementation returns <code>true</code>
-     * iff <code><i>object</i>.{@link Object#getClass() getClass()}</code>
-     * equals <code>this.getClass()</code>.
-     * Subclasses may want to override this behavior to remain consistent
-     * with the {@link Comparator#equals(Object)} contract.
-     * 
-     * @param object  the object to compare with
-     * @return true if equal
-     * @since Commons Collections 3.0
-     */
-    @Override
-    public boolean equals(Object object) {
-        return (this == object) || 
-               ((null != object) && (object.getClass().equals(this.getClass())));
-    }
-
-}
diff --git a/src/main/java/org/apache/commons/lang3/compare/ComparatorChain.java b/src/main/java/org/apache/commons/lang3/compare/ComparatorChain.java
deleted file mode 100644
index a6416be..0000000
--- a/src/main/java/org/apache/commons/lang3/compare/ComparatorChain.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.lang3.compare;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * <p>A ComparatorChain is a Comparator that wraps one or
- * more Comparators in sequence.  The ComparatorChain
- * calls each Comparator in sequence until either 1)
- * any single Comparator returns a non-zero result
- * (and that result is then returned),
- * or 2) the ComparatorChain is exhausted (and zero is
- * returned).  This type of sorting is very similar
- * to multi-column sorting in SQL, and this class
- * allows Java classes to emulate that kind of behaviour
- * when sorting a List.</p>
- *
- * <p>Instances of ComparatorChain are not synchronized.
- * The class is not thread-safe at construction time, but
- * it <i>is</i> thread-safe to perform multiple comparisons
- * after all the setup operations are complete.</p>
- *
- * @since Commons Collections 2.0
- * @version $Revision$ $Date$
- */
-public class ComparatorChain<E> implements Comparator<E>, Serializable, Iterable {
-
-    /** The list of comparators in the chain. */
-    protected List<Comparator<E>> comparatorChain = null;
-
-    //-----------------------------------------------------------------------
-    /**
-     * Construct a ComparatorChain with a single Comparator,
-     * sorting in the forward order
-     *
-     * @param comparators Comparators in the Comparator chain
-     */
-    public ComparatorChain(Comparator<E>... comparators) {
-        this.comparatorChain = new ArrayList<Comparator<E>>();
-        Collections.addAll(this.comparatorChain, comparators);
-    }
-
-    /**
-     * Construct a ComparatorChain from the Comparators in the
-     * List.  All Comparators will default to the forward
-     * sort order.
-     *
-     * @param list   List of Comparators
-     */
-    public ComparatorChain(List<Comparator<E>> list) {
-        this.comparatorChain = new ArrayList<Comparator<E>>();
-        this.comparatorChain.addAll(list);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Number of Comparators in the current ComparatorChain.
-     *
-     * @return Comparator count
-     */
-    public int size() {
-        return comparatorChain.size();
-    }
-
-    /**
-     * Perform comparisons on the Objects as per Comparator.compare(o1,o2).
-     *
-     * @param o1  the first object to compare
-     * @param o2  the second object to compare
-     * @return -1, 0, or 1
-     */
-    public int compare(E o1, E o2) {
-
-        // iterate over all comparators in the chain
-        Iterator<Comparator<E>> comparators = comparatorChain.iterator();
-        for (int comparatorIndex = 0; comparators.hasNext(); ++comparatorIndex) {
-
-            Comparator<E> comparator = comparators.next();
-            int retval = comparator.compare(o1,o2);
-            if (retval != 0) {
-                return retval;
-            }
-        }
-
-        // if comparators are exhausted, return 0
-        return 0;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Iterate through the chained comparators. 
-     *
-     * @return Unmodifiable iterator over the chained comparators
-     */
-    public Iterator<Comparator<E>> iterator() {
-        return new UnmodifiableIterator(comparatorChain.iterator());
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Implement a hash code for this comparator that is consistent with
-     * {@link #equals(Object) equals}.
-     *
-     * @return a suitable hash code
-     * @since Commons Collections 3.0
-     */
-    @Override
-    public int hashCode() {
-        int hash = 0;
-        if (comparatorChain != null) {
-            hash ^= comparatorChain.hashCode();
-        }
-        return hash;
-    }
-
-    /**
-     * Returns <code>true</code> iff <i>that</i> Object is
-     * is a {@link Comparator} whose ordering is known to be
-     * equivalent to mine.
-     * <p>
-     * This implementation returns <code>true</code>
-     * iff <code><i>object</i>.{@link Object#getClass() getClass()}</code>
-     * equals <code>this.getClass()</code>, and the underlying
-     * comparators and order bits are equal.
-     * Subclasses may want to override this behavior to remain consistent
-     * with the {@link Comparator#equals(Object)} contract.
-     *
-     * @param object  the object to compare with
-     * @return true if equal
-     * @since Commons Collections 3.0
-     */
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (object == null) {
-            return false;
-        }
-        if (object.getClass().equals(this.getClass())) {
-            ComparatorChain<?> chain = (ComparatorChain<?>) object;
-            return ( (comparatorChain == null ? chain.comparatorChain == null
-                    : comparatorChain.equals(chain.comparatorChain)));
-        }
-        return false;
-    }
-
-}
diff --git a/src/main/java/org/apache/commons/lang3/compare/ComparatorUtils.java b/src/main/java/org/apache/commons/lang3/compare/ComparatorUtils.java
deleted file mode 100644
index 543aaa6..0000000
--- a/src/main/java/org/apache/commons/lang3/compare/ComparatorUtils.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.lang3.compare;
-
-import java.util.Comparator;
-
-/**
- * Provides convenient static utility methods for <Code>Comparator</Code>
- * objects.
- *
- * @since Commons Collections 2.1
- * @version $Revision$ $Date$
- */
-class ComparatorUtils {
-
-    /**
-     * ComparatorUtils should not normally be instantiated.
-     */
-    public ComparatorUtils() {
-    }
-
-    /**
-     * Comparator for natural sort order.
-     *
-     * @see ComparableComparator#INSTANCE
-     */
-    @SuppressWarnings("unchecked")
-    public static final Comparator NATURAL_COMPARATOR = ComparableComparator.<Comparable>comparableComparator();
-
-}
diff --git a/src/main/java/org/apache/commons/lang3/compare/FixedOrderComparator.java b/src/main/java/org/apache/commons/lang3/compare/FixedOrderComparator.java
deleted file mode 100644
index 7294cc2..0000000
--- a/src/main/java/org/apache/commons/lang3/compare/FixedOrderComparator.java
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.lang3.compare;
-
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * A Comparator which imposes a specific order on a specific set of Objects.
- * Objects are presented to the FixedOrderComparator in a specified order and
- * subsequent calls to {@link #compare(Object, Object) compare} yield that order.
- * For example:
- * <pre>
- * String[] planets = {"Mercury", "Venus", "Earth", "Mars"};
- * FixedOrderComparator distanceFromSun = new FixedOrderComparator(planets);
- * Arrays.sort(planets);                     // Sort to alphabetical order
- * Arrays.sort(planets, distanceFromSun);    // Back to original order
- * </pre>
- * <p>
- * Once <code>compare</code> has been called, the FixedOrderComparator is locked
- * and attempts to modify it yield an UnsupportedOperationException.
- * <p>
- * Instances of FixedOrderComparator are not synchronized.  The class is not
- * thread-safe at construction time, but it is thread-safe to perform
- * multiple comparisons  after all the setup operations are complete.
- *
- * @since Commons Collections 3.0
- * @version $Revision$ $Date$
- */
-public class FixedOrderComparator<T> implements Comparator<T> {
-
-    /**
-     * Unknown object behavior enum.
-     * @since Commons Collections 5
-     */
-    public static enum UnknownObjectBehavior {
-        BEFORE, AFTER, EXCEPTION;
-    }
-
-    /** Internal map of object to position */
-    private final Map<T, Integer> map = new HashMap<T, Integer>();
-
-    /** Counter used in determining the position in the map */
-    private int counter = 0;
-
-    /** Is the comparator locked against further change */
-    private boolean isLocked = false;
-
-    /** The behaviour in the case of an unknown object */
-    private UnknownObjectBehavior unknownObjectBehavior = UnknownObjectBehavior.EXCEPTION;
-
-    // Constructors
-    //-----------------------------------------------------------------------
-    /**
-     * Constructs an empty FixedOrderComparator.
-     */
-    public FixedOrderComparator() {
-        super();
-    }
-
-    /**
-     * Constructs a FixedOrderComparator which uses the order of the given array
-     * to compare the objects.
-     * <p>
-     * The array is copied, so later changes will not affect the comparator.
-     *
-     * @param items  the items that the comparator can compare in order
-     * @throws IllegalArgumentException if the array is null
-     */
-    public FixedOrderComparator(T[] items) {
-        super();
-        if (items == null) {
-            throw new IllegalArgumentException("The list of items must not be null");
-        }
-        for (T item : items) {
-            add(item);
-        }
-    }
-
-    /**
-     * Constructs a FixedOrderComparator which uses the order of the given list
-     * to compare the objects.
-     * <p>
-     * The list is copied, so later changes will not affect the comparator.
-     *
-     * @param items  the items that the comparator can compare in order
-     * @throws IllegalArgumentException if the list is null
-     */
-    public FixedOrderComparator(List<T> items) {
-        super();
-        if (items == null) {
-            throw new IllegalArgumentException("The list of items must not be null");
-        }
-        for (T t : items) {
-            add(t);
-        }
-    }
-
-    // Bean methods / state querying methods
-    //-----------------------------------------------------------------------
-    /**
-     * Returns true if modifications cannot be made to the FixedOrderComparator.
-     * FixedOrderComparators cannot be modified once they have performed a comparison.
-     *
-     * @return true if attempts to change the FixedOrderComparator yield an
-     *  UnsupportedOperationException, false if it can be changed.
-     */
-    public boolean isLocked() {
-        return isLocked;
-    }
-
-    /**
-     * Checks to see whether the comparator is now locked against further changes.
-     *
-     * @throws UnsupportedOperationException if the comparator is locked
-     */
-    protected void checkLocked() {
-        if (isLocked()) {
-            throw new UnsupportedOperationException("Cannot modify a FixedOrderComparator after a comparison");
-        }
-    }
-
-    /**
-     * Gets the behavior for comparing unknown objects.
-     *
-     * @return {@link UnknownObjectBehavior}
-     */
-    public UnknownObjectBehavior getUnknownObjectBehavior() {
-        return unknownObjectBehavior;
-    }
-
-    /**
-     * Sets the behavior for comparing unknown objects.
-     *
-     * @param unknownObjectBehavior  the flag for unknown behaviour -
-     * UNKNOWN_AFTER, UNKNOWN_BEFORE or UNKNOWN_THROW_EXCEPTION
-     * @throws UnsupportedOperationException if a comparison has been performed
-     * @throws IllegalArgumentException if the unknown flag is not valid
-     */
-    public void setUnknownObjectBehavior(UnknownObjectBehavior unknownObjectBehavior) {
-        checkLocked();
-        if (unknownObjectBehavior == null) {
-            throw new IllegalArgumentException("Unknown object behavior must not be null");
-        }
-        this.unknownObjectBehavior = unknownObjectBehavior;
-    }
-
-    // Methods for adding items
-    //-----------------------------------------------------------------------
-    /**
-     * Adds an item, which compares as after all items known to the Comparator.
-     * If the item is already known to the Comparator, its old position is
-     * replaced with the new position.
-     *
-     * @param obj  the item to be added to the Comparator.
-     * @return true if obj has been added for the first time, false if
-     *  it was already known to the Comparator.
-     * @throws UnsupportedOperationException if a comparison has already been made
-     */
-    public boolean add(T obj) {
-        checkLocked();
-        Integer position = map.put(obj, new Integer(counter++));
-        return (position == null);
-    }
-
-    /**
-     * Adds a new item, which compares as equal to the given existing item.
-     *
-     * @param existingObj  an item already in the Comparator's set of
-     *  known objects
-     * @param newObj  an item to be added to the Comparator's set of
-     *  known objects
-     * @return true if newObj has been added for the first time, false if
-     *  it was already known to the Comparator.
-     * @throws IllegalArgumentException if existingObject is not in the
-     *  Comparator's set of known objects.
-     * @throws UnsupportedOperationException if a comparison has already been made
-     */
-    public boolean addAsEqual(T existingObj, T newObj) {
-        checkLocked();
-        Integer position = map.get(existingObj);
-        if (position == null) {
-            throw new IllegalArgumentException(existingObj + " not known to " + this);
-        }
-        Integer result = map.put(newObj, position);
-        return (result == null);
-    }
-
-    // Comparator methods
-    //-----------------------------------------------------------------------
-    /**
-     * Compares two objects according to the order of this Comparator.
-     * <p>
-     * It is important to note that this class will throw an IllegalArgumentException
-     * in the case of an unrecognised object. This is not specified in the
-     * Comparator interface, but is the most appropriate exception.
-     *
-     * @param obj1  the first object to compare
-     * @param obj2  the second object to compare
-     * @return negative if obj1 is less, positive if greater, zero if equal
-     * @throws IllegalArgumentException if obj1 or obj2 are not known
-     *  to this Comparator and an alternative behavior has not been set
-     *  via {@link #setUnknownObjectBehavior(UnknownObjectBehavior)}.
-     */
-    public int compare(T obj1, T obj2) {
-        isLocked = true;
-        Integer position1 = map.get(obj1);
-        Integer position2 = map.get(obj2);
-        if (position1 == null || position2 == null) {
-            switch (unknownObjectBehavior) {
-            case BEFORE:
-                return position1 == null ? position2 == null ? 0 : -1 : 1;
-            case AFTER:
-                return position1 == null ? position2 == null ? 0 : 1 : -1;
-            case EXCEPTION:
-                Object unknownObj = (position1 == null) ? obj1 : obj2;
-                throw new IllegalArgumentException("Attempting to compare unknown object "
-                        + unknownObj);
-            default: //could be null
-                throw new UnsupportedOperationException("Unknown unknownObjectBehavior: "
-                        + unknownObjectBehavior);
-            }
-        }
-        return position1.compareTo(position2);
-    }
-
-}
diff --git a/src/main/java/org/apache/commons/lang3/compare/NullComparator.java b/src/main/java/org/apache/commons/lang3/compare/NullComparator.java
deleted file mode 100644
index 7c5b671..0000000
--- a/src/main/java/org/apache/commons/lang3/compare/NullComparator.java
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.lang3.compare;
-
-import java.io.Serializable;
-import java.util.Comparator;
-
-/**
- * A Comparator that will compare nulls to be either lower or higher than
- * other objects.
- *
- * @since Commons Collections 2.0
- * @version $Revision$ $Date$ 
- */
-public class NullComparator<E> implements Comparator<E>, Serializable {
-
-    /** Serialization version. */
-    private static final long serialVersionUID = -5820772575483504339L;
-
-    /**
-     *  The comparator to use when comparing two non-<code>null</code> objects.
-     **/
-    private final Comparator<E> nonNullComparator;
-
-    /**
-     *  Specifies whether a <code>null</code> are compared as higher than
-     *  non-<code>null</code> objects.
-     **/
-    private final boolean nullsAreHigh;
-
-    //-----------------------------------------------------------------------
-    /**
-     *  Construct an instance that sorts <code>null</code> higher than any
-     *  non-<code>null</code> object it is compared with. When comparing two
-     *  non-<code>null</code> objects, the {@link ComparableComparator} is
-     *  used.
-     **/
-    @SuppressWarnings("unchecked")
-    public NullComparator() {
-        this(ComparatorUtils.NATURAL_COMPARATOR, true);
-    }
-
-    /**
-     *  Construct an instance that sorts <code>null</code> higher than any
-     *  non-<code>null</code> object it is compared with.  When comparing two
-     *  non-<code>null</code> objects, the specified {@link Comparator} is
-     *  used.
-     *
-     *  @param nonNullComparator the comparator to use when comparing two
-     *  non-<code>null</code> objects.  This argument cannot be
-     *  <code>null</code>
-     *
-     *  @exception NullPointerException if <code>nonNullComparator</code> is
-     *  <code>null</code>
-     **/
-    public NullComparator(Comparator<E> nonNullComparator) {
-        this(nonNullComparator, true);
-    }
-
-    /**
-     *  Construct an instance that sorts <code>null</code> higher or lower than
-     *  any non-<code>null</code> object it is compared with.  When comparing
-     *  two non-<code>null</code> objects, the {@link ComparableComparator} is
-     *  used.
-     *
-     *  @param nullsAreHigh a <code>true</code> value indicates that
-     *  <code>null</code> should be compared as higher than a
-     *  non-<code>null</code> object.  A <code>false</code> value indicates
-     *  that <code>null</code> should be compared as lower than a
-     *  non-<code>null</code> object.
-     **/
-    @SuppressWarnings("unchecked")
-    public NullComparator(boolean nullsAreHigh) {
-        this(ComparatorUtils.NATURAL_COMPARATOR, nullsAreHigh);
-    }
-    
-    /**
-     *  Construct an instance that sorts <code>null</code> higher or lower than
-     *  any non-<code>null</code> object it is compared with.  When comparing
-     *  two non-<code>null</code> objects, the specified {@link Comparator} is
-     *  used.
-     *
-     *  @param nonNullComparator the comparator to use when comparing two
-     *  non-<code>null</code> objects. This argument cannot be
-     *  <code>null</code>
-     *
-     *  @param nullsAreHigh a <code>true</code> value indicates that
-     *  <code>null</code> should be compared as higher than a
-     *  non-<code>null</code> object.  A <code>false</code> value indicates
-     *  that <code>null</code> should be compared as lower than a
-     *  non-<code>null</code> object.
-     *
-     *  @exception NullPointerException if <code>nonNullComparator</code> is
-     *  <code>null</code>
-     **/
-    public NullComparator(Comparator<E> nonNullComparator, boolean nullsAreHigh) {
-        this.nonNullComparator = nonNullComparator;
-        this.nullsAreHigh = nullsAreHigh;
-        
-        if (nonNullComparator == null) {
-            throw new NullPointerException("null nonNullComparator");
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     *  Perform a comparison between two objects.  If both objects are
-     *  <code>null</code>, a <code>0</code> value is returned.  If one object
-     *  is <code>null</code> and the other is not, the result is determined on
-     *  whether the Comparator was constructed to have nulls as higher or lower
-     *  than other objects.  If neither object is <code>null</code>, an
-     *  underlying comparator specified in the constructor (or the default) is
-     *  used to compare the non-<code>null</code> objects.
-     *
-     *  @param o1  the first object to compare
-     *  @param o2  the object to compare it to.
-     *  @return <code>-1</code> if <code>o1</code> is "lower" than (less than,
-     *  before, etc.) <code>o2</code>; <code>1</code> if <code>o1</code> is
-     *  "higher" than (greater than, after, etc.) <code>o2</code>; or
-     *  <code>0</code> if <code>o1</code> and <code>o2</code> are equal.
-     **/
-    public int compare(E o1, E o2) {
-        if(o1 == o2) { return 0; }
-        if(o1 == null) { return (this.nullsAreHigh ? 1 : -1); }
-        if(o2 == null) { return (this.nullsAreHigh ? -1 : 1); }
-        return this.nonNullComparator.compare(o1, o2);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     *  Implement a hash code for this comparator that is consistent with
-     *  {@link #equals(Object)}.
-     *
-     *  @return a hash code for this comparator.
-     **/
-    @Override
-    public int hashCode() {
-        return (nullsAreHigh ? -1 : 1) * nonNullComparator.hashCode();
-    }
-
-    /**
-     *  Determines whether the specified object represents a comparator that is
-     *  equal to this comparator.
-     *
-     *  @param obj  the object to compare this comparator with.
-     *
-     *  @return <code>true</code> if the specified object is a NullComparator
-     *  with equivalent <code>null</code> comparison behavior
-     *  (i.e. <code>null</code> high or low) and with equivalent underlying
-     *  non-<code>null</code> object comparators.
-     **/
-    @Override
-    public boolean equals(Object obj) {
-        if(obj == null) { return false; }
-        if(obj == this) { return true; }
-        if(!obj.getClass().equals(this.getClass())) { return false; }
-
-        NullComparator<?> other = (NullComparator<?>) obj;
-
-        return ((this.nullsAreHigh == other.nullsAreHigh) &&
-                (this.nonNullComparator.equals(other.nonNullComparator)));
-    }
-
-}
diff --git a/src/main/java/org/apache/commons/lang3/compare/ReverseComparator.java b/src/main/java/org/apache/commons/lang3/compare/ReverseComparator.java
deleted file mode 100644
index ababba9..0000000
--- a/src/main/java/org/apache/commons/lang3/compare/ReverseComparator.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.lang3.compare;
-
-import java.io.Serializable;
-import java.util.Comparator;
-
-/**
- * Reverses the order of another comparator by reversing the arguments
- * to its {@link #compare(Object, Object) compare} method.
- *
- * @since Commons Collections 2.0
- * @version $Revision$ $Date$
- *
- * @see java.util.Collections#reverseOrder()
- */
-public class ReverseComparator<E> implements Comparator<E>, Serializable {
-
-    /** Serialization version from Collections 2.0. */
-    private static final long serialVersionUID = 2858887242028539265L;
-
-    /** The comparator being decorated. */
-    private final Comparator<E> comparator;
-
-    //-----------------------------------------------------------------------
-    /**
-     * Creates a comparator that compares objects based on the inverse of their
-     * natural ordering.  Using this Constructor will create a ReverseComparator
-     * that is functionally identical to the Comparator returned by
-     * java.util.Collections.<b>reverseOrder()</b>.
-     * 
-     * @see java.util.Collections#reverseOrder()
-     */
-    public ReverseComparator() {
-        this(null);
-    }
-
-    /**
-     * Creates a comparator that inverts the comparison
-     * of the given comparator.  If you pass in <code>null</code>,
-     * the ReverseComparator defaults to reversing the
-     * natural order, as per 
-     * {@link java.util.Collections#reverseOrder()}</b>.
-     * 
-     * @param comparator Comparator to reverse
-     */
-    @SuppressWarnings("unchecked")
-    public ReverseComparator(Comparator<E> comparator) {
-        this.comparator = comparator == null ? ComparatorUtils.NATURAL_COMPARATOR : comparator;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Compares two objects in reverse order.
-     * 
-     * @param obj1  the first object to compare
-     * @param obj2  the second object to compare
-     * @return negative if obj1 is less, positive if greater, zero if equal
-     */
-    public int compare(E obj1, E obj2) {
-        return comparator.compare(obj2, obj1);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Implement a hash code for this comparator that is consistent with
-     * {@link #equals(Object) equals}.
-     * 
-     * @return a suitable hash code
-     * @since Commons Collections 3.0
-     */
-    @Override
-    public int hashCode() {
-        return "ReverseComparator".hashCode() ^ comparator.hashCode();
-    }
-
-    /**
-     * Returns <code>true</code> iff <i>that</i> Object is 
-     * is a {@link Comparator} whose ordering is known to be 
-     * equivalent to mine.
-     * <p>
-     * This implementation returns <code>true</code>
-     * iff <code><i>object</i>.{@link Object#getClass() getClass()}</code>
-     * equals <code>this.getClass()</code>, and the underlying 
-     * comparators are equal.
-     * Subclasses may want to override this behavior to remain consistent
-     * with the {@link Comparator#equals(Object) equals} contract.
-     * 
-     * @param object  the object to compare to
-     * @return true if equal
-     * @since Commons Collections 3.0
-     */
-    @Override
-    public boolean equals(Object object) {
-        if (this == object) {
-            return true;
-        }
-        if (null == object) {
-            return false;
-        }
-        if (object.getClass().equals(this.getClass())) {
-            ReverseComparator<?> thatrc = (ReverseComparator<?>) object;
-            return comparator.equals(thatrc.comparator);
-        }
-        return false;
-    }
-
-}
diff --git a/src/main/java/org/apache/commons/lang3/compare/UnmodifiableIterator.java b/src/main/java/org/apache/commons/lang3/compare/UnmodifiableIterator.java
deleted file mode 100644
index a0a3048..0000000
--- a/src/main/java/org/apache/commons/lang3/compare/UnmodifiableIterator.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.lang3.compare;
-
-import java.util.Iterator;
-
-/** 
- * Decorates an iterator such that it cannot be modified.
- * <p>
- * Attempts to modify it will result in an UnsupportedOperationException. 
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1148801 $ $Date: 2011-07-20 07:44:46 -0700 (Wed, 20 Jul 2011) $
- */
-final class UnmodifiableIterator<E> implements Iterator<E> {
-
-    /** The iterator being decorated */
-    private final Iterator<E> iterator;
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor.
-     *
-     * @param iterator  the iterator to decorate
-     */
-    public UnmodifiableIterator(Iterator<E> iterator) {
-        super();
-        if (iterator == null) {
-            throw new IllegalArgumentException("Iterator must not be null");
-        }
-        this.iterator = iterator;
-    }
-
-    //-----------------------------------------------------------------------
-    public boolean hasNext() {
-        return iterator.hasNext();
-    }
-
-    public E next() {
-        return iterator.next();
-    }
-
-    public void remove() {
-        throw new UnsupportedOperationException("remove() is not supported");
-    }
-
-}
diff --git a/src/main/java/org/apache/commons/lang3/compare/package.html b/src/main/java/org/apache/commons/lang3/compare/package.html
deleted file mode 100644
index 9342f28..0000000
--- a/src/main/java/org/apache/commons/lang3/compare/package.html
+++ /dev/null
@@ -1,27 +0,0 @@
-<!-- $Id$ -->
- <!--
-   Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-  -->
-<BODY>
-<p>
-This package contains implementations of the
-{@link java.util.Comparator Comparator} interface.
-<p>
-You may also consider using 
-{@link org.apache.commons.collections.ComparatorUtils ComparatorUtils},
-which is a single class that uses static methods to construct instances
-of the classes in this package.
-</BODY>
diff --git a/src/test/java/org/apache/commons/lang3/compare/ComparableComparatorTest.java b/src/test/java/org/apache/commons/lang3/compare/ComparableComparatorTest.java
deleted file mode 100644
index 68f1004..0000000
--- a/src/test/java/org/apache/commons/lang3/compare/ComparableComparatorTest.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.lang3.compare;
-
-import static org.junit.Assert.*;
-
-import java.io.File;
-import java.util.Comparator;
-
-import org.junit.Before;
-import org.junit.Test;
-
-/**
- * <p>
- * Tests the methods in the {@link org.apache.commons.lang3.compare.ComparableComparator} class.
- * </p>
- * 
- * @version $Id: RangeTest.java 1147537 2011-07-17 06:10:37Z mbenson $
- */
-public class ComparableComparatorTest {
-
-    @Before
-    public void setUp() {
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testUse() {
-        Comparator cc = new ComparableComparator();
-
-        // ensure same as Comparable
-        assertEquals( "Not same as Integer.compareTo", new Integer(5).compareTo(2), cc.compare(5, 2) );
-        assertEquals( "Not same as String.compareTo", "aardvark".compareTo("green"), cc.compare("aardvark", "green") );
-        assertEquals( "Not same as File.compareTo", new File("dir/file").compareTo(new File("dir/file2")), 
-                                                    cc.compare(new File("dir/file"), new File("dir/file2")) );
-    }
-
-    public void testEquals() {
-        assertEquals( "Same instance wasn't equal", ComparableComparator.INSTANCE, ComparableComparator.INSTANCE);
-        assertEquals( "Different instance wasn't equal", ComparableComparator.INSTANCE, new ComparableComparator());
-        assertFalse( "Null was equal", ComparableComparator.INSTANCE.equals(null) );
-    }
-
-}
diff --git a/src/test/java/org/apache/commons/lang3/compare/ComparatorChainTest.java b/src/test/java/org/apache/commons/lang3/compare/ComparatorChainTest.java
deleted file mode 100644
index 34694c5..0000000
--- a/src/test/java/org/apache/commons/lang3/compare/ComparatorChainTest.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.lang3.compare;
-
-import static org.junit.Assert.*;
-
-import java.util.Comparator;
-import java.util.Iterator;
-
-import org.junit.Before;
-import org.junit.Test;
-
-/**
- * <p>
- * Tests the methods in the {@link org.apache.commons.lang3.compare.ComparatorChain} class.
- * </p>
- * 
- * @version $Id: RangeTest.java 1147537 2011-07-17 06:10:37Z mbenson $
- */
-public class ComparatorChainTest {
-
-    @Test
-    public void testUse() {
-        // Sorts ABC-123 by numbers and then letters
-        ComparatorChain cc = new ComparatorChain(
-            new ComparableComparator<String>() {
-                public int compare(String o1, String o2) {
-                    return super.compare(o1.substring(4), o2.substring(4));
-                }
-            },
-            ComparableComparator.INSTANCE
-        );
-
-        assertTrue("Comparison failed", cc.compare( "ABC-123", "ABC-124" ) < 0 );
-        assertTrue("Comparison failed", cc.compare( "ZZZ-123", "AAA-124" ) < 0 );
-        assertTrue("Comparison failed", cc.compare( "ABC-123", "ABD-123" ) < 0 );
-        assertTrue("Comparison failed", cc.compare( "ABC-123", "ABC-123" ) == 0 );
-    }
-
-    @Test
-    public void testIterate() {
-        Comparator c1 = ComparableComparator.INSTANCE;
-        Comparator c2 = new ComparableComparator();
-        Comparator c3 = new NullComparator();
-        Comparator c4 = new ReverseComparator();
-        Iterable cc = new ComparatorChain(c1, c2, c3, c4);
-
-        Iterator itr = cc.iterator();
-        assertEquals( "Iteration failed", c1, itr.next() );
-        assertEquals( "Iteration failed", c2, itr.next() );
-        assertEquals( "Iteration failed", c3, itr.next() );
-        assertEquals( "Iteration failed", c4, itr.next() );
-        assertFalse( "Iteration failed", itr.hasNext() );
-    }
-
-}
diff --git a/src/test/java/org/apache/commons/lang3/compare/FixedOrderComparatorTest.java b/src/test/java/org/apache/commons/lang3/compare/FixedOrderComparatorTest.java
deleted file mode 100644
index c2b74db..0000000
--- a/src/test/java/org/apache/commons/lang3/compare/FixedOrderComparatorTest.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.lang3.compare;
-
-import static org.junit.Assert.*;
-
-import java.util.Comparator;
-import java.util.Arrays;
-
-import org.junit.Before;
-import org.junit.Test;
-
-/**
- * <p>
- * Tests the methods in the {@link org.apache.commons.lang3.compare.FixedOrderComparator} class.
- * </p>
- * 
- * @version $Id: RangeTest.java 1147537 2011-07-17 06:10:37Z mbenson $
- */
-public class FixedOrderComparatorTest {
-
-    @Before
-    public void setUp() {
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testJavadocExample() {
-        String[] planets = {"Mercury", "Venus", "Earth", "Mars"};
-        String[] modified = {"Mercury", "Venus", "Earth", "Mars"};
-        Comparator distanceFromSun = new FixedOrderComparator(planets);
-        Arrays.sort(modified);                     // Sort to alphabetical order
-        Arrays.sort(modified, distanceFromSun);    // Back to original order
-        assertArrayEquals("Did not sort to fixed order", planets, modified);
-    }
-
-}
diff --git a/src/test/java/org/apache/commons/lang3/compare/NullComparatorTest.java b/src/test/java/org/apache/commons/lang3/compare/NullComparatorTest.java
deleted file mode 100644
index 393360c..0000000
--- a/src/test/java/org/apache/commons/lang3/compare/NullComparatorTest.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.lang3.compare;
-
-import static org.junit.Assert.*;
-
-import java.util.Comparator;
-
-import org.junit.Before;
-import org.junit.Test;
-
-/**
- * <p>
- * Tests the methods in the {@link org.apache.commons.lang3.compare.NullComparator} class.
- * </p>
- * 
- * @version $Id: RangeTest.java 1147537 2011-07-17 06:10:37Z mbenson $
- */
-public class NullComparatorTest {
-
-    @Before
-    public void setUp() {
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testNullHigh() {
-        Comparator c = new NullComparator(true);
-        assertEquals("Null was not treated as high", -1, c.compare(new Object(), null) );
-        assertEquals("Null was not treated as high", 1, c.compare(null, new Object()) );
-    }
-
-    @Test
-    public void testNullLow() {
-        Comparator c = new NullComparator(false);
-        assertEquals("Null was not treated as low", 1, c.compare(new Object(), null) );
-        assertEquals("Null was not treated as low", -1, c.compare(null, new Object()) );
-    }
-
-}
diff --git a/src/test/java/org/apache/commons/lang3/compare/ReverseComparatorTest.java b/src/test/java/org/apache/commons/lang3/compare/ReverseComparatorTest.java
deleted file mode 100644
index b946b92..0000000
--- a/src/test/java/org/apache/commons/lang3/compare/ReverseComparatorTest.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.lang3.compare;
-
-import static org.junit.Assert.*;
-
-import java.util.Comparator;
-
-import org.junit.Before;
-import org.junit.Test;
-
-/**
- * <p>
- * Tests the methods in the {@link org.apache.commons.lang3.compare.ReverseComparator} class.
- * </p>
- * 
- * @version $Id: RangeTest.java 1147537 2011-07-17 06:10:37Z mbenson $
- */
-public class ReverseComparatorTest {
-
-    @Before
-    public void setUp() {
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testUse() {
-        ReverseComparator rc = new ReverseComparator();
-
-        // back to front tests
-        assertTrue("Comparison wasn't reversed", rc.compare( 2, 1 ) < 0 );
-        assertTrue("Comparison wasn't reversed", rc.compare( 1, 2 ) > 0 );
-        assertTrue("Comparison wasn't reversed", rc.compare( "baa", "aardvark" ) < 0 );
-        assertTrue("Comparison wasn't reversed", rc.compare( "aardvark", "baa" ) > 0 );
-    }
-
-    @Test
-    public void testTwoCallsCancel() {
-        ReverseComparator rc = new ReverseComparator(new ReverseComparator());
-
-        // back to front tests
-        assertTrue("Reversal wasn't cancelled out", rc.compare( 1, 2 ) < 0 );
-        assertTrue("Reversal wasn't cancelled out", rc.compare( 2, 1 ) > 0 );
-        assertTrue("Reversal wasn't cancelled out", rc.compare( "aardvark", "baa" ) < 0 );
-        assertTrue("Reversal wasn't cancelled out", rc.compare( "baa", "aardvark" ) > 0 );
-    }
-
-    @Test
-    public void testEquality() {
-        ReverseComparator rc1 = new ReverseComparator();
-        ReverseComparator rc2 = new ReverseComparator(rc1);
-        ReverseComparator rc3 = new ReverseComparator(rc1);
-
-        // test same instance
-        assertTrue("Same instance wasn't equal", rc1.equals(rc1));
-        assertEquals("Equal instance has different hash code", rc1.hashCode(), rc1.hashCode());
-
-        // test null not equal
-        assertFalse("Null was equal", rc1.equals(null));
-
-        // test diff subcomparator not equal
-        assertFalse("Was equal despite different nested comparators", rc1.equals(rc2));
-
-        // test same subcomparator equal
-        assertTrue("Wasn't equal despite same nested comparator", rc2.equals(rc3));
-        assertEquals("Same subcomparator had different hash code", rc2.hashCode(), rc3.hashCode());
-
-        // test different type not equal
-        assertFalse("Was equal despite not being same class", rc1.equals(this));
-    }
-
-}