public ManagerState Load()
 {
     List<ManagerState> states = new List<ManagerState>();
     while (true)
     {
         var other = RabbitMqStore.Dequeue();
         if (other == null)
             break;
         states.Add(other);
     }
     var latest = states.OrderByDescending(x => x.Revision).FirstOrDefault();
     if (latest == null)
         return latest;
     RabbitMqStore.AcknowlidgeRange(states.Where(x => x.Revision != latest.Revision));
     loaded = latest;
     return latest;
 }
 public void SaveOrUpdate(ref ManagerState state)
 {
     if (loaded == null)
     {
         state.Revision = state.Revision + 1;
         RabbitMqStore.Enqueue(state);
         state = Load();
     }
     else if (loaded != state)
     {
         throw new ArgumentException("The current state was not loaded from this repository.This repository can contain only one item ^^");
     }
     else
     {
         state.Revision = state.Revision + 1;
         RabbitMqStore.Enqueue(state);
         RabbitMqStore.Acknowlidge(state);
         state = Load();
     }
 }