private static @NotNull DfaValue tryReduceOnCast(@NotNull DfaBinOpValue value,
                                                   @NotNull DfaMemoryState state,
                                                   @NotNull PsiPrimitiveType type) {
    if (!TypeConversionUtil.isIntegralNumberType(type)) return value;
    LongRangeBinOp operation = value.getOperation();
    if ((operation == LongRangeBinOp.PLUS || operation == LongRangeBinOp.MINUS) &&
        JvmPsiRangeSetUtil.castTo(DfLongType.extractRange(state.getDfType(value.getRight())), type).equals(LongRangeSet.point(0))) {
      return value.getLeft();
    }
    if (operation == LongRangeBinOp.PLUS &&
        JvmPsiRangeSetUtil.castTo(DfLongType.extractRange(state.getDfType(value.getLeft())), type).equals(LongRangeSet.point(0))) {
      return value.getRight();
    }
    return value;
  }
private static @NotNull DfaValue tryReduceOnCast(@NotNull DfaBinOpValue value,
                                                   @NotNull DfaMemoryState state,
                                                   @NotNull PsiPrimitiveType type)