### Question:
UDoWhileLoop extends USimpleStatement implements DoWhileLoopTree { public static UDoWhileLoop create(UStatement body, UExpression condition) { return new AutoValue_UDoWhileLoop((USimpleStatement) body, condition); }  static UDoWhileLoop create(UStatement body, UExpression condition); @Override abstract USimpleStatement getStatement(); @Override abstract UExpression getCondition(); @Override @Nullable Choice<Unifier> visitDoWhileLoop(DoWhileLoopTree loop, @Nullable Unifier unifier); @Override R accept(TreeVisitor<R, D> visitor, D data); @Override Kind getKind(); @Override JCDoWhileLoop inline(Inliner inliner);  }### Answer:
@Test public void equality() { new EqualsTester() .addEqualityGroup( UDoWhileLoop.create( UBlock.create( UExpressionStatement.create( UAssign.create( ULocalVarIdent.create("old"), UMethodInvocation.create( UMemberSelect.create( UFreeIdent.create("str"), "indexOf", UMethodType.create( UPrimitiveType.INT, UPrimitiveType.INT, UPrimitiveType.INT)), ULiteral.charLit(' '), UBinary.create( Kind.PLUS, ULocalVarIdent.create("old"), ULiteral.intLit(1)))))), UParens.create( UBinary.create( Kind.NOT_EQUAL_TO, ULocalVarIdent.create("old"), ULiteral.intLit(-1))))) .addEqualityGroup( UDoWhileLoop.create( UBlock.create( UExpressionStatement.create( UAssign.create( ULocalVarIdent.create("old"), UMethodInvocation.create( UMemberSelect.create( UFreeIdent.create("str"), "indexOf", UMethodType.create( UPrimitiveType.INT, UPrimitiveType.INT, UPrimitiveType.INT)), ULiteral.charLit(' '), UBinary.create( Kind.PLUS, ULocalVarIdent.create("old"), ULiteral.intLit(1)))))), UParens.create( UBinary.create( Kind.GREATER_THAN_EQUAL, ULocalVarIdent.create("old"), ULiteral.intLit(0))))) .testEquals(); }
@Test public void serialization() { SerializableTester.reserializeAndAssert( UDoWhileLoop.create( UBlock.create( UExpressionStatement.create( UAssign.create( ULocalVarIdent.create("old"), UMethodInvocation.create( UMemberSelect.create( UFreeIdent.create("str"), "indexOf", UMethodType.create( UPrimitiveType.INT, UPrimitiveType.INT, UPrimitiveType.INT)), ULiteral.charLit(' '), UBinary.create( Kind.PLUS, ULocalVarIdent.create("old"), ULiteral.intLit(1)))))), UParens.create( UBinary.create( Kind.NOT_EQUAL_TO, ULocalVarIdent.create("old"), ULiteral.intLit(-1))))); }