docs: private void checkInstance(Location location, ValueNumberFrame vnaFrame, UnconditionalValueDerefSet fact)
              throws DataflowAnalysisException {
          // See if this instruction has a null check.
          // If it does, the fall through predecessor will be
          // identify itself as the null check.
          if (!location.isFirstInstructionInBasicBlock()) {
              return;
          }
          if (invDataflow == null) {
              return;
          }
          BasicBlock fallThroughPredecessor = cfg.getPredecessorWithEdgeType(location.getBasicBlock(), EdgeTypes.FALL_THROUGH_EDGE);
          if (fallThroughPredecessor == null || !fallThroughPredecessor.isNullCheck()) {
              return;
          }
  
          // Get the null-checked value
          ValueNumber vn = vnaFrame.getInstance(location.getHandle().getInstruction(), methodGen.getConstantPool());
  
          // Ignore dereferences of this
          if (!methodGen.isStatic()) {
              ValueNumber v = vnaFrame.getValue(0);
              if (v.equals(vn)) {
                  return;
              }
          }
          if (vn.hasFlag(ValueNumber.CONSTANT_CLASS_OBJECT)) {
              return;
          }
  
          IsNullValueFrame startFact = null;
  
          startFact = invDataflow.getStartFact(fallThroughPredecessor);
  
          if (!startFact.isValid()) {
              return;
          }
  
          int slot = startFact.getInstanceSlot(location.getHandle().getInstruction(), methodGen.getConstantPool());
          if (!reportDereference(startFact, slot)) {
              return;
          }
          if (DEBUG) {
              System.out.println("FOUND GUARANTEED DEREFERENCE");
              System.out.println("Load: " + vnaFrame.getLoad(vn));
              System.out.println("Pred: " + fallThroughPredecessor);
              System.out.println("startFact: " + startFact);
              System.out.println("Location: " + location);
              System.out.println("Value number frame: " + vnaFrame);
              System.out.println("Dereferenced valueNumber: " + vn);
              System.out.println("invDataflow: " + startFact);
              System.out.println("IGNORE_DEREF_OF_NCP: " + IGNORE_DEREF_OF_NCP);
          }
          // Mark the value number as being dereferenced at this location
          fact.addDeref(vn, location);
      }