shell/console/src/main/java/org/apache/karaf/shell/console/completer/Parser.java [144:186]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                current++;
                List<List<String>> pipeline = pipeline();
                program.add(pipeline);
            }
        }
        if (!eof()) {
            throw new RuntimeException("Program has trailing text: " + context(current));
        }

        List<List<List<String>>> p = program;
        program = null;
        return p;
    }

    CharSequence context(int around) {
        return text.subSequence(Math.max(0, current - 20), Math.min(text.length(),
            current + 4));
    }

    public List<List<String>> pipeline() {
        statements = new ArrayList<>();
        statements.add(statement());
        while (peek() == '|') {
            current++;
            ws();
            if (!eof()) {
                statements.add(statement());
            }
            else {
                statements.add(new ArrayList<>());
                break;
            }
        }
        List<List<String>> s = statements;
        statements = null;
        return s;
    }

    public List<String> statement() {
        statement = new ArrayList<>();
        statement.add(value());
        while (!eof()) {
            ws();
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



shell/core/src/main/java/org/apache/karaf/shell/support/parsing/GogoParser.java [147:189]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                current++;
                List<List<String>> pipeline = pipeline();
                program.add(pipeline);
            }
        }
        if (!eof()) {
            throw new RuntimeException("Program has trailing text: " + context(current));
        }

        List<List<List<String>>> p = program;
        program = null;
        return p;
    }

    CharSequence context(int around) {
        return text.subSequence(Math.max(0, current - 20), Math.min(text.length(),
            current + 4));
    }

    public List<List<String>> pipeline() {
        statements = new ArrayList<>();
        statements.add(statement());
        while (peek() == '|') {
            current++;
            ws();
            if (!eof()) {
                statements.add(statement());
            }
            else {
                statements.add(new ArrayList<>());
                break;
            }
        }
        List<List<String>> s = statements;
        statements = null;
        return s;
    }

    public List<String> statement() {
        statement = new ArrayList<>();
        statement.add(value());
        while (!eof()) {
            ws();
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



