docs: public static Set<XMethod> resolveMethodCallTargets(ReferenceType receiverType, InvokeInstruction invokeInstruction,
              ConstantPoolGen cpg, boolean receiverTypeIsExact) throws ClassNotFoundException {
  
          if (invokeInstruction.getOpcode() == Const.INVOKESTATIC) {
              throw new IllegalArgumentException();
          }
  
          String methodName = invokeInstruction.getName(cpg);
          String methodSig = invokeInstruction.getSignature(cpg);
  
          // Array method calls aren't virtual.
          // They should just resolve to Object methods.
          if (receiverType instanceof ArrayType) {
              try {
                  return Util.emptyOrNonnullSingleton(getXClass(objectDescriptor).findMethod(methodName, methodSig, false));
              } catch (CheckedAnalysisException e) {
                  return Collections.<XMethod> emptySet();
              }
          }
  
          if (receiverType instanceof ObjectType) {
              // Get the receiver class.
              String receiverClassName = ((ObjectType) receiverType).getClassName();
  
              return resolveVirtualMethodCallTargets(receiverClassName, methodName, methodSig, receiverTypeIsExact,
                      invokeInstruction instanceof INVOKESPECIAL);
          }
          assert receiverType instanceof NullType;
          return Collections.<XMethod> emptySet();
  
      }