ConversionResult (@NotNull PsiType targetType, @NotNull PsiType actualType, @NotNull Position currentPosition) { if (currentPosition == Position.METHOD_PARAMETER) return null; if (TypesUtil.isClassType(actualType, JAVA_MATH_BIG_DECIMAL)) return isFloatOrDoubleType(targetType) ? OK : null; if (TypesUtil.isClassType(targetType, JAVA_MATH_BIG_DECIMAL)) return TypesUtil.isNumericType(actualType) || PsiTypes.nullType().equals(actualType) ? OK : ERROR; if (TypesUtil.isClassType(targetType, JAVA_MATH_BIG_INTEGER)) return TypesUtil.isIntegralNumberType(actualType) || PsiTypes.nullType().equals(actualType) ? OK : ERROR; if (TypesUtil.isClassType(actualType, JAVA_MATH_BIG_INTEGER)) return TypesUtil.isClassType(targetType, JAVA_MATH_BIG_INTEGER, JAVA_MATH_BIG_DECIMAL) ? OK : null; if (TypesUtil.isNumericType(targetType) && TypesUtil.isNumericType(actualType)) { return OK; } return null; }