namespace HeuristicLab.Problems.ProgramSynthesis.Push.Stack { using System.Collections.Generic; public interface IPushStack : ICollection, IPushStack { T Top { get; set; } T TopOrDefault { get; } T Bottom { get; } T BottomOrDefault { get; } T this[int key] { get; set; } new int Count { get; } void Push(T item); void Push(T item1, T item2); void Push(T item1, T item2, T item3); void Push(T item1, T item2, T item3, T item4); void Push(IReadOnlyList items, int startIndex); void Push(IReadOnlyList items); void Push(IEnumerable items); void Swap(int count); void Yank(int index); void RemoveTop(); void Remove(int count); void RemoveAt(int index); void RemoveAt(int index, int count); new void Clear(); IReadOnlyList Peek(int count); void Insert(int index, T item); T Pop(); IReadOnlyList Pop(int count); bool TryPop(out T item); T ElementAt(int index); } }