anchor.diff:            args = createPairsList metaRule.name metaRule.metaArgs metaArgs 
           in 
           let fArgs = getFormalArgs metaRule.name _params metaRule.args
  -        in let args' = list2opt fArgs in
  +        let args' = list2opt fArgs
           let (b, newRules) = transformBody rName args' args [] metaRule.body 
  -        in ( newRules @ [ createRule rName fArgs b metaRule._public [] ] )
  +        ( newRules @ [ createRule rName fArgs b metaRule._public [] ] )
   
       and genNewRule rName args' mRulesTbl metaName' metaArgs =
           let res = findMetaRule mRulesTbl metaName' in 
  
positive.code:         | None -> []
  
      and expandMetaRef metaName _params metaArgs' = 
          let key = getKey metaName metaArgs' in                
          if refsTbl.ContainsKey(key) then (PRef (refsTbl.Item key, _params), res)
          else
            let rName = createNewName metaName in       
            let eRules = refsTbl.Add(key,rName) ;
                         genNewRule (getText rName) _params 
                                    metaRulesTbl (getText metaName) metaArgs' 
            in let b = PRef (rName, _params) 
               in (b, res @ eRules)
          
  
      in
  
negative.code:         | PMetaRef (mn, p, mArgs) -> expandMetaRef mn p mArgs
          | PSeq (seq, a) -> 
            let rec expandSeq mRulesTbl rfsTbl rs = function
            | h::t ->                         
              let (b, res') = expandMeta h.rule mRulesTbl rfsTbl rs
              let (b', res'') = expandSeq mRulesTbl rfsTbl res' t
              //it is hack for filtering similar results.
              ({ h with rule = b }::b', res'' (*|> set |> List.ofSeq*))
            | [] -> ([], rs)
            in let (eSeq, res') = expandSeq metaRulesTbl refsTbl res seq      
               in (PSeq (eSeq, a), res')
          
          | PAlt (l, r) -> let (l', res') = expandMeta l metaRulesTbl refsTbl res                         
                           let (r', res'') = expandMeta r metaRulesTbl refsTbl res'
                           (PAlt(l', r'), res'')
          | POpt r  -> let (r', res') = expandMeta r metaRulesTbl refsTbl res 
                       in (POpt r', res')
          | PSome r -> let (r', res') = expandMeta r metaRulesTbl refsTbl res 
  