@Override
    public default <V> VertexProperty<V> property(final String key) {
        final Iterator<VertexProperty<V>> iterator = this.properties(key);
        if (iterator.hasNext()) {
            final VertexProperty<V> property = iterator.next();
            if (iterator.hasNext())
                throw Vertex.Exceptions.multiplePropertiesExistForProvidedKey(key);
            else
                return property;
        } else {
            return VertexProperty.<V>empty();
        }
    }
Get the {@link VertexProperty} for the provided key. If the property does not exist, return
{@link VertexProperty#empty}. If there are more than one vertex properties for the provided
key, then throw {@link Vertex.Exceptions#multiplePropertiesExistForProvidedKey}.

@param key the key of the vertex property to get
@param <V> the expected type of the vertex property value
@return the retrieved vertex property
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Vertex.java