docs: def values(self, key_type=None):
          """ Returns a copy of the dictionary's values.
              @param key_type if specified, only values pointed by keys of this type will be returned.
                   Otherwise list of all values contained in this dictionary will be returned."""
          if(key_type is not None):
              all_items = {} # in order to preserve keys() type (dict_values for python3) 
              keys_used = set()
              direct_key = str(key_type)
              if direct_key in self.__dict__:
                  for intermediate_key in self.__dict__[direct_key].values():
                      if not intermediate_key in keys_used:
                          all_items[intermediate_key] = self.items_dict[intermediate_key]
                          keys_used.add(intermediate_key)
              return all_items.values()
          else:
              return self.items_dict.values()