public static void validateVertexPropertyEquality(final VertexProperty originalVertexProperty, final VertexProperty otherVertexProperty) {
        assertEquals(originalVertexProperty, otherVertexProperty);
        assertEquals(otherVertexProperty, originalVertexProperty);

        if (originalVertexProperty.isPresent()) {
            assertEquals(originalVertexProperty.key(), otherVertexProperty.key());
            assertEquals(originalVertexProperty.value(), otherVertexProperty.value());
            assertEquals(originalVertexProperty.element(), otherVertexProperty.element());

            final boolean originalSupportsMetaProperties = originalVertexProperty.graph().features().vertex().supportsMetaProperties();
            final boolean otherSupportsMetaProperties = otherVertexProperty.graph().features().vertex().supportsMetaProperties();

            // if one supports and the other doesn't then neither should have meta properties.
            if (originalSupportsMetaProperties && !otherSupportsMetaProperties)
                assertEquals(0, originalVertexProperty.keys().size());
            else if (!originalSupportsMetaProperties && otherSupportsMetaProperties)
                assertEquals(0, otherVertexProperty.keys().size());
            else {
                // both support it, so assert in full
                assertEquals(originalVertexProperty.keys().size(), otherVertexProperty.keys().size());
                for (final String key : originalVertexProperty.keys()) {
                    validatePropertyEquality(originalVertexProperty.property(key), otherVertexProperty.property(key));
                }
            }
        }
    }
Used at the start of a test to make it one that should only be executed when the {@code assertNonDeterministic}
system property is set to {@code true}. Tests that call this method are ones that may sometimes fail in certain
environments or behave in other random ways. Usually such tests should be removed or re-worked, but there are
situations where that may not be possible as there is no other good way to test the feature. In these cases, the
tests won't fail a standard build. For this benefit, the downside is that the feature isn't tested as often as
it would otherwise, since the {@code assertNonDeterministic} option is not used often and definitely not in
automated builds like Travis.
gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/TestHelper.java