ID { abstract ID sum(ID other);    }
@Test public void testSum_Leafs() { assertEquals(zero, zero.sum(zero)); assertEquals(one, zero.sum(one)); assertEquals(one, one.sum(zero)); }
@Test public void testSum_NonLeafs() { assertEquals(one, oneZero.sum(zeroOne)); assertEquals(one, zeroOne.sum(oneZero)); ID expected = IDs.with(one, oneZero); assertEquals(expected, oneZero.sum(IDs.with(zero, oneZero))); }