public String parameters() {
      List<String> params = new ArrayList<>();
      for (int i = 0; i < type.getParameterTypes().size(); i++) {
        final TypeMirror paramType = type.getParameterTypes().get(i);
        final String name = element.getParameters().get(i).getSimpleName().toString();
        if (element.isVarArgs()) {
          // special case for varargs
          final TypeMirror component = MoreTypes.asArray(paramType).getComponentType();
          params.add(component + " ... " + name);
        } else {
          params.add(paramType + " " + name);
        }
      }
      return Joiner.on(", ").join(params);
    }
Used in templates to generate repository source code
value-processor/src/org/immutables/value/processor/meta/RepositoryModel.java