code: public static boolean isCoercable(final Class<?> to, final Class<?> from) {
      final Class<?> boxedTo = boxClass(to);
      final Class<?> boxedFrom = boxClass(from);
      if (Number.class.isAssignableFrom(boxedTo)
          && Number.class.isAssignableFrom(boxedFrom)) {
        return SIZEOF.get(boxedFrom) <= SIZEOF.get(boxedTo);
      }
      return boxedTo.isAssignableFrom(boxedFrom);
    }
docs: Check to see if one class can be coerced into another.  A class is
  coercable to another if, once both are boxed, the target class is a
  superclass or implemented interface of the source class.
  <p>
  If both classes are numeric types, then this method returns true iff
  the conversion will not result in a loss of precision.
  <p>
  TODO: Float and double are currently coercible to int and long.  This is a bug.