@Override
    public @NotNull <T> ResolveState put(@NotNull Key<T> key, T value) {
      if (myKey.equals(key)) {
        return new OneElementResolveState(key, value);
      }

      return new TwoElementResolveState(myKey, myValue, key, value);
    }
@Override
    public @NotNull <T> ResolveState put(@NotNull Key<T> key, T value)