code: public static int compare(String left, String right) {
  	if (Decision.isNumber(left)) {
  	    if (Decision.isNumber(right)) {
  		// long numbers
  		if (left.length() > 9 || right.length() > 9) {
  		    try {
  			return new BigDecimal(left).compareTo(new BigDecimal(right));
  		    }
  		    catch (Throwable t) {
  			ExceptionUtil.rethrowIfNecessary(t);
  		    }
  		}
  		return compare(Caster.toDoubleValue(left, Double.NaN), Caster.toDoubleValue(right, Double.NaN));
  	    }
  
  	    return compare(Caster.toDoubleValue(left, Double.NaN), right);
  	}
  	if (Decision.isBoolean(left)) return compare(Caster.toBooleanValue(left, false) ? 1D : 0D, right);
  	// NICE Date compare, perhaps datetime to double
  	return left.compareToIgnoreCase(right);
      }
docs: compares a String with a String
  
  @param left
  @param right
  @return difference as int