@Override
    public void uiDataSnapshot(@NotNull DataProvider provider) {
      Object prev = source;
      source = provider;
      try {
        if (keys == null) {
          keys = DataKey.allKeys();
        }
        for (DataKey<?> key : keys) {
          Object data = key.getData(provider);
          if (data != null) {
            //noinspection unchecked
            set((DataKey<Object>)key, data);
          }
        }
      }
      finally {
        source = prev;
      }
    }
@Override
    public void uiDataSnapshot(@NotNull DataProvider provider)