@@ -0,0 +1,1581 @@
+package com.hashnot.u.compare;%0A%0Aimport java.util.Comparator;%0A%0A/**%0A * @author Rafa%C5%82 Krupi%C5%84ski%0A */%0Apublic interface CompareOp%3CT%3E %7B%0A    /**%0A     * Allows parameters to be null%0A     */%0A    boolean eq(T o1, T o2);%0A%0A    /**%0A     * Allows parameters to be null%0A     */%0A    boolean ne(T o1, T o2);%0A%0A    boolean lt(T o1, T o2);%0A%0A    boolean lte(T o1, T o2);%0A%0A    boolean gt(T o1, T o2);%0A%0A    /**%0A     * @return o1 %3E= o2%0A     */%0A    boolean gte(T o1, T o2);%0A%0A    static %3CT%3E CompareOp%3CT%3E from(Comparator%3CT%3E from) %7B%0A        return new ComparatorOperator%3C%3E(from);%0A    %7D%0A%0A    class ComparatorOperator%3CT%3E implements CompareOp%3CT%3E %7B%0A        final private Comparator%3CT%3E cmp;%0A%0A        public ComparatorOperator(Comparator%3CT%3E cmp) %7B%0A            this.cmp = cmp;%0A        %7D%0A%0A        /**%0A         * Allows parameters to be null%0A         */%0A        public boolean eq(T o1, T o2) %7B%0A            return o1 == o2 %7C%7C o1 != null && o2 != null && cmp.compare(o1, o2) == 0;%0A        %7D%0A%0A        /**%0A         * Allows parameters to be null%0A         */%0A        public boolean ne(T o1, T o2) %7B%0A            return o1 != o2 %7C%7C o1 == null %7C%7C cmp.compare(o1, o2) != 0;%0A        %7D%0A%0A        public boolean lt(T o1, T o2) %7B%0A            return cmp.compare(o1, o2) %3C 0;%0A        %7D%0A%0A        public boolean lte(T o1, T o2) %7B%0A            return cmp.compare(o1, o2) %3C= 0;%0A        %7D%0A%0A        public boolean gt(T o1, T o2) %7B%0A            return cmp.compare(o1, o2) %3E 0;%0A        %7D%0A%0A        /**%0A         * @return o1 %3E= o2%0A         */%0A        public boolean gte(T o1, T o2) %7B%0A            return cmp.compare(o1, o2) %3E= 0;%0A        %7D%0A    %7D%0A%7D%0A

Add comparsion operators as a wrapper for Comparator