public static UForLoop create(
      Iterable<? extends UStatement> initializer,
      @Nullable UExpression condition,
      Iterable<? extends UExpressionStatement> update,
      UStatement statement) {
    return new AutoValue_UForLoop(
        ImmutableList.copyOf(initializer),
        condition,
        ImmutableList.copyOf(update),
        (USimpleStatement) statement);
  }
@Test
  public void equality() {
    new EqualsTester()
        .addEqualityGroup(
            UForLoop.create(
                ImmutableList.of(
                    UVariableDecl.create("i", UPrimitiveTypeTree.INT, UFreeIdent.create("from"))),
                UBinary.create(Kind.LESS_THAN, ULocalVarIdent.create("i"), UFreeIdent.create("to")),
                ImmutableList.of(
                    UExpressionStatement.create(
                        UUnary.create(Kind.POSTFIX_INCREMENT, ULocalVarIdent.create("i")))),
                UBlock.create()))
        .addEqualityGroup(
            UForLoop.create(
                ImmutableList.of(
                    UVariableDecl.create("i", UPrimitiveTypeTree.INT, UFreeIdent.create("from"))),
                UBinary.create(Kind.LESS_THAN, ULocalVarIdent.create("i"), UFreeIdent.create("to")),
                ImmutableList.<UExpressionStatement>of(),
                UBlock.create(
                    UExpressionStatement.create(
                        UUnary.create(Kind.POSTFIX_INCREMENT, ULocalVarIdent.create("i"))))))
        .testEquals();
  }