public void Dispose()
 {
     this.accounts   = null;
     this.validators = null;
     this.assets     = null;
     this.contracts  = null;
     this.storages   = null;
 }
 public StateMachine(DataCache <UInt160, AccountState> accounts, DataCache <ECPoint, ValidatorState> validators, DataCache <UInt256, AssetState> assets, DataCache <UInt160, ContractState> contracts, DataCache <StorageKey, StorageItem> storages)
 {
     this.accounts   = new CloneCache <UInt160, AccountState>(accounts);
     this.validators = new CloneCache <ECPoint, ValidatorState>(validators);
     this.assets     = new CloneCache <UInt256, AssetState>(assets);
     this.contracts  = new CloneCache <UInt160, ContractState>(contracts);
     this.storages   = new CloneCache <StorageKey, StorageItem>(storages);
     Notify         += StateMachine_Notify;
     Register("Quras.Account.SetVotes", Account_SetVotes);
     Register("Quras.Validator.Register", Validator_Register);
     Register("Quras.Asset.Create", Asset_Create);
     Register("Quras.Asset.Renew", Asset_Renew);
     Register("Quras.Contract.Create", Contract_Create);
     Register("Quras.Contract.Migrate", Contract_Migrate);
     Register("Quras.Contract.GetStorageContext", Contract_GetStorageContext);
     Register("Quras.Contract.Destroy", Contract_Destroy);
     Register("Quras.Storage.Put", Storage_Put);
     Register("Quras.Storage.Delete", Storage_Delete);
     #region Old Quras APIs
     #endregion
 }