@Nonnull
	public Result<Resolution<JvmClassInfo, MethodMember>> resolve(int opcode, @Nonnull String owner, @Nonnull String name,
	                                                              @Nonnull String descriptor, boolean isInterface) {
		JvmClassInfo ownerClass = lookup.apply(owner);

		// Skip if we cannot resolve owner
		if (ownerClass == null) {
			unresolvedDeclarations.put(owner, new MethodRef(owner, name, descriptor));
			return Result.error(ResolutionError.NO_SUCH_METHOD);
		}

		Result<Resolution<JvmClassInfo, MethodMember>> resolutionResult;
		LinkedClass linkedOwnerClass = linked(ownerClass);
		switch (opcode) {
			case Opcodes.H_INVOKESPECIAL:
			case Opcodes.INVOKESPECIAL:
				// Invoke-Special is a direct call, so we do need to do resolving
				MemberInfo<MethodMember> method = linkedOwnerClass.getMethod(name, descriptor);
				if (method != null)
					resolutionResult = Result.ok(new Resolution<>(linkedOwnerClass, method, false));
				else
					resolutionResult = Result.error(ResolutionError.NO_SUCH_METHOD);
				break;
			case Opcodes.H_INVOKEVIRTUAL:
			case Opcodes.INVOKEVIRTUAL:
				resolutionResult = resolver.resolveVirtualMethod(linkedOwnerClass, name, descriptor);
				break;
			case Opcodes.H_INVOKEINTERFACE:
			case Opcodes.INVOKEINTERFACE:
				resolutionResult = resolver.resolveInterfaceMethod(linkedOwnerClass, name, descriptor);
				break;
			case Opcodes.H_INVOKESTATIC:
			case Opcodes.INVOKESTATIC:
				resolutionResult = resolver.resolveStaticMethod(linkedOwnerClass, name, descriptor);
				break;
			default:
				throw new IllegalArgumentException("Invalid method opcode: " + opcode);
		}
		return resolutionResult;
	}
@param opcode
		Method invoke opcode.
@param owner
		Declaring class of method.
@param name
		Name of method invoked.
@param descriptor
		Descriptor of method invoked.
@param isInterface
		Invoke interface flag.

@return Resolution result of the method within the owner.
The result {@link Result#isError()} will be {@code true} when the {@code owner} could not be found.
recaf-core/src/main/java/software/coley/recaf/services/callgraph/CallGraph.java