protected Map<ElementExpression, FlowElement> findMapping( FinderContext finderContext, PlannerContext plannerContext, ElementGraph elementGraph ) { State state = new State( finderContext, plannerContext, matchExpression.getSearchOrder(), matchExpression.getGraph(), elementGraph ); Map<Integer, Integer> vertexMap = new LinkedHashMap<>(); boolean match = match( state, vertexMap ); if( !match ) return Collections.emptyMap(); Map<ElementExpression, FlowElement> result = new LinkedHashMap<>(); for( Map.Entry<Integer, Integer> entry : vertexMap.entrySet() ) result.put( state.getMatcherNode( entry.getKey() ), state.getElementNode( entry.getValue() ) ); return result; }