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: application_manager.rb
    path of file: ./repos/stackneveroverflow/vendor/bundle/ruby/2.3.0/gems/spring-2.0.2/lib/spring
    
    the code of the file until where you have to start completion: module Spring
  class ApplicationManager
    attr_reader :pid, :child, :app_env, :spring_env, :status

    def initialize(app_env, spring_env)
      @app_env    = app_env
      @spring_env = spring_env
      @mutex      = Mutex.new
      @state      = :running
    end

    def log(message)
      spring_env.log "[application_manager:#{app_env}] #{message}"
    end

    # We'
    
    def start_child(preload = false)
      @child, child_socket = UNIXSocket.pair

      Bundler.with_clean_env do
        @pid = Process.spawn(
          {
            "RAILS_ENV"           => app_env,
            "RACK_ENV"            => app_env,
            "SPRING_ORIGINAL_ENV" => JSON.dump(Spring::ORIGINAL_ENV),
            "SPRING_PRELOAD"      => preload ? "1" : "0"
          },
          "ruby",
          "-I", File.expand_path("../..", $LOADED_FEATURES.grep(/bundler\/setup\.rb$/).first),
          "-I", File.expand_path("../..", __FILE__),
          "-e", "require 'spring/application/boot'",
          3 => child_socket,
          4 => spring_env.log_file,
        )
      end

      start_wait_thread(pid, child) if child.gets
      child_socket.close
    end