code: def initialize(self, symbolic_vm: LaserEVM):
          
          self._reset()
  
          @symbolic_vm.laser_hook("execute_state")
          def execute_state_hook(_):
              current_time = time() - self.begin
              self.nr_of_executed_insns += 1
  
              for key, value in symbolic_vm.coverage.items():
                  try:
                      self.coverage[key][current_time] = sum(value[1]) * 100 / value[0]
                  except KeyError:
                      self.coverage[key] = {}
                      self.coverage[key][current_time] = sum(value[1]) * 100 / value[0]
  
          @symbolic_vm.laser_hook("start_sym_exec")
          def start_sym_exec_hook():
              self.begin = time()
  
          @symbolic_vm.laser_hook("stop_sym_exec")
          def stop_sym_exec_hook():
              self.end = time()
  
              self._write_to_graph()
              self._store_report()
docs: Initializes the BenchmarkPlugin
  
          Introduces hooks in symbolic_vm to track the desired values
          :param symbolic_vm: Symbolic virtual machine to analyze