@Override
    protected VertexProperty readValue(final Buffer buffer, final GraphBinaryReader context) throws IOException {
        final DetachedVertexProperty.Builder builder = DetachedVertexProperty.build()
                .setId(context.read(buffer))
                .setLabel((String) context.readValue(buffer, List.class, false).get(0))
                .setValue(context.read(buffer));

        // discard the parent vertex - we only send "references"
        context.read(buffer);

        final List<Property> properties = context.read(buffer);
        if (properties != null && !properties.isEmpty()) {
            for (Property p : properties) builder.addProperty(p);
        }

        return builder.create();
    }
@author Stephen Mallette (http://stephen.genoprime.com)
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/binary/types/VertexPropertySerializer.java