docs: private void forEveryEdge(EdgeVisitor visitor) {
          int tmpNode = getFromNode();
          int len = edgeIds.size();
          int prevEdgeId = EdgeIterator.NO_EDGE;
          for (int i = 0; i < len; i++) {
              EdgeIteratorState edgeBase = graph.getEdgeIteratorState(edgeIds.get(i), tmpNode);
              if (edgeBase == null)
                  throw new IllegalStateException("Edge " + edgeIds.get(i) + " was empty when requested with node " + tmpNode
                          + ", array index:" + i + ", edges:" + edgeIds.size());
  
              tmpNode = edgeBase.getBaseNode();
              // more efficient swap, currently not implemented for virtual edges: visitor.next(edgeBase.detach(true), i);
              edgeBase = graph.getEdgeIteratorState(edgeBase.getEdge(), tmpNode);
              visitor.next(edgeBase, i, prevEdgeId);
  
              prevEdgeId = edgeBase.getEdge();
          }
          visitor.finish();
      }