code: static void traverseToRole(
              GraphTraversal<?, Edge> traversal, @Nullable Variable role, Schema.EdgeProperty edgeProperty,
              Collection<Variable> vars) {
          if (role != null) {
              Variable edge = new Variable();
              traversal.as(edge.symbol());
              Fragments.outSubs(Fragments.traverseSchemaConceptFromEdge(traversal, edgeProperty));
              assignVar(traversal, role, vars).select(edge.symbol());
          }
      }
docs: Optionally traverse from a {@link Schema.EdgeLabel#ROLE_PLAYER} edge to the {@link Role} it mentions, plus any super-types.
  
  @param traversal the traversal, starting from the {@link Schema.EdgeLabel#ROLE_PLAYER}  edge
  @param role the variable to assign to the role. If not present, do nothing
  @param edgeProperty the edge property to look up the role label ID