public static @NotNull Component linear(final @NotNull ComponentBuilderApplicable@NotNull... applicables) {
    final int length = applicables.length;
    if (length == 0) return Component.empty();
    if (length == 1) {
      final ComponentBuilderApplicable ap0 = applicables[0];
      if (ap0 instanceof ComponentLike) {
        return ((ComponentLike) ap0).asComponent();
      }
      throw nothingComponentLike();
    }
    final TextComponentImpl.BuilderImpl builder = new TextComponentImpl.BuilderImpl();
    Style.Builder style = null;
    for (int i = 0; i < length; i++) {
      final ComponentBuilderApplicable applicable = applicables[i];
      if (applicable instanceof StyleBuilderApplicable) {
        if (style == null) {
          style = Style.style();
        }
        style.apply((StyleBuilderApplicable) applicable);
      } else if (style != null && applicable instanceof ComponentLike) {
        builder.applicableApply(((ComponentLike) applicable).asComponent().style(style));
      } else {
        builder.applicableApply(applicable);
      }
    }
    final int size = builder.children.size();
    if (size == 0) {
      throw nothingComponentLike();
    } else if (size == 1 && !builder.hasStyle()) {
      return builder.children.get(0);
    } else {
      return builder.build();
    }
  }
Styles apply to all components after them until a conflicting style is discovered
  <pre>
    Component message = LinearComponents.linear(NamedTextColor.RED, translatable("welcome.message"), TextDecoration.BOLD, text(" SERVER));
  </pre>
In this example all the text is red, but only the last word is bold.
  <pre>
    Component message = LinearComponents.linear(NamedTextColor.GREEN, text("I am green. "), NamedTextColor.GRAY, text("I am gray."));
  </pre>
In this example, the first text is green and the second is gray.

@param applicables the things used to make the component
@return a component
@since 4.0.0
api/src/main/java/net/kyori/adventure/text/LinearComponents.java