@Override
  public A visit(Call call) {
    writer.println();
    writer.print(String.join("", Collections.nCopies(depth * 2, " ")));
    writer.print("call op=" + call.operator().name());
    for (Expression expr: call.arguments()) {
      depth++;
      expr.accept(this);
      depth--;
    }
    return target();
  }
Used to output expression tree as string. Useful for debugging expressions.
criteria/common/src/org/immutables/criteria/expression/DebugExpressionVisitor.java