//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void removingTheLastQueryReturnsAnEmptyList()
        public virtual void RemovingTheLastQueryReturnsAnEmptyList()
        {
            // Given
            ExecutingQuery     aQuery = CreateExecutingQuery(1, "query");
            ExecutingQueryList list   = ExecutingQueryList.EMPTY.push(aQuery);

            // When
            ExecutingQueryList result = list.Remove(aQuery);

            // Then
            assertThat(result, equalTo(ExecutingQueryList.EMPTY));
        }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void shouldNotChangeAListWhenRemovingAQueryThatIsNotInTheList()
        public virtual void ShouldNotChangeAListWhenRemovingAQueryThatIsNotInTheList()
        {
            // given
            ExecutingQuery     query1 = CreateExecutingQuery(1, "query1");
            ExecutingQuery     query2 = CreateExecutingQuery(2, "query2");
            ExecutingQueryList list   = ExecutingQueryList.EMPTY.push(query1);

            // when
            ExecutingQueryList result = list.Remove(query2);

            // then
            assertThat(result, equalTo(list));
        }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void removingQueryInTheMiddleKeepsOrder()
        public virtual void RemovingQueryInTheMiddleKeepsOrder()
        {
            // Given
            ExecutingQuery query1 = CreateExecutingQuery(1, "query1");
            ExecutingQuery query2 = CreateExecutingQuery(2, "query2");
            ExecutingQuery query3 = CreateExecutingQuery(3, "query3");
            ExecutingQuery query4 = CreateExecutingQuery(4, "query4");
            ExecutingQuery query5 = CreateExecutingQuery(5, "query5");

            ExecutingQueryList list = ExecutingQueryList.EMPTY.push(query1).push(query2).push(query3).push(query4).push(query5);

            // When
            IList <ExecutingQuery> result = list.Remove(query3).queries().collect(Collectors.toList());

            // Then
            assertThat(result, equalTo(asList(query5, query4, query2, query1)));
        }