@NotNull
  private static <T> T getObject(@NotNull Key<T> key, @NotNull PyElement element, @NotNull Supplier<T> create) {
    var value = element.getCopyableUserData(key);
    if (value == null) {
      value = create.get();
      element.putCopyableUserData(key, value);
    }
    return value;
  }
@NotNull
  private static <T> T getObject(@NotNull Key<T> key, @NotNull PyElement element, @NotNull Supplier<T> create)