anchor.diff:                  | Intersect (expr, term) -> Intersect <| nested expr term
                   | Except (expr, term) -> Except <| nested expr term
           }
  -    member this.Select(select : SelectStmt) : InfSelectStmt =
  +    member this.Select(select : SelectStmt, knownShape : InferredQueryShape option) : InfSelectStmt =
           {   Source = select.Source
               Value =
                   let select = select.Value
  
positive.code:         | Subquery select ->
              match tsub.Alias with
              | None -> failAt select.Source "Subquery requires an alias"
              | Some alias ->
                  alias, this.Select(select).Value.Info
  
      member private this.TableExprScope(dict : Dictionary<Name, InferredType ObjectInfo>, texpr : TableExpr) =
          let add name objectInfo =
  
negative.code:                     yield! exprs
                  } |> Seq.map (fun e -> e.Info.Type) |> cxt.Unify |> resultOk inex.Set.Source
                  exprs |> InExpressions
              // TODO: enforce single column-ness?
              | InSelect select -> InSelect <| this.Select(select, None)
              | InTable table -> InTable <| this.TableInvocation(table)
          {   Expr.Source = source
              Value =
  