@Test
  public void shouldWrapProperties() {
    final Vertex v = g.addVertex("any", "a");
    final Edge e = v.addEdge("to", v, "all", "a");

    assertTrue(v.property("any") instanceof StrategyWrappedProperty);
    assertTrue(v.properties().get("any") instanceof StrategyWrappedProperty);

    assertTrue(e.property("all") instanceof StrategyWrappedProperty);
    assertTrue(e.properties().get("all") instanceof StrategyWrappedProperty);

    assertTrue(g.V().property("any").next() instanceof StrategyWrappedProperty);
    assertTrue(g.E().property("any").next() instanceof StrategyWrappedProperty);
  }
 @Override
 public UnaryOperator<Supplier<Void>> getRemoveElementStrategy(
     final Strategy.Context<? extends StrategyWrappedElement> ctx) {
   if (ctx.getCurrent() instanceof StrategyWrappedVertex) {
     return (t) ->
         () -> {
           Vertex v = ((StrategyWrappedVertex) ctx.getCurrent()).getBaseVertex();
           v.bothE().forEach(e -> e.remove());
           getDeletionVertex(ctx.getBaseGraph()).addEdge(UmlgGraph.DELETION_VERTEX, v);
           v.properties().values().forEach(p -> p.remove());
           v.property("_deleted", true);
           return null;
         };
   } else {
     return UnaryOperator.identity();
   }
 }