@Override
    public <T> T getUserData(@NotNull Key<T> key) {
      //noinspection unchecked
      return (T)getOrCreateMap().get(key);
    }
@Override
    public <T> T getUserData(@NotNull Key<T> key)