@Nonnull
	public String methodDescriptorWithVariables() throws ExpressionCompileException {
		StringBuilder sb = new StringBuilder("(");
		int parameterVarIndex = AccessFlag.isStatic(methodFlags) ? 0 : 1;
		int parameterCount = methodType.parameterTypes().size();
		Set<String> usedVariables = new HashSet<>();
		for (int i = 0; i < parameterCount; i++) {
			LocalVariable parameterVariable = getParameterVariable(parameterVarIndex, i);
			String parameterName = parameterVariable.getName();
			usedVariables.add(parameterName);
			if (!isSafeName(parameterName))
				continue;
			String descriptor = parameterVariable.getDescriptor();
			if (isMissingType(descriptor))
				continue;
			NameType varInfo = getInfo(parameterName, descriptor);
			parameterVarIndex += varInfo.size();
			sb.append(descriptor);
		}
		for (LocalVariable variable : methodVariables) {
			String name = variable.getName();
			if (!isSafeName(name) || name.equals("this"))
				continue;
			if (!usedVariables.add(name))
				continue;
			String descriptor = variable.getDescriptor();
			if (isMissingType(descriptor))
				continue;
			sb.append(descriptor);
		}
		sb.append(')').append(methodType.returnType().descriptor());
		return sb.toString();
	}
<b>Note</b>: The logic for appending parameters to the desc within this method must align with {@link #generate()}.

@return The method descriptor with additional parameters from the {@link #methodVariables} appended at the end.

@throws ExpressionCompileException
		When parameter variable information cannot be found.
recaf-core/src/main/java/software/coley/recaf/services/compile/stub/ExpressionHostingClassStubGenerator.java