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;
    }
private boolean nextCanBeNullValue(int nextOpcode)