             sql(dbQueue, tableRequest.filter([Col.id].contains(Col.id))),
             "SELECT * FROM \"readers\" WHERE (\"id\" IN (\"id\"))")
         
+        // EmptyCollection.contains(): 0
+        XCTAssertEqual(
+            sql(dbQueue, tableRequest.filter(EmptyCollection<Int>().contains(Col.id))),
+            "SELECT * FROM \"readers\" WHERE 0")
+        
+        // !EmptyCollection.contains(): 1
+        XCTAssertEqual(
+            sql(dbQueue, tableRequest.filter(!EmptyCollection<Int>().contains(Col.id))),
+            "SELECT * FROM \"readers\" WHERE 1")
+        
         // Sequence.contains(): IN operator
         XCTAssertEqual(
             sql(dbQueue, tableRequest.filter(AnySequence([1,2,3]).contains(Col.id))),

            sql(dbQueue, tableRequest.filter(!(![1,2,3].contains(Col.id)))),
            "SELECT * FROM \"readers\" WHERE (\"id\" IN (1, 2, 3))")
        
        // Range.contains(): BETWEEN operator
        do {
            let range = 1..<10
            XCTAssertEqual(
                sql(dbQueue, tableRequest.filter(range.contains(Col.id))),
                "SELECT * FROM \"readers\" WHERE (\"id\" BETWEEN 1 AND 9)")
        }
        
        // Range.contains(): BETWEEN operator
        do {
            let range = 1...10
            XCTAssertEqual(
                sql(dbQueue, tableRequest.filter(range.contains(Col.id))),
                "SELECT * FROM \"readers\" WHERE (\"id\" BETWEEN 1 AND 10)")
        }
        
        // ClosedInterval: BETWEEN operator
        do {
            let closedInterval = "A"..."z"
            XCTAssertEqual(
                sql(dbQueue, tableRequest.filter(closedInterval.contains(Col.name))),
                "SELECT * FROM \"readers\" WHERE (\"name\" BETWEEN 'A' AND 'z')")
        }
        
        // HalfOpenInterval:  min <= x < max
        do {
            let halfOpenInterval = "A"..<"z"
            XCTAssertEqual(
                sql(dbQueue, tableRequest.filter(halfOpenInterval.contains(Col.name))),
                "SELECT * FROM \"readers\" WHERE ((\"name\" >= 'A') AND (\"name\" < 'z'))")
        }
        
        // Subquery
        XCTAssertEqual(

            sql(dbQueue, tableRequest.filter([Int]().contains(Col.id))),
            "SELECT * FROM \"readers\" WHERE 0")
        
        // !emptyArray.contains(): 0
        XCTAssertEqual(
            sql(dbQueue, tableRequest.filter(![Int]().contains(Col.id))),
            "SELECT * FROM \"readers\" WHERE 1")
        
        // Array.contains(): IN operator
        XCTAssertEqual(
            sql(dbQueue, tableRequest.filter([1,2,3].contains(Col.id))),
