parseSetup = (shot, systems) =>
  Object.values(systems)
    .filter(sys => sys !== undefined && typeof sys.parseSetupShot === 'function')
    .reduce((commands, sys) => {
      const systemCommands = sys.parseSetupShot(shot)
      if (!Array.isArray(systemCommands)) {
        throw new Error('Your system should always return an array of commands for a systemSetup')
      }
      return [...commands, ...systemCommands]
    }
    , [])
Returns an array of Commands for the setup of the shot.
@param {Shot} shot
@param {Systems} systems
@returns {AbstractCommand[]} The commands to run at the start and end of the shot.