### Question:
UTypeParameter extends UTree<JCTypeParameter> implements TypeParameterTree { @VisibleForTesting static UTypeParameter create(CharSequence name, UExpression... bounds) { return create(name, ImmutableList.copyOf(bounds), ImmutableList.<UAnnotation>of()); }  @Override abstract StringName getName(); @Override abstract ImmutableList<UExpression> getBounds(); @Override abstract ImmutableList<UAnnotation> getAnnotations(); @Override Kind getKind(); @Override R accept(TreeVisitor<R, D> visitor, D data); @Override JCTypeParameter inline(Inliner inliner); @Override @Nullable Choice<Unifier> visitTypeParameter(TypeParameterTree node, @Nullable Unifier unifier);  }### Answer:
@Test public void equality() { new EqualsTester() .addEqualityGroup(UTypeParameter.create("T")) .addEqualityGroup(UTypeParameter.create("E")) .addEqualityGroup(UTypeParameter.create("T", UClassIdent.create("java.lang.CharSequence"))) .addEqualityGroup(UTypeParameter.create("T", UClassIdent.create("java.lang.Number"))) .testEquals(); }
@Test public void serialization() { SerializableTester.reserializeAndAssert( UTypeParameter.create("T", UClassIdent.create("java.lang.CharSequence"))); }