docs: def itervalues(self, key_type=None):
          """ Returns an iterator over the dictionary's values.
              @param key_type if specified, iterator will be returning only values pointed by keys of this type.
                     Otherwise (if not specified) all values in this dictinary will be generated."""
          if(key_type is not None):
              intermediate_key = str(key_type)
              if intermediate_key in self.__dict__:
                  for direct_key in self.__dict__[intermediate_key].values():
                      yield self.items_dict[direct_key]
          else:
              for value in self.items_dict.values():
                  yield value