code: def on_experiment_end(self, trials: List["Trial"], **info):
      # Save callback contents to file
      with open(CALLBACK_DUMP_FILE, "w") as f:
          json.dump(self.get_state(), f, indent=2)
  
imports: import collections
  import json
  import os
  from pathlib import Path
  import random
  import time
  from typing import Dict, List, Optional
  import ray
  from ray import train, tune
  from ray.train.data_parallel_trainer import DataParallelTrainer
  from ray.tune.experiment import Trial
  from ray.train.tests.util import create_dict_checkpoint, load_dict_checkpoint
label_desc: Use image node_id 3 for calling the StatefulCallback obj's underlying member method code with example usage: obj.on_experiment_end(trials) without return types