pub fn execute_inner<Mode: ExecutionMode>(
timings: &mut Vec<ExecutionTiming>,
protocol_config: &ProtocolConfig,
metrics: Arc<LimitsMetrics>,
vm: &MoveVM,
state_view: &mut dyn ExecutionState,
tx_context: Rc<RefCell<TxContext>>,
gas_charger: &mut GasCharger,
pt: ProgrammableTransaction,
trace_builder_opt: &mut Option<MoveTraceBuilder>,
) -> Result<Mode::ExecutionResults, ExecutionError>