private T Take(Func <T> storageAccessor) { if (SecondaryStorage.IsEmpty()) { PrimaryStorage.ReverseTo(SecondaryStorage); } return(storageAccessor.Invoke()); }