anchor.diff:      /// <para> returns (new body, generated rules + old rules) </para>
       /// </summary>
       let rec expandBody body (metaRules: Dictionary<string,Rule.t<Source.t,Source.t> >)
  -            (expanded : Dictionary<string, Production.t<'a,'b>>) res =
  +            (expanded : Dictionary<string, Production.t<_,_>>) res =
           //printfn "b: %A" body
           /// Returns key for table of expanded rules
           let getKey body = body.ToString()
  
positive.code:         | PMetaRef (name, attrs, metaArgs) -> 
              if (metaArgs.IsEmpty) then (tryReplaceActual formalToAct (Source.toString name) (PRef(name, attrs)) )
              else PMetaRef(name, attrs, List.map replace metaArgs)
          | PPerm (_) -> failwith "Unrealised meta-expanding of permutation"
          | PRepet (_) -> failwith "Unrealised meta-expanding of repetition"
  
      expandBody body metaRules expanded res
  
  
negative.code:     let rec collectMeta rules (metaRulesTbl:Dictionary<string,Rule.t<Source.t,Source.t> >) = 
          match rules with 
          | [] -> ()
          | h::t -> if (isMetaRule h) then metaRulesTbl.Add(h.name,h)        
                    collectMeta t metaRulesTbl
      
      /// Replace existing meta-rules. Suppose that all high-level meta-rules are in metaRulesTbl
      let rec replaceMeta rules ((metaRulesTbl:Dictionary<string,Rule.t<Source.t,Source.t> >), refsTbl) res = 
  