public boolean equals(Object obj)
    {
        return this == obj; // this is correct because there are only two COSBoolean objects.
    }
@Test
    void testEquals()
    {
        COSBoolean test1 = COSBoolean.TRUE;
        COSBoolean test2 = COSBoolean.TRUE;
        COSBoolean test3 = COSBoolean.TRUE;
        // Reflexive (x == x)
        assertEquals(test1, test1);
        // Symmetric is preserved ( x==y then y===x)
        assertEquals(test2, test1);
        assertEquals(test1, test2);
        // Transitive (if x==y && y==z then x===z)
        assertEquals(test1, test2);
        assertEquals(test2, test3);
        assertEquals(test1, test3);

        assertNotEquals(COSBoolean.TRUE, COSBoolean.FALSE);
        // same 'value' but different type
        assertNotEquals(Boolean.TRUE, COSBoolean.TRUE);
        assertNotEquals(Boolean.FALSE, COSBoolean.FALSE);
        assertNotEquals(true, COSBoolean.TRUE);
        assertNotEquals(true, COSBoolean.FALSE);
    }