You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: command.rb
    path of file: ./repos/aruba/lib/aruba
    
    the code of the file until where you have to start completion: require "delegate"
require "aruba/processes/spawn_process"
require "aruba/processes/in_process"
require "aruba/processes/debug_process"

# Aruba
module Aruba
  # Command
  #
  # This class is not meant for direct use - Command.new, though it's API is
  # public. As it is just a wrapper class, have a look at `BasicProcess` and
  # the like for the public API.
  #
  # @see BasicProcess
  # @see SpawnProcess
  #
  # @private
  class Command < SimpleDelegator
    private

    attr_reader :event_bus

    public

    def initialize(command, opt
    
    def initialize(command, opts = {})
      launchers = []
      launchers << Processes::DebugProcess
      launchers << Processes::InProcess
      launchers << Processes::SpawnProcess

      klass = launchers.find { |l| l.match? opts[:mode] }

      launcher = klass.new(
        command,
        opts.fetch(:exit_timeout),
        opts.fetch(:io_wait_timeout),
        opts.fetch(:working_directory),
        opts.fetch(:environment),
        opts.fetch(:main_class),
        opts.fetch(:stop_signal),
        opts.fetch(:startup_wait_time)
      )

      super(launcher)

      @event_bus = opts.fetch(:event_bus)
    rescue KeyError => e
      raise ArgumentError, e.message
    end