public StateMachineHostBuilder SetPersistence(PersistenceLevel persistenceLevel, IStorageProvider storageProvider)
        {
            if (persistenceLevel < PersistenceLevel.None || persistenceLevel > PersistenceLevel.ExecutableAction)
            {
                throw new InvalidEnumArgumentException(nameof(persistenceLevel), (int)persistenceLevel, typeof(PersistenceLevel));
            }

            _persistenceLevel = persistenceLevel;
            _storageProvider  = storageProvider ?? throw new ArgumentNullException(nameof(storageProvider));

            return(this);
        }
 void Awake()
 {
     if (instance != null && instance != this)
     {
         Destroy(this.gameObject);
         return;
     }
     else
     {
         instance = this;
     }
     DontDestroyOnLoad(this.gameObject);
 }