code: func (vm *Engine) Execute() (err error) {
  	done := false
  	for !done {
  		log.Tracef("%v", newLogClosure(func() string {
  			dis, err := vm.DisasmPC()
  			if err != nil {
  				return fmt.Sprintf("stepping (%v)", err)
  			}
  			return fmt.Sprintf("stepping %v", dis)
  		}))
  
  		done, err = vm.Step()
  		if err != nil {
  			return err
  		}
  		log.Tracef("%v", newLogClosure(func() string {
  			var dstr, astr string
  
  			// if we're tracing, dump the stacks.
  			if vm.dstack.Depth() != 0 {
  				dstr = "Stack:\n" + vm.dstack.String()
  			}
  			if vm.astack.Depth() != 0 {
  				astr = "AltStack:\n" + vm.astack.String()
  			}
  
  			return dstr + astr
  		}))
  	}
  
  	return vm.CheckErrorCondition(true)
  }
docs: // Execute will execute all scripts in the script engine and return either nil
  // for successful validation or an error if one occurred.