docs: public String getSnippet(LineColumn start, LineColumn end) {
          // preconditions
          if (start == null || end == null) { return null; } // no text to return
          if (start.equals(end)) { return null; } // no text to return
          if (lines.size() == 1 && current.length() == 0) { return null; } // buffer hasn't been filled yet
  
          // working variables
          int startLine = start.getLine();
          int startColumn = start.getColumn();
          int endLine = end.getLine();
          int endColumn = end.getColumn();
  
          // reset any out of bounds requests
          if (startLine < 1) { startLine = 1;}
          if (endLine < 1) { endLine = 1;}
          if (startColumn < 1) { startColumn = 1;}
          if (endColumn < 1) { endColumn = 1;}
          if (startLine > lines.size()) { startLine = lines.size(); }
          if (endLine > lines.size()) { endLine = lines.size(); }
  
          // obtain the snippet from the buffer within specified bounds
          StringBuilder snippet = new StringBuilder();
          for (int i = startLine - 1; i < endLine;i++) {
              String line = ((StringBuilder)lines.get(i)).toString();
              if (startLine == endLine) {
                  // reset any out of bounds requests (again)
                  if (startColumn > line.length()) { startColumn = line.length();}
                  if (startColumn < 1) { startColumn = 1;}
                  if (endColumn > line.length()) { endColumn = line.length() + 1;}
                  if (endColumn < 1) { endColumn = 1;}
                  if (endColumn < startColumn) { endColumn = startColumn;}
  
                  line = line.substring(startColumn - 1, endColumn - 1);
              } else {
                  if (i == startLine - 1) {
                      if (startColumn - 1 < line.length()) {
                          line = line.substring(startColumn - 1);
                      }
                  }
                  if (i == endLine - 1) {
                      if (endColumn - 1 < line.length()) {
                          line = line.substring(0,endColumn - 1);
                      }
                  }
              }
              snippet.append(line);
          }
          return snippet.toString();
      }