@Override
	public Parameter<T> handleCall(Map<Object, QueryBuilder<?>> proxyQueryBuilders, Deque<MethodCall> methods) {

		if (!methods.isEmpty()) {
			MethodCall pollFirst = methods.pollFirst();
			return new SelectorParameter<>(new SimpleMethodCallSelector<T>(proxyQueryBuilders.get(pollFirst.getProxy()), pollFirst));
		}
        else if (value instanceof Query) {
            return new SubqueryValueParameters<>((Query) value);
        }
		else if (value instanceof Function) {
			return new SelectorParameter<>((Selector) value);
		}
		else {
			return new ValueParameter<>(paramName, value);
		}
	}