@Nullable
  private static ConversionResult isCSConvertible(@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;
  }
@Nullable
  private static ConversionResult isCSConvertible(@NotNull PsiType targetType,
                                                  @NotNull PsiType actualType,
                                                  @NotNull Position currentPosition)