anchor.diff:                      NestedQuery ((paramExpr, Compiler.toQueryExpr bodyExpr), queryExpr.QueryExpr, typeof<'R>)
                   | _ -> failwithf "Invalid state %A" selector
   
  -            new QueryExpr<IEnumerable<'R>>(queryExpr')
  +            new QueryExpr<_>(queryExpr')
   
   
           [<System.Runtime.CompilerServices.Extension>]
           static member Take<'T>(queryExpr : QueryExpr<IEnumerable<'T>>, n : int) : QueryExpr<IEnumerable<'T>> =
  -            new QueryExpr<IEnumerable<'T>>(Take (constant n, queryExpr.QueryExpr, typeof<'T>))
  +            new QueryExpr<_>(Take (constant n, queryExpr.QueryExpr, typeof<'T>))
   
           [<System.Runtime.CompilerServices.Extension>]
           static member Skip<'T>(queryExpr : QueryExpr<IEnumerable<'T>>, n : int) : QueryExpr<IEnumerable<'T>> =
  -            new QueryExpr<IEnumerable<'T>>(Skip (constant n, queryExpr.QueryExpr, typeof<'T>))
  +            new QueryExpr<_>(Skip (constant n, queryExpr.QueryExpr, typeof<'T>))
   
           [<System.Runtime.CompilerServices.Extension>]
           static member ForEach<'T>(queryExpr : QueryExpr<IEnumerable<'T>>, action : Expression<Action<'T>>) : QueryExprVoid =
  
positive.code:             ExtensionMethods.Compile(queryExpr).Invoke()
  
          [<System.Runtime.CompilerServices.Extension>]
          static member Select<'T, 'R>(queryExpr : QueryExpr<IEnumerable<'T>>, selector : Expression<Func<'T, 'R>>) =
              new QueryExpr<IEnumerable<'R>>(Transform (selector, queryExpr.QueryExpr, typeof<'R>))
  
          [<System.Runtime.CompilerServices.Extension>]
          static member Select<'T, 'R>(queryExpr : QueryExpr<IEnumerable<'T>>, selector : Expression<Func<'T, int, 'R>>) =
              new QueryExpr<IEnumerable<'R>>(TransformIndexed (selector, queryExpr.QueryExpr, typeof<'R>))
              
          [<System.Runtime.CompilerServices.Extension>]
          static member Where<'T>(queryExpr : QueryExpr<IEnumerable<'T>>, predicate : Expression<Func<'T, bool>>) =
              new QueryExpr<IEnumerable<'T>>(Filter (predicate, queryExpr.QueryExpr, typeof<'T>))
  
          [<System.Runtime.CompilerServices.Extension>]
          static member Where<'T>(queryExpr : QueryExpr<IEnumerable<'T>>, predicate : Expression<Func<'T, int, bool>>) =
              new QueryExpr<IEnumerable<'T>>(FilterIndexed (predicate, queryExpr.QueryExpr, typeof<'T>))
  
          [<System.Runtime.CompilerServices.Extension>]
          static member Aggregate(queryExpr : QueryExpr<IEnumerable<'T>>, seed : 'Acc, func : Expression<Func<'Acc, 'T, 'Acc>>) =
              new QueryExpr<'Acc>(Aggregate ((seed :> _, typeof<'Acc>), func, queryExpr.QueryExpr))
  
          [<System.Runtime.CompilerServices.Extension>]
          static member Sum(queryExpr : QueryExpr<IEnumerable<double>>) =
              new QueryExpr<double>(Sum (queryExpr.QueryExpr, typeof<double>))
  
          [<System.Runtime.CompilerServices.Extension>]
          static member Sum(queryExpr : QueryExpr<IEnumerable<int>>) =
              new QueryExpr<int>(Sum (queryExpr.QueryExpr, typeof<int>))
  
          [<System.Runtime.CompilerServices.Extension>]
          static member Count(queryExpr : QueryExpr<IEnumerable<'T>>) =
              new QueryExpr<'T>(Count (queryExpr.QueryExpr, typeof<'T>))
              
          [<System.Runtime.CompilerServices.Extension>]
  
negative.code:         // SequentialQuery ExtensionMethods
  
          [<System.Runtime.CompilerServices.Extension>]
          static member AsQueryExpr(enumerable : IEnumerable<'T>) : QueryExpr<IEnumerable<'T>> = 
              // Hack to optimize Enumerable.Range and Enumerable.Repeat calls
              // TODO : check Mono generated types
              let ty = enumerable.GetType()
  