code: def __refresh(self):
          
          raw_values = self.__get_values()
          if not raw_values:
              raise RefreshException('Point has no values')
  
          # individual templates
          templates = []
          # lookup tables by type and unit of value
          by_type = {}
          by_unit = {}
  
          for raw_value in raw_values:
              label = raw_value['label']
              if not valid_identifier(label) or label.startswith('__'):
                  raise RefreshException('Value "%s" unsuitable for object wrapper' % label)
              value = Value(label, raw_value['type'], raw_value['unit'], raw_value['comment'])
              templates.append(value)
              try:
                  by_type[value.type_].add(label)
              except KeyError:
                  by_type[value.type_] = {label}
              if value.unit:
                  try:
                      by_unit[value.unit].add(label)
                  except KeyError:
                      by_unit[value.unit] = {label}
  
          self.__value_templates = templates
          self.__filter = _ValueFilter(by_type, by_unit)
docs: Update local knowledge of values (to be used to create new skeletal instances). MUST be called within
          lock.