code: public static final int compare(final Object obj0, final Object obj1)
              throws ELException {
          return compare(null, obj0, obj1);
      }
docs: Compare two objects, after coercing to the same type if appropriate.
  
  If the objects are identical, or they are equal according to
  {@link #equals(Object, Object)} then return 0.
  
  If either object is a BigDecimal, then coerce both to BigDecimal first.
  Similarly for Double(Float), BigInteger, and Long(Integer, Char, Short, Byte).
  
  Otherwise, check that the first object is an instance of Comparable, and compare
  against the second object. If that is null, return 1, otherwise
  return the result of comparing against the second object.
  
  Similarly, if the second object is Comparable, if the first is null, return -1,
  else return the result of comparing against the first object.
  
  A null object is considered as:
  <ul>
  <li>ZERO when compared with Numbers</li>
  <li>the empty string for String compares</li>
  <li>Otherwise null is considered to be lower than anything else.</li>
  </ul>
  
  @param obj0 first object
  @param obj1 second object
  @return -1, 0, or 1 if this object is less than, equal to, or greater than val.
  @throws ELException if neither object is Comparable
  @throws ClassCastException if the objects are not mutually comparable