code: def extract(self, high_bit, low_bit):
          
  
          if high_bit - low_bit + 1 == self.bits:
              return self.copy()
  
          if ('global' in self._regions and len(self._regions.keys()) > 1) or \
              len(self._regions.keys()) > 0:
              si_ret = StridedInterval.top(high_bit - low_bit + 1)
  
          else:
              if 'global' in self._regions:
                  si = self._regions['global']
                  si_ret = si.extract(high_bit, low_bit)
  
              else:
                  si_ret = StridedInterval.empty(high_bit - low_bit + 1)
  
          return si_ret
docs: Operation extract
  
          - A cheap hack is implemented: a copy of self is returned if (high_bit - low_bit + 1 == self.bits), which is a
              ValueSet instance. Otherwise a StridedInterval is returned.
  
          :param high_bit:
          :param low_bit:
          :return: A ValueSet or a StridedInterval