anchor.diff:  
   type InputMetaData = RulePosition
   
  -type MetaData = InputMetaData * Rule
  +type Positioned<'r> = InputMetaData * 'r
  +type MetaData = Positioned<Rule>
   
   let private zeroMetaData: InputMetaData = 0
   
  
positive.code:           let exprsExpressions = (([], meta + 1), exprs) ||> List.fold (fun (ms, idx) e  -> (rcr e idx) :: ms, idx + exprSize e)
            ExprShape.RebuildShapeCombination(o, fst exprsExpressions |> List.rev)
    rcr e zeroMetaData
  
  let rec inliner (exp: Expr): Expr = 
    match exp with 
  
negative.code:   | ExprShape.ShapeVar(v)                -> 1 + 1
    | ExprShape.ShapeCombination(o, exprs) -> 1 + (exprs |> List.map exprSize |> List.sum)
  
  let examineAllRulesPositioned (rs: Rule List) (e: Expr): MetaData List = 
    let rec rcr (exp: Expr) (meta: InputMetaData): MetaData List = 
      let immediatelyConstructedExpressions = rs |> List.collect (fun r -> applyRule r exp |> List.map (fun _ -> meta, r)) 
      let constructedExpressionsByChildren =
  