### Question:
UEnhancedForLoop extends USimpleStatement implements EnhancedForLoopTree { public static UEnhancedForLoop create( UVariableDecl variable, UExpression elements, UStatement statement) { return new AutoValue_UEnhancedForLoop(variable, elements, (USimpleStatement) statement); }  static UEnhancedForLoop create(
      UVariableDecl variable, UExpression elements, UStatement statement); @Override abstract UVariableDecl getVariable(); @Override abstract UExpression getExpression(); @Override abstract USimpleStatement getStatement(); @Override R accept(TreeVisitor<R, D> visitor, D data); @Override Kind getKind(); @Override JCEnhancedForLoop inline(Inliner inliner); @Override Choice<Unifier> visitEnhancedForLoop(EnhancedForLoopTree loop, Unifier unifier);  }### Answer:
@Test public void equality() { new EqualsTester() .addEqualityGroup( UEnhancedForLoop.create( UVariableDecl.create("c", UPrimitiveTypeTree.CHAR, null), UMethodInvocation.create( UMemberSelect.create( ULiteral.stringLit("foo"), "toCharArray", UMethodType.create(UArrayType.create(UPrimitiveType.CHAR)))), USkip.INSTANCE)) .addEqualityGroup( UEnhancedForLoop.create( UVariableDecl.create("c", UClassIdent.create("java.lang.Character"), null), UMethodInvocation.create( UMemberSelect.create( ULiteral.stringLit("foo"), "toCharArray", UMethodType.create(UArrayType.create(UPrimitiveType.CHAR)))), USkip.INSTANCE)) .testEquals(); }
@Test public void serialization() { SerializableTester.reserializeAndAssert( UEnhancedForLoop.create( UVariableDecl.create("c", UPrimitiveTypeTree.CHAR, null), UMethodInvocation.create( UMemberSelect.create( ULiteral.stringLit("foo"), "toCharArray", UMethodType.create(UArrayType.create(UPrimitiveType.CHAR)))), USkip.INSTANCE)); }