### Question:
TupleType implements Type { @Override public boolean equals(Object obj) { if (obj instanceof TupleType) { return Arrays.equals(flattened, ((TupleType) obj).flattened); } return false; } TupleType(Type... childs); @Override boolean equals(Object obj); @Override String getRepresentation(); @Override StackType getStackType(); @Override Object getDefaultValue(); @Override char getCode();  }### Answer:
@Test void testEquals() { assertEquals(TUPLE, new TupleType(TYPES)); assertNotEquals(TUPLE, new Object()); assertNotEquals(null, TUPLE); }