static boolean isJavaBaseAssignable(Class lhsType,Class rhsType){
  if (lhsType == null)   return false;
  if (rhsType == null)   return !lhsType.isPrimitive();
  if (lhsType.isPrimitive() && rhsType.isPrimitive()) {
    if (lhsType == rhsType)     return true;
    if ((rhsType == Byte.TYPE) && (lhsType == Short.TYPE || lhsType == Integer.TYPE || lhsType == Long.TYPE || lhsType == Float.TYPE || lhsType == Double.TYPE))     return true;
    if ((rhsType == Short.TYPE) && (lhsType == Integer.TYPE || lhsType == Long.TYPE || lhsType == Float.TYPE || lhsType == Double.TYPE))     return true;
    if ((rhsType == Character.TYPE) && (lhsType == Integer.TYPE || lhsType == Long.TYPE || lhsType == Float.TYPE || lhsType == Double.TYPE))     return true;
    if ((rhsType == Integer.TYPE) && (lhsType == Long.TYPE || lhsType == Float.TYPE || lhsType == Double.TYPE))     return true;
    if ((rhsType == Long.TYPE) && (lhsType == Float.TYPE || lhsType == Double.TYPE))     return true;
    if ((rhsType == Float.TYPE) && (lhsType == Double.TYPE))     return true;
  }
 else   if (lhsType.isAssignableFrom(rhsType))   return true;
  return false;
}

static boolean isJavaBaseAssignable ( Class lhsType , Class rhsType ) { if ( lhsType == null ) return false ; if ( rhsType == null ) return ! lhsType . isPrimitive ( ) ; if ( lhsType . isPrimitive ( ) && rhsType . isPrimitive ( ) ) { if ( lhsType == rhsType ) return true ; if ( ( rhsType == Byte . TYPE ) && ( lhsType == Short . TYPE || lhsType == Integer . TYPE || lhsType == Long . TYPE || lhsType == Float . TYPE || lhsType == Double . TYPE ) ) return true ; if ( ( rhsType == Short . TYPE ) && ( lhsType == Integer . TYPE || lhsType == Long . TYPE || lhsType == Float . TYPE || lhsType == Double . TYPE ) ) return true ; if ( ( rhsType == Character . TYPE ) && ( lhsType == Integer . TYPE || lhsType == Long . TYPE || lhsType == Float . TYPE || lhsType == Double . TYPE ) ) return true ; if ( ( rhsType == Integer . TYPE ) && ( lhsType == Long . TYPE || lhsType == Float . TYPE || lhsType == Double . TYPE ) ) return true ; if ( ( rhsType == Long . TYPE ) && ( lhsType == Float . TYPE || lhsType == Double . TYPE ) ) return true ; if ( ( rhsType == Float . TYPE ) && ( lhsType == Double . TYPE ) ) return true ; } else if ( lhsType . isAssignableFrom ( rhsType ) ) return true ; return false ; }
is the assignment legal via original java ( up to version 1 . 4 ) assignment rules , not including auto - boxing / unboxing .
