private static List<Parameter> parseParameters(MethodSpec spec, List<? extends VariableElement> parameterTypes, boolean varArgs) { List<Parameter> parsedRequired = null; int offset = 0; for (; offset <= parameterTypes.size(); offset++) { List<VariableElement> parameters = new ArrayList<>(); parameters.addAll(parameterTypes.subList(offset, parameterTypes.size())); parsedRequired = parseParametersRequired(spec, parameters, varArgs); if (parsedRequired != null) { break; } } if (parsedRequired == null) { return null; } if (parsedRequired.isEmpty() && offset == 0) { offset = parameterTypes.size(); } List<? extends VariableElement> potentialOptionals = parameterTypes.subList(0, offset); List<Parameter> parsedOptionals = parseParametersOptional(spec, potentialOptionals); if (parsedOptionals == null) { return null; } List<Parameter> finalParameters = new ArrayList<>(); finalParameters.addAll(parsedOptionals); finalParameters.addAll(parsedRequired); return finalParameters; }
private static List<Parameter> parseParameters(MethodSpec spec, List<? extends VariableElement> parameterTypes, boolean varArgs) { List<Parameter> parsedRequired = null; int offset = 0; for (; offset <= parameterTypes.size(); offset++) { List<VariableElement> parameters = new ArrayList<>(); parameters.addAll(parameterTypes.subList(offset, parameterTypes.size())); parsedRequired = parseParametersRequired(spec, parameters, varArgs); if (parsedRequired != null) { break; } } if (parsedRequired == null) { return null; } if (parsedRequired.isEmpty() && offset == 0) { offset = parameterTypes.size(); } List<? extends VariableElement> potentialOptionals = parameterTypes.subList(0, offset); List<Parameter> parsedOptionals = parseParametersOptional(spec, potentialOptionals); if (parsedOptionals == null) { return null; } List<Parameter> finalParameters = new ArrayList<>(); finalParameters.addAll(parsedOptionals); finalParameters.addAll(parsedRequired); return finalParameters; }