class Stamp implements Serializable {

    public Stamp join(Stamp other) {
        ID idSum = id.sum(other.id);
        Event eventJoin = event.join(other.event);
        return new Stamp(idSum, eventJoin);
    }

}

class StampTest {

    private Stamp seedStamp;
    private Stamp forkedStamp1;
    private Stamp forkedStamp2;
    private Stamp joinedStamp;
    private List<Stamp> stamps;

    @Test
    public void testJoin() {

        Stamp expected = new Stamp(IDs.one(),
                Events.with(1, Events.zero(), Events.with(1)));

        assertEquals(expected, forkedStamp1.join(forkedStamp2));
        assertEquals(expected, forkedStamp2.join(forkedStamp1));
        assertNormalizedStamp(forkedStamp1.join(forkedStamp2));
    }

}