asterix-graphix/src/main/java/org/apache/asterix/graphix/lang/rewrite/lower/EnvironmentActionFactory.java [570:598]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            return new AbstractInlineAction(graphixRewritingContext, vertexAnalysisContext, iterationVar) {
                @Override
                public void apply(LoweringEnvironment loweringEnvironment) throws CompilationException {
                    // Join our vertex iteration variable to our edge variable.
                    loweringEnvironment.acceptTransformer(lowerList -> {
                        VariableExpr edgeJoinExpr = aliasLookupTable.getJoinAlias(edgeVar);
                        VariableExpr edgeJoinCopy = graphixDeepCopyVisitor.visit(edgeJoinExpr, null);
                        VariableExpr iterationVarCopy1 = graphixDeepCopyVisitor.visit(iterationVar, null);
                        VariableExpr iterationVarCopy2 = graphixDeepCopyVisitor.visit(iterationVar, null);
                        Expression vertexEdgeJoin = buildVertexEdgeJoin(
                                buildAccessorList(iterationVarCopy1, elementLookupTable.getVertexKey(vertexIdentifier)),
                                buildAccessorList(edgeJoinCopy, edgeKeyAccess.apply(edgeIdentifier)));
                        JoinClause joinClause = new JoinClause(JoinType.INNER, datasetCallExpression, iterationVarCopy2,
                                null, vertexEdgeJoin, null);
                        joinClause.setSourceLocation(vertexPatternExpr.getSourceLocation());
                        lowerList.addNonRepresentativeClause(joinClause);
                    });

                    // Inline our vertex body.
                    super.apply(loweringEnvironment);

                    // If we have a filter expression, add it as a WHERE clause here.
                    final Expression filterExpr = vertexPatternExpr.getFilterExpr();
                    if (filterExpr != null) {
                        loweringEnvironment.acceptAction(buildFilterExprAction(filterExpr, vertexVar, iterationVar));
                    }

                    // Bind our intermediate (join) variable and vertex variable.
                    loweringEnvironment.acceptTransformer(lowerList -> {
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



asterix-graphix/src/main/java/org/apache/asterix/graphix/lang/rewrite/lower/EnvironmentActionFactory.java [612:640]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            return new AbstractInlineAction(graphixRewritingContext, vertexAnalysisContext, iterationVar) {
                @Override
                public void apply(LoweringEnvironment loweringEnvironment) throws CompilationException {
                    // Join our vertex iteration variable to our edge variable.
                    loweringEnvironment.acceptTransformer(lowerList -> {
                        VariableExpr edgeJoinExpr = aliasLookupTable.getJoinAlias(edgeVar);
                        VariableExpr edgeJoinCopy = graphixDeepCopyVisitor.visit(edgeJoinExpr, null);
                        VariableExpr iterationVarCopy1 = graphixDeepCopyVisitor.visit(iterationVar, null);
                        VariableExpr iterationVarCopy2 = graphixDeepCopyVisitor.visit(iterationVar, null);
                        Expression vertexEdgeJoin = buildVertexEdgeJoin(
                                buildAccessorList(iterationVarCopy1, elementLookupTable.getVertexKey(vertexIdentifier)),
                                buildAccessorList(edgeJoinCopy, edgeKeyAccess.apply(edgeIdentifier)));
                        JoinClause joinClause = new JoinClause(JoinType.INNER, datasetCallExpression, iterationVarCopy2,
                                null, vertexEdgeJoin, null);
                        joinClause.setSourceLocation(vertexPatternExpr.getSourceLocation());
                        lowerList.addNonRepresentativeClause(joinClause);
                    });

                    // Inline our vertex body.
                    super.apply(loweringEnvironment);

                    // If we have a filter expression, add it as a WHERE clause here.
                    final Expression filterExpr = vertexPatternExpr.getFilterExpr();
                    if (filterExpr != null) {
                        loweringEnvironment.acceptAction(buildFilterExprAction(filterExpr, vertexVar, iterationVar));
                    }

                    // Build a record constructor from our context to bind to our vertex variable.
                    loweringEnvironment.acceptTransformer(lowerList -> {
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



