def initialize(options={})
@binding_stack = []
@indent = Pry::Indent.new
@command_state = {}
@eval_string = ""
@backtrace = options.delete(:backtrace) || caller
target = options.delete(:target)
@config = Pry::Config.new
config.merge!(options)
push_prompt(config.prompt)
@input_array = Pry::HistoryArray.new config.memory_size
@output_array = Pry::HistoryArray.new config.memory_size
@custom_completions = config.command_completions
set_last_result nil
@input_array << nil
push_initial_binding(target)
exec_hook(:when_started, target, options, self)
end