diff --git a/testcases/simple_query.js b/testcases/simple_query.js
index 149b217..66e3cf1 100644
--- a/testcases/simple_query.js
+++ b/testcases/simple_query.js
@@ -595,6 +607,140 @@ if (typeof(tests) !== "object") {
         name: "PointQueryArray_CollScan_LLR", docGenerator: largeDoc, query: {"ff": 7}
     });
 
+
+    const cnfExpr =
+          {
+              $and:
+              [
+                  {$or: [{$eq: ["$a", 8]}, {$eq: ["$b", 70]}, {$gt: ["$c", 99]}]},
+                  {$or: [{$eq: ["$c", 42.5]}, {$eq: ["$d", 17]}, {$lt: ["$e", 1000]}]},
+                  {$or: [{$eq: ["$a", 9]}, {$eq: ["$b", 200]}, {$eq: ["$c", 51.2]}, {$eq: ["$d", 400]}]},
+                  {$or: [{$lt: ["$a", 42.5]}, {$eq: ["$h", 18]}, {$lt: ["$f", 999]}]},
+                  {$or: [{$gt: ["$g", 32.5]}, {$eq: ["$i", 12]}, {$lt: ["$k", 876]}]},
+                  {$or: [{$eq: ["$b", 8]}, {$eq: ["$d", 70]}, {$gt: ["$e", 99]}]},
+                  {$or: [{$eq: ["$h", 8]}, {$eq: ["$i", 70]}, {$gt: ["$l", 99]}]},
+              ]
+          };
+
+    const dnfExpr =
+          {
+              $or:
+              [
+                  {$and: [{$eq: ["$a", 8]}, {$eq: ["$b", 70]}, {$gt: ["$c", 99]}]},
+                  {$and: [{$eq: ["$c", 42.5]}, {$eq: ["$d", 17]}, {$lt: ["$e", 1000]}]},
+                  {$and: [{$eq: ["$a", 9]}, {$eq: ["$b", 200]}, {$eq: ["$c", 51.2]}, {$eq: ["$d", 400]}]},
+                  {$and: [{$lt: ["$a", 42.5]}, {$eq: ["$h", 18]}, {$lt: ["$f", 999]}]},
+                  {$and: [{$gt: ["$g", 32.5]}, {$eq: ["$i", 12]}, {$lt: ["$k", 876]}]},
+                  {$and: [{$eq: ["$b", 8]}, {$eq: ["$d", 70]}, {$gt: ["$e", 99]}]},
+                  {$and: [{$eq: ["$h", 8]}, {$eq: ["$i", 70]}, {$gt: ["$l", 99]}]},
+              ]
+          };
+    
+    addTestCaseWithLargeDataset({
+        name: "ComplexExpressionQuery_CollScan_CNF", docGenerator: smallDoc, query: {$expr: cnfExpr}
+    });
+
+    addTestCaseWithLargeDataset({
+        name: "ComplexExpressionQuery_CollScan_DNF", docGenerator: smallDoc, query: {$expr: dnfExpr}
+    });
+
+    addTestCaseWithLargeDataset({
+        name: "ComplexExpressionQuery_CollScan_NegDNF", docGenerator: smallDoc, query: {$expr: {$not: [dnfExpr]}}
+    });
+
+    const mixedBoolExpr = {$and: [
+    {b: 0},
+    {$or: [{a: {$in: [17, 15, 1, 8, 2]}}, {c: {$in: ['ab', 17, 'ef']}}]},
+    {$and: [
+        {a: {$gt: 'ab'}}, {c: {$lte: 'ef'}},
+        {$or: [
+            {a: 2}, {a: 1},
+            {$and: [
+                {c: {$in: [34, 35, 42, 23, 17, 19, 'abc']}}, {a: {$in: [34, 35, 36, 37, 'xyz']}}
+            ]}
+        ]}
+    ]}
+]
+};
+    addTestCaseWithLargeDataset({
+        name: "ComplexExpressionQuery_CollScan_MixedBoolExpr", docGenerator: smallDoc, query: mixedBoolExpr
+    });
+
+const mixedBoolExpr2 =
+{$and: [
+    {b: 0},
+    {$or: [{a: {$in: [17, 15, 1, 8, 2]}}, {c: {$in: ['ab', 'dh', 'ef']}}]},
+    {$and: [
+        {a: {$gt: 42}}, {c: {$lte: 'ef'}},
+        {$or: [
+            {a: 2}, {a: 1},
+            {$and: [
+                {c: {$in: ['34', '35', '42', '23', '17', '19', 'abc']}}, {a: {$in: [34, 35, 36, 37, 67]}}
+            ]}
+        ]}
+    ]},
+    {$or: [{$and: [{d: {$gt: 'hab'}}, {d: {$in: ['aaa', '17', 'zzz']}}]},
+           {$and: [{a: {$in: [34, 35, 46, 57]}}, {b: 1}, {c: '42'}]},
+           {$and: [{f: {$in: [1, 3, 7, 8]}}, {e: 'vbg'}, {d: 'hbr'}]},
+           {d: {$gt: 'hab'}}, {d: {$lte: 'hia'}},
+           {$and: [{d: {$in: [7, 5, 6, 9, 2]}}, {d: {$in: ['99', '109', '110']}}]}, {f: 3.14}]},
+    {$or: [
+        {$and: [{$or: [{$and: [{k: {$gt: 0}}, {k: {$lt: 100}}, {l: 99}]},
+                       {$and: [{k: {$gt: 90}}, {k: {$lt: 200}}, {m: 99}]},
+                       {$and: [{k: {$gt: 190}}, {k: {$lt: 300}}, {n: 99}]}]},
+                {$or: [{$and: [{l: {$gt: 0}}, {l: {$lt: 100}}, {p: 99}]},
+                       {$and: [{l: {$gt: 90}}, {l: {$lt: 200}}, {q: 99}]},
+                       {$and: [{l: {$gt: 190}}, {l: {$lt: 300}}, {r: 99}]}]},
+                {$or: [{$and: [{m: {$gt: 0}}, {m: {$lt: 100}}, {a: 999}]},
+                       {$and: [{m: {$gt: 90}}, {m: {$lt: 200}}, {b: 999}]},
+                       {$and: [{m: {$gt: 190}}, {m: {$lt: 300}}, {c: '999'}]}]},
+                {$or: [{$and: [{n: {$gt: 0}}, {n: {$lt: 100}}, {d: 'xyz'}]},
+                       {$and: [{n: {$gt: 90}}, {n: {$lt: 200}}, {e: 9}]},
+                       {$and: [{n: {$gt: 190}}, {n: {$lt: 300}}, {f: 11}]}]},
+                {$or: [{$and: [{o: {$gt: 0}}, {o: {$lt: 100}}, {d: 'fhr'}]},
+                       {$and: [{o: {$gt: 90}}, {o: {$lt: 200}}, {e: 9}]},
+                       {$and: [{o: {$gt: 190}}, {o: {$lt: 300}}, {f: 11}]}]}
+                ]},
+        {$and: [{$or: [{$and: [{k: {$gt: 23}}, {k: {$lt: 1023}}, {l: 99}]},
+                       {$and: [{k: {$gt: 923}}, {k: {$lt: 2023}}, {m: 99}]},
+                       {$and: [{k: {$gt: 1923}}, {k: {$lt: 3023}}, {n: 99}]}]},
+                {$or: [{$and: [{l: {$gt: 23}}, {l: {$lt: 1023}}, {p: 99}]},
+                       {$and: [{l: {$gt: 923}}, {l: {$lt: 2023}}, {q: 99}]},
+                       {$and: [{l: {$gt: 1923}}, {l: {$lt: 3023}}, {r: 99}]}]},
+                {$or: [{$and: [{m: {$gt: 23}}, {m: {$lt: 1023}}, {a: 999}]},
+                       {$and: [{m: {$gt: 923}}, {m: {$lt: 2023}}, {b: 999}]},
+                       {$and: [{m: {$gt: 1923}}, {m: {$lt: 3023}}, {c: '999'}]}]},
+                {$or: [{$and: [{n: {$gt: 23}}, {n: {$lt: 1023}}, {d: 'xyz'}]},
+                       {$and: [{n: {$gt: 923}}, {n: {$lt: 2023}}, {e: 9}]},
+                       {$and: [{n: {$gt: 1923}}, {n: {$lt: 3023}}, {f: 11}]}]},
+                {$or: [{$and: [{o: {$gt: 23}}, {o: {$lt: 1023}}, {d: 'fhr'}]},
+                       {$and: [{o: {$gt: 923}}, {o: {$lt: 2023}}, {e: 9}]},
+                       {$and: [{o: {$gt: 1923}}, {o: {$lt: 3023}}, {f: 11}]}]}
+                ]},
+        {$and: [{$or: [{$and: [{k: {$gt: 17}}, {k: {$lt: 1017}}, {l: 99}]},
+                       {$and: [{k: {$gt: 917}}, {k: {$lt: 2017}}, {m: 99}]},
+                       {$and: [{k: {$gt: 1917}}, {k: {$lt: 3017}}, {n: 99}]}]},
+                {$or: [{$and: [{l: {$gt: 17}}, {l: {$lt: 1017}}, {p: 99}]},
+                       {$and: [{l: {$gt: 917}}, {l: {$lt: 2017}}, {q: 99}]},
+                       {$and: [{l: {$gt: 1917}}, {l: {$lt: 3017}}, {r: 99}]}]},
+                {$or: [{$and: [{m: {$gt: 17}}, {m: {$lt: 1017}}, {a: 999}]},
+                       {$and: [{m: {$gt: 917}}, {m: {$lt: 2017}}, {b: 999}]},
+                       {$and: [{m: {$gt: 1917}}, {m: {$lt: 3017}}, {c: '999'}]}]},
+                {$or: [{$and: [{n: {$gt: 17}}, {n: {$lt: 1017}}, {d: 'xyz'}]},
+                       {$and: [{n: {$gt: 917}}, {n: {$lt: 2017}}, {e: 9}]},
+                       {$and: [{n: {$gt: 1917}}, {n: {$lt: 3017}}, {f: 11}]}]},
+                {$or: [{$and: [{o: {$gt: 17}}, {o: {$lt: 1017}}, {d: 'fhr'}]},
+                       {$and: [{o: {$gt: 917}}, {o: {$lt: 2017}}, {e: 9}]},
+                       {$and: [{o: {$gt: 1917}}, {o: {$lt: 3017}}, {f: 11}]}]}
+                ]},
+    ]}
+]
+}
+
+    addTestCaseWithLargeDataset({
+        name: "ComplexExpressionQuery_CollScan_MixedBoolExpr2", docGenerator: smallDoc, query: mixedBoolExpr2
+    });
+    
     // Tests: query with a complex expression on top-level fields with full collection scan.
     let queryExpr = {
         $expr:
@@ -869,4 +1019,12 @@ if (typeof(tests) !== "object") {
         indexes: [{"h": 1, "b": 1, "e.b": 1, "d": 1, "e.h": 1}],
         query: {"h": {$gt: 1}, "b": {$lt: 100}, "e.b": {$gt: 1}, "d": {$gt: 10}, "e.h": {$gt: 1}}
     });
+
+    addTestCaseWithLargeDatasetAndIndexes({
+        name: "RangeQuery_MultipleCompoundIndexes_ComplexBounds_FiveFields_Range_LS",
+        tags: ["indexed"],
+        docGenerator: smallDoc,
+        indexes: [{"h": 1, "b": 1, "e.b": 1, "d": 1, "e.h": 1}, {"b": 1}, {"h": 1}, {"d": 1, "e.h": 1}],
+        query: {"h": {$gt: 1}, "b": {$lt: 100}, "e.b": {$gt: 1}, "d": {$gt: 10}, "e.h": {$gt: 1}}
+    });
 }());
