static @Nullable TextContent join(List<? extends @NotNull TextContent> components) {
    if (components.isEmpty()) return null;
    if (components.size() == 1) return components.get(0);

    return new TextContentImpl(commonDomain(components), ContainerUtil.flatMap(components, c -> ((TextContentImpl) c).tokens));
  }
static @Nullable TextContent join(List<? extends @NotNull TextContent> components)