docs: def get_surrounding_lines(self, past=1, future=1):
          """Return the current line and x,y previous and future lines.
          Returns a list of SourceLine's.
          """
          string = self.string
          pos = self.pos - self.col
          end = self.length
          row = self.row
  
          linesback = 0
          while linesback > -past:
              if pos <= 0:
                  break
              elif string[pos - 2] == '\n':
                  linesback -= 1
              pos -= 1
  
          output = []
          linestring = []
          lines = future + 1
          while linesback < lines:
              if pos >= end:
                  linestring.append(string[pos - 1])
                  output.append(
                      SourceLine(''.join(linestring[:-1]), row + linesback))
                  break
              elif string[pos] == '\n':
                  linestring.append(string[pos])
                  pos += 1
                  output.append(
                      SourceLine(''.join(linestring), row + linesback))
                  linesback += 1
                  linestring = []
              linestring.append(string[pos])
              pos += 1
  
          return output