public TinkerVertexProperty copy(final TinkerVertex newOwner) {
        final TinkerVertexProperty vp = new TinkerVertexProperty(id, newOwner, key, value);

        if (null != properties) {
            final Map<String, Property> cloned = new ConcurrentHashMap<>(properties.size());
            properties.entrySet().stream().forEach(p -> cloned.put(p.getKey(), ((TinkerProperty) p.getValue()).copy(vp)));

            vp.properties = cloned;
        }

        return vp;
    }
Use this constructor to construct {@link VertexProperty} instances for {@link TinkerGraph} where the {@code id}
can be explicitly set and validated against the expected data type.
tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerVertexProperty.java