code: def _values_tuple(self, i, valuemap_list, values_list, cimtype):
          
          values_str = values_list[i]
          valuemap_str = valuemap_list[i]
          m = re.match(r'^(.*)\.\.(.*)$', valuemap_str)
          if m is None:
              valuemap_int = self._to_int(valuemap_str)
              return (valuemap_int, valuemap_int, values_str)
  
          # match found
          lo = m.group(1)
          if lo == '':
              if i == 0:
                  lo = cimtype.minvalue
              else:
                  _, previous_hi, _ = self._values_tuple(
                      i - 1, valuemap_list, values_list, cimtype)
                  lo = previous_hi + 1
          else:
              lo = self._to_int(lo)
  
          hi = m.group(2)
          if hi == '':
              if i == len(valuemap_list) - 1:
                  hi = cimtype.maxvalue
              else:
                  next_lo, _, _ = self._values_tuple(
                      i + 1, valuemap_list, values_list, cimtype)
                  hi = next_lo - 1
          else:
              hi = self._to_int(hi)
          return (lo, hi, values_str)
docs: Return a tuple for the value range or unclaimed marker at position i,
          with these items:
  
          * lo - low value of the range
          * hi - high value of the range (can be equal to lo)
          * values - value of `Values` qualifier for this position
  
          Parameters:
  
            i (integer): position into valuemap_list and values_list
  
            valuemap_list (list of strings): `ValueMap` qualifier value
  
            values_list (list of strings): `Values` qualifier value
  
            cimtype (type): CIM type of the CIM element
  
          Raises:
  
              ValueError: Invalid integer representation in `ValueMap` qualifier
                defined on the CIM element.