### Question:
UPrimitiveType extends UType { public static UPrimitiveType create(TypeKind typeKind) { checkArgument( isDeFactoPrimitive(typeKind), "Non-primitive type %s passed to UPrimitiveType", typeKind); return new AutoValue_UPrimitiveType(typeKind); }  static UPrimitiveType create(TypeKind typeKind); abstract TypeKind getKind(); static boolean isDeFactoPrimitive(TypeKind kind); @Override Choice<Unifier> visitType(Type target, Unifier unifier); @Override Type inline(Inliner inliner); static final UPrimitiveType BYTE; static final UPrimitiveType SHORT; static final UPrimitiveType INT; static final UPrimitiveType LONG; static final UPrimitiveType FLOAT; static final UPrimitiveType DOUBLE; static final UPrimitiveType BOOLEAN; static final UPrimitiveType CHAR; static final UPrimitiveType NULL; static final UPrimitiveType VOID; }### Answer:
@Test public void equality() { new EqualsTester() .addEqualityGroup(UPrimitiveType.create(TypeKind.INT), UPrimitiveType.INT) .addEqualityGroup(UPrimitiveType.create(TypeKind.LONG), UPrimitiveType.LONG) .addEqualityGroup(UPrimitiveType.create(TypeKind.DOUBLE), UPrimitiveType.DOUBLE) .addEqualityGroup(UPrimitiveType.create(TypeKind.FLOAT), UPrimitiveType.FLOAT) .addEqualityGroup(UPrimitiveType.create(TypeKind.CHAR), UPrimitiveType.CHAR) .addEqualityGroup(UPrimitiveType.create(TypeKind.VOID), UPrimitiveType.VOID) .addEqualityGroup(UPrimitiveType.create(TypeKind.NULL), UPrimitiveType.NULL) .addEqualityGroup(UPrimitiveType.create(TypeKind.BOOLEAN), UPrimitiveType.BOOLEAN) .addEqualityGroup(UPrimitiveType.create(TypeKind.BYTE), UPrimitiveType.BYTE) .addEqualityGroup(UPrimitiveType.create(TypeKind.SHORT), UPrimitiveType.SHORT) .testEquals(); }