@Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        PCollectionsImmutableNavigableSet<?> that = (PCollectionsImmutableNavigableSet<?>) o;
        return Objects.equals(underlying(), that.underlying());
    }
@Test
    public void testEquals() {
        final TreePSet<Object> mock = mock(TreePSet.class);
        assertEquals(new PCollectionsImmutableNavigableSet<>(mock), new PCollectionsImmutableNavigableSet<>(mock));
        final TreePSet<Object> someOtherMock = mock(TreePSet.class);
        assertNotEquals(new PCollectionsImmutableNavigableSet<>(mock), new PCollectionsImmutableNavigableSet<>(someOtherMock));
    }