@Override
  public @NotNull Set<Entry<K, V>> entrySet() {
    Set<K> keys = keySet();
    Set<Entry<K, V>> entries = new HashSet<>();

    for (K key : keys) {
      V value = get(key);
      if (value != null) {
        entries.add(new Entry<K, V>() {
          @Override
          public K getKey() {
            return key;
          }

          @Override
          public V getValue() {
            return value;
          }

          @Override
          public V setValue(@NotNull V value) {
            throw new UnsupportedOperationException("setValue is not implemented");
          }

          @Override
          public String toString() {
            return "(" + getKey() + " : " + getValue() + ")";
          }
        });
      }
    }

    return entries;
  }
@Override
  public @NotNull Set<Entry<K, V>> entrySet()