@Nullable
  public static <T> T findData(@NotNull final PyType type, @NotNull final Key<T> key) {
    if (type instanceof UserDataHolder) {
      return ((UserDataHolder)type).getUserData(key);
    }
    if (type instanceof PyUnionType) {
      for (final PyType memberType : ((PyUnionType)type).getMembers()) {
        if (memberType == null) {
          continue;
        }
        final T result = findData(memberType, key);
        if (result != null) {
          return result;
        }
      }
    }
    return null;
  }
@Nullable
  public static <T> T findData(@NotNull final PyType type, @NotNull final Key<T> key)