private boolean analyzeLine(SourceLine sourceLine, List<SourceLine> lines) {

        for (String expression : properties.expressions) {
            Matcher m = Pattern.compile(expression).matcher(sourceLine.getContent());
            if (m.matches()) {
                sourceLine.matchesAt(m.start(), m.end());
            }
        }

        boolean shouldAdd = false;
        if (sourceLine.hasMatches() || workingCommand != null) {
            if (workingCommand == null && !isComment(sourceLine)) {
                workingCommand = identifyCommand(sourceLine, lines);
            }
            shouldAdd = true;
        }

        if (workingCommand != null && commandWasClosedAt(sourceLine)) {
            workingCommand = null;
        }

        return shouldAdd;
    }