private List<Line> parseOtherComponents(SourceLocation location) {
        // Show context lines up from the shape until maxCode or until an empty line is encountered.
        int line = location.getLine();
        int lowestPossibleLine = Math.max(0, line - 1 - defaultCodeLines);
        int foundStart = line - 1;

        for (int i = line - 1; i > lowestPossibleLine; i--) {
            Line foundLine = lines.get(i);
            if (foundLine.getContent().length() > 0) {
                foundStart = i;
            } else {
                break;
            }
        }

        return lines.subList(foundStart, line);
    }
This class loads model files into memory, one at a time, and either shows leading lines up to a source location or
shows lines that are relevant to a source location use context from a {@link Model}.

<p>Sort sequences of {@link SourceLocation}s before calling {@link #loadContext(FromSourceLocation)} to avoid
needing to open and parse the same file more than once.

@see SourceContextLoader#createLineBasedLoader
@see SourceContextLoader#createModelAwareLoader
smithy-model/src/main/java/software/amazon/smithy/model/loader/sourcecontext/DefaultSourceLoader.java