public override ImmutableCollection <T> AddBack(T value) { if (m_right.IsFull) { return(new NormalCollection( m_left, m_middle.AddBack(m_right.RemoveBack()), new Two(m_right.Back, value))); } else { return(new NormalCollection(m_left, m_middle, m_right.AddBack(value))); } }