static ImmutableSet<Parameter> forParameterList(
      List<? extends VariableElement> variables,
      List<? extends TypeMirror> variableTypes,
      Types types,
      InjectApi injectApi) {
    checkArgument(variables.size() == variableTypes.size());
    ImmutableSet.Builder<Parameter> builder = ImmutableSet.builder();
    Set<String> names = Sets.newHashSetWithExpectedSize(variables.size());
    for (int i = 0; i < variables.size(); i++) {
      Parameter parameter =
          forVariableElement(variables.get(i), variableTypes.get(i), types, injectApi);
      checkArgument(names.add(parameter.name()), "Duplicate parameter name: %s", parameter.name());
      builder.add(parameter);
    }
    ImmutableSet<Parameter> parameters = builder.build();
    checkArgument(variables.size() == parameters.size());
    return parameters;
  }
Annotations on the parameter (not its type).
factory/src/main/java/com/google/auto/factory/processor/Parameter.java