docs: public void putRolePlayerEdge(Role role, Thing toThing) {
          //Checking if the edge exists
          GraphTraversal<Vertex, Edge> traversal = vertex().tx().getTinkerTraversal().V().
                  hasId(this.elementId()).
                  outE(Schema.EdgeLabel.ROLE_PLAYER.getLabel()).
                  has(Schema.EdgeProperty.RELATION_TYPE_LABEL_ID.name(), this.type().labelId().getValue()).
                  has(Schema.EdgeProperty.ROLE_LABEL_ID.name(), role.labelId().getValue()).
                  as("edge").
                  inV().
                  hasId(ConceptVertex.from(toThing).elementId()).
                  select("edge");
  
          if (traversal.hasNext()) {
              return;
          }
  
          //Role player edge does not exist create a new one
          EdgeElement edge = this.addEdge(ConceptVertex.from(toThing), Schema.EdgeLabel.ROLE_PLAYER);
          edge.property(Schema.EdgeProperty.RELATION_TYPE_LABEL_ID, this.type().labelId().getValue());
          edge.property(Schema.EdgeProperty.ROLE_LABEL_ID, role.labelId().getValue());
          Casting casting = Casting.create(edge, owner, role, toThing);
          vertex().tx().cache().trackForValidation(casting);
      }