code: function Ethdebugger (opts) {
    this.opts = opts || {}
    if (!this.opts.compilationResult) this.opts.compilationResult = () => { return null }
  
    this.web3 = opts.web3
  
    this.event = new EventManager()
  
    this.tx
  
    this.traceManager = new TraceManager({web3: this.web3})
    this.codeManager = new CodeManager(this.traceManager)
    this.solidityProxy = new SolidityProxy(this.traceManager, this.codeManager)
    this.storageResolver = null
  
    this.callTree = new InternalCallTree(this.event, this.traceManager, this.solidityProxy, this.codeManager, { includeLocalVariables: true })
  }
docs: Ethdebugger is a wrapper around a few classes that helps debugging a transaction
  
  - Web3Providers - define which environment (web3) the transaction will be retrieved from
  - TraceManager - Load / Analyze the trace and retrieve details of specific test
  - CodeManager - Retrieve loaded byte code and help to resolve AST item from vmtrace index
  - SolidityProxy - Basically used to extract state variable from AST
  - Breakpoint Manager - Used to add / remove / jumpto breakpoint
  - InternalCallTree - Used to retrieved local variables
  - StorageResolver - Help resolving the storage accross different steps
  
  @param {Map} opts  -  { function compilationResult } //