anchor.diff:  //                | None -> 
   //                    // just start processing body
                   failwith unsupportedCaseMsg
  -            | _ -> processNodeAndSuccessors node operands unionFsaMap unionNodes'
  +            | _ -> processNodeAndSuccessors node state
       
  -    let varFsaMap, _ = build ddg.Root [] Map.empty Map.empty
  -    let nfsa = Map.find ddg.VarName varFsaMap
  +    let finalState = build ddg.Root BuildStateFuncs.empty
  +    let nfsa = Map.find ddg.VarName finalState.Automata
       nfsa.NfaToDfa
  
positive.code:     let fixpointComputationProblemMsg = "old fsa map contains more variables than the new one in fixpoint computation"
  
      let unionTwoFsaMaps (a1: FSAMap) (a2: FSAMap) =
          let rec go (a1: list<string * FSA<State>>) (a2: FSAMap) (acc: FSAMap) =
              match a1 with
              | [] -> Map.fold (fun acc k v -> Map.add k v acc) acc a2
              | (varName, fsa1) :: tl ->
  
negative.code:             | _ -> entriesNum = traversedNum
          if not allEntriesTraversed
          then
              let unionNodes' = Map.add node traversedEntries state.UnionNodes
              { state with UnionNodes = unionNodes' }
          else
              // all paths leading to this node are traversed, we can union automata
              // and continue processing
              let state = 
                  { state with 
                      Automata = unionFsaMaps traversedEntries; 
                      UnionNodes = Map.remove node state.UnionNodes }
              match node.Type with
              | LoopNode(_, _) -> 
  //                let loopFsa = Map.tryFind node loopsFsa
  