anchor.diff:   
       /// returns (ref to new rule, list of generated rules)
       and expandMetaRef res (metaName:Source.t) _params (metaArgs':t<Source.t, Source.t> list) args =
  -        printfn "r %A" metaName
  +//        printfn "r %A" metaName
           let key = getKey metaName metaArgs'
           // checks if we already expanded rule with given name and meta args
           if refsTbl.ContainsKey(key) then
  
positive.code: /// res:Rule.t list - generated rules from body
  /// returns (new body, generated rules)
  let rec expandMeta body (metaRulesTbl:Dictionary<string,Rule.t<Source.t,Source.t> >) (refsTbl:Dictionary<string,Source.t>) res args = 
      printfn "b: %A" body
  
      /// replaces all metarule parameters in body with given args
      let rec transformBody (ruleName:string) actParams (args:(string * t<Source.t, Source.t>) list) nRules = 
  
negative.code:     | [] -> ()
      | h::t -> 
          if (isMetaRule h) then 
  //            printfn "+%s" h.name
              metaRulesTbl.Add(h.name,h)        
          collectMeta t (metaRulesTbl,refsTbl)
  //        printfn "%s" h.name
  
  let rec replaceMeta rules ((metaRulesTbl:Dictionary<string,Rule.t<Source.t,Source.t> >),refsTbl) res = 
      match rules with 
  