BEANUTILS-527: Remove Commons Collection4 dependency. (#9)

* BEANUTILS-527: Remove Commons Collection4 dependency.

* BEANUTILS-527: Rename NaturalOrderingComparator.
diff --git a/pom.xml b/pom.xml
index 4b581cd..af845d7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -330,11 +330,6 @@
       <version>1.2</version>
     </dependency>
     <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-collections4</artifactId>
-      <version>4.4</version>
-    </dependency>
-    <dependency>
       <groupId>commons-collections</groupId>
       <artifactId>commons-collections-testframework</artifactId>
       <version>3.2.1</version>
diff --git a/src/main/java/org/apache/commons/beanutils2/BeanComparator.java b/src/main/java/org/apache/commons/beanutils2/BeanComparator.java
index f5da10a..f9a6b0f 100644
--- a/src/main/java/org/apache/commons/beanutils2/BeanComparator.java
+++ b/src/main/java/org/apache/commons/beanutils2/BeanComparator.java
@@ -21,7 +21,6 @@
 import java.lang.reflect.InvocationTargetException;
 import java.util.Comparator;
 
-import org.apache.commons.collections4.comparators.ComparableComparator;
 
 /**
  * <p>
@@ -84,7 +83,7 @@
      * If the property passed in is null then the actual objects will be compared
      */
     public BeanComparator( final String property ) {
-        this( property, ComparableComparator.INSTANCE );
+        this( property, NaturalOrderingComparator.INSTANCE );
     }
 
     /**
@@ -108,7 +107,7 @@
         if (comparator != null) {
             this.comparator = comparator;
         } else {
-            this.comparator = ComparableComparator.INSTANCE;
+            this.comparator = NaturalOrderingComparator.INSTANCE;
         }
     }
 
@@ -217,9 +216,7 @@
      */
     @Override
     public int hashCode() {
-        int result;
-        result = comparator.hashCode();
-        return result;
+        return comparator.hashCode();
     }
 
     /**
@@ -238,4 +235,54 @@
         Comparator c = comparator;
         return c.compare(val1, val2);
     }
+    
+    /**
+     * 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 {@link java.util.SortedSet SortedSet} and
+     * {@link java.util.SortedMap SortedMap}.
+     * </p>
+     *
+     * @param <E> the type of objects compared by this comparator
+     * @see java.util.Collections#reverseOrder()
+     */
+    private static class NaturalOrderingComparator<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 NaturalOrderingComparator INSTANCE = new NaturalOrderingComparator();
+
+        /**
+         * Private constructor to prevent instantiation. Only use INSTANCE.
+         */
+        private NaturalOrderingComparator() {
+            super();
+        }
+
+        /**
+         * Compare the two {@link Comparable Comparable} arguments.
+         * This method is equivalent to:
+         * <pre>((Comparable)obj1).compareTo(obj2)</pre>
+         */
+        @Override
+        public int compare(final E obj1, final E obj2) {
+            return obj1.compareTo(obj2);
+        }
+
+        @Override
+        public int hashCode() {
+            return "NaturalOrderingComparator".hashCode();
+        }
+
+        @Override
+        public boolean equals(final Object object) {
+            return this == object ||
+                   null != object && object.getClass().equals(this.getClass());
+        }
+    }
 }
diff --git a/src/main/java/org/apache/commons/beanutils2/package-info.java b/src/main/java/org/apache/commons/beanutils2/package-info.java
index caf0002..38e5bb5 100644
--- a/src/main/java/org/apache/commons/beanutils2/package-info.java
+++ b/src/main/java/org/apache/commons/beanutils2/package-info.java
@@ -1017,8 +1017,7 @@
  * <h2>How Do I Set The BeanComparator Order To Be Ascending/Descending?</h2>
  * <p>
  * BeanComparator relies on an internal Comparator to perform the actual
- * comparisions. By default,
- * <code>org.apache.commons.collections4.comparators.ComparableComparator</code>
+ * comparisions. By default, a natural ordering comparator 
  * is used which imposes a natural order. If you want to change the order,
  * then a custom Comparator should be created and passed into the
  * appropriate constructor.