@Override
  protected Iterable<Trees.Expression> asApplyExpressionParamsElements(
      ApplyExpression value,
      List<Trees.Expression> collection) {
    boolean first = true;
    for (Trees.Expression element : collection) {
      if (!first) {
        context.out(", ");
      }
      first = false;
      asApplyExpressionParams(value, element);
    }
    return collection;
  }
This part is written with simples possible writer in mind. It was decided not to use dependencies
like. Its is possible that in future it will be replaced with self bootstraping, i.e. template
generator will be generated by the same framework which generates templates.
generator-processor/src/org/immutables/generator/processor/TemplateWriter.java