Object[] arr = new Object[userParams.size()];
int base = positionalParameterBase(userParams.keySet());
for (Object key : paramTypes.keySet()) {
int idx = (key instanceof Integer)
? ((Integer)key).intValue() - base
: paramTypes.indexOf(key);
if (idx >= arr.length || idx < 0)
throw new UserException(_loc.get("gap-query-param",
new Object[]{q.getContext().getQueryString(), key,
userParams.size(), userParams}));
Object value = userParams.get(key);