@Override
  public <T> void putUserData(Key<T> key, T value) {
    Map<Key<?>, Object> map = myUserMap;
    if (map == null) {
      map = new HashMap<>();
      myUserMap = map;
    }
    map.put(key, value);
  }
@Override
  public <T> void putUserData(Key<T> key, T value)