static <C, U, V> @NonNull ParserDescriptor<C, Either<U, V>> firstOf(
            final @NonNull ParserDescriptor<C, U> primary,
            final @NonNull ParserDescriptor<C, V> fallback
    ) {
        return EitherParser.eitherParser(primary, fallback);
    }
Creates a new parser which attempts to use the {@code primary} parser and falls back on
the {@code fallback} parser if that fails.

@param <C>      command sender type
@param <U>      primary value type
@param <V>      fallback value type
@param primary  primary parser
@param fallback fallback parser which gets invoked if the primary parser fails to parse the input
@return the descriptor of the parser
cloud-core/src/main/java/org/incendo/cloud/parser/ArgumentParser.java