code: def set_limits(self, low=None, high=None):
          
          if high is not None:
              if self.high_mark is not None:
                  self.high_mark = min(self.high_mark, self.low_mark + high)
              else:
                  self.high_mark = self.low_mark + high
          if low is not None:
              if self.high_mark is not None:
                  self.low_mark = min(self.high_mark, self.low_mark + low)
              else:
                  self.low_mark = self.low_mark + low
docs: Adjusts the limits on the rows retrieved. We use low/high to set these,
          as it makes it more Pythonic to read and write. When the API query is
          created, they are converted to the appropriate offset and limit values.
  
          Any limits passed in here are applied relative to the existing
          constraints. So low is added to the current low value and both will be
          clamped to any existing high value.