private T Take(Func <T> storageAccessor) { if (SecondaryStorage.IsEmpty()) { PrimaryStorage.ReverseTo(SecondaryStorage); } return(storageAccessor.Invoke()); }
public void Enqueue(T item) { if (PrimaryStorage.IsEmpty()) { SecondaryStorage.ReverseTo(PrimaryStorage); } PrimaryStorage.Push(item); }
public bool IsEmpty() => PrimaryStorage.IsEmpty() && SecondaryStorage.IsEmpty();