### Question:
UFreeIdent extends UIdent { public static UFreeIdent create(CharSequence identifier) { return new AutoValue_UFreeIdent(StringName.of(identifier)); }  static UFreeIdent create(CharSequence identifier); @Override abstract StringName getName(); Key key(); @Override JCExpression inline(Inliner inliner); @Override Choice<Unifier> visitIdentifier(IdentifierTree node, Unifier unifier);  }### Answer:
@Test public void inlinesExpression() { bind(new UFreeIdent.Key("foo"), parseExpression("\"abcdefg\".charAt(x + 1)")); assertInlines( parseExpression("\"abcdefg\".charAt(x + 1)").toString(), UFreeIdent.create("foo")); }
@Test public void binds() { JCExpression expr = parseExpression("\"abcdefg\".charAt(x + 1)"); UFreeIdent ident = UFreeIdent.create("foo"); assertThat(ident.unify(expr, unifier)).isNotNull(); assertThat(unifier.getBindings()).containsExactly(new UFreeIdent.Key("foo"), expr); }
@Test public void equality() { new EqualsTester() .addEqualityGroup(UFreeIdent.create("foo")) .addEqualityGroup(UFreeIdent.create("bar")) .testEquals(); }
@Test public void serialization() { SerializableTester.reserializeAndAssert(UFreeIdent.create("foo")); }