code: @NotNull
      public static <A, B> BaseListCommand<Iterable<A>, B> concat(@NotNull Iterable<? extends Command<A, B>> commands) {
          return new CompoundCommand<>(commands);
      }
docs: Concatenates commands to one that will run the list sequentially storing each result in
  a list. The argument array is mapped to the command list by position (the first argument
  goes to the first command, the second argument to the second command ...).
  
  <p>Thus, when executing the command, the argument must have exactly as many elements as
  there are commands. If you pass in less, an ArrayIndexOutOfBoundsException is thrown.
  If you pass in more, then as of now the execution works; the additional items are not seen
  because the command iteration stops before getting there. However, maybe a future version
  will detect this mismatch and throw. By definition the sizes must match.</p>