in sources/java-incremental-compilation/jvm-inc-builder/src/com/intellij/tools/build/bazel/jvmIncBuilder/notNullVerification/NotNullVerifyingInstrumenter.java [495:509]
private boolean nextCanBeNullValue(int nextOpcode) {
// if instruction guaranteed produces non-null stack value
if (nextOpcode == LDC || nextOpcode == NEW || nextOpcode == ANEWARRAY || nextOpcode == NEWARRAY || nextOpcode == MULTIANEWARRAY) {
return false;
}
// for some instructions, it is safe not to change the previously calculated flag value
if (nextOpcode == DUP || nextOpcode == DUP_X1 || nextOpcode == DUP_X2 ||
nextOpcode == DUP2 || nextOpcode == DUP2_X1 || nextOpcode == DUP2_X2 ||
nextOpcode == JSR || nextOpcode == GOTO || nextOpcode == NOP ||
nextOpcode == RET || nextOpcode == CHECKCAST) {
return myCanBeNull;
}
// by default assume nullable
return true;
}