protected MatchEdgeTraverser createTraverser(OResult lastUpstreamRecord) { if (edge.edge.item instanceof OMultiMatchPathItem) { return new MatchMultiEdgeTraverser(lastUpstreamRecord, edge); } else if (edge.out) { return new MatchEdgeTraverser(lastUpstreamRecord, edge); } else { return new MatchReverseEdgeTraverser(lastUpstreamRecord, edge); } }