code: @Nullable
      private Comparable<?> getCallingObject() {
          String sig = getSigConstantOperand();
          if (Values.SIG_VOID.equals(SignatureUtils.getReturnSignature(sig))) {
              return null;
          }
  
          int numParameters = SignatureUtils.getNumParameters(sig);
  
          if (stack.getStackDepth() <= numParameters) {
              return null;
          }
  
          OpcodeStack.Item caller = stack.getStackItem(numParameters);
          UserObject uo = (UserObject) caller.getUserValue();
          if ((uo != null) && (uo.caller != null)) {
              return uo.caller;
          }
  
          int reg = caller.getRegisterNumber();
          if (reg >= 0) {
              return Integer.valueOf(reg);
          }
  
          /*
           * We ignore the possibility of two fields with the same name in different
           * classes
           */
          XField f = caller.getXField();
          if (f != null) {
              return f.getName();
          }
          return null;
      }
docs: returns either a register number of a field reference of the object that a method is being called on, or null, if it can't be determined.
  
  @return either an Integer for a register, or a String for the field name, or null