code: public static <A, B> BaseCommand<A, B> firstIfTrue(Command<A, B> first, Predicate<B> cond, Command<A, B> secondary) {
          return new ConditionCommand<>(first, secondary, cond);
      }
docs: Returns a command that will return the result of this command
  if the result applies to the given condition, or otherwise, the
  result of the alternative command (the condition is not applied there).
  
  <p>If any of the two commands throws then the whole thing aborts with the exception.</p>