private List<RouteParameter> params(final ClassLoader loader, final ClassNode owner,
final String pattern, final MethodNode lambda) {
List<RouteParameter> result = new ArrayList<>();
new Insns(lambda)
.on(param(loader), it -> {
String name = parameterName(it.node)
.orElse("arg" + result.size());
AbstractInsnNode next = it.node.getNext();
Object value = paramValue(loader, owner, lambda, next);
if (value != next) {
next = next.getNext();
} else {
value = null;
}
java.lang.reflect.Type parameterType = parameterType(loader, next);
if (boolean.class.equals(parameterType) && Integer.class.isInstance(value)) {
value = (((Integer) value)).intValue() == 1;
}
result.add(new RouteParameter(name, kind(pattern, it.node.name, name),
simplifyType(parameterType), value));
}).forEach();
return result;
}