code: def extract(self, high_bit, low_bit):
          
          # TODO: This method can be optimized
  
          ret = set()
          bits = high_bit - low_bit + 1
  
          for si in self._si_set:
              ret.add(si.extract(high_bit, low_bit))
  
          if len(ret) > 1:
              return DiscreteStridedIntervalSet(bits=bits, si_set=ret)
  
          else:
              return list(ret)[0]
docs: Operation extract
  
          :param high_bit:    The highest bit to begin extraction.
          :param low_bit:     The lowest bit to end extraction.
          :return:            Extracted bits.