### Question:
UVariableDecl extends USimpleStatement implements VariableTree { public static UVariableDecl create( CharSequence identifier, UExpression type, @Nullable UExpression initializer) { return new AutoValue_UVariableDecl(StringName.of(identifier), type, initializer); }  static UVariableDecl create(
      CharSequence identifier, UExpression type, @Nullable UExpression initializer); static UVariableDecl create(CharSequence identifier, UExpression type); @Override abstract StringName getName(); @Override abstract UExpression getType(); @Override @Nullable abstract UExpression getInitializer(); @Override Choice<Unifier> visitVariable(final VariableTree decl, Unifier unifier); @Override JCVariableDecl inline(Inliner inliner); JCVariableDecl inlineImplicitType(Inliner inliner); @Override Kind getKind(); @Override R accept(TreeVisitor<R, D> visitor, D data); @Override ModifiersTree getModifiers(); @Override ExpressionTree getNameExpression();  }### Answer:
@Test public void equality() { new EqualsTester() .addEqualityGroup(UVariableDecl.create("foo", UClassIdent.create("java.lang.String"), null)) .addEqualityGroup( UVariableDecl.create( "foo", UClassIdent.create("java.lang.String"), ULiteral.stringLit("bar"))) .addEqualityGroup( UVariableDecl.create("foo", UClassIdent.create("java.lang.Integer"), null)) .addEqualityGroup(UVariableDecl.create("baz", UClassIdent.create("java.lang.String"), null)) .testEquals(); }
@Test public void serialization() { SerializableTester.reserializeAndAssert( UVariableDecl.create( "foo", UClassIdent.create("java.lang.String"), ULiteral.stringLit("bar"))); }