anchor.diff:    (** Takes a list of signals and returns a list of where each signal is unique based on it's uid *)
     let unique_signal_list signals = 
       let map = (List.fold (fun set (signal : Signal) -> Map.add (signal.uid) signal set) Map.empty signals) in
  -    let l = Map.fold_right (fun k d l -> d :: l) map [] in
  +    let l = Map.foldBack (fun k d l -> d :: l) map [] in
       l
   
     (** Get the connection for this wire, or empty *)
  
positive.code:           let is_complete = if aggressive then is_complete else is_assign in  (* is assign looks 1 assign ahead.  it should look more.  Definately need to revisit this optimisation *)
            *)
            let is_complete = is_assign in
            if is_complete (hd tl) 
            then assigns (nl,true) tl 
            else assigns (a::nl,opt) tl 
        in
        let nodes, opt = assigns ([],opt) nodes in
        let nodes = rev nodes in
        let nodes, opts = List.unzip (map (optimise opt) nodes) in
        nodes, fold_left (||) opt opts
        
      and optimise opt node = 
        match node with
  
negative.code: 
    (** Constant from a string using verilog style constant formatting ie 32'd12 *)
    let constv (s:string) : Signal = 
      let slen, sval = match s.Split('\'') with [|s0;s1|] -> s0,s1 | _ -> failwith ("Invalid verilog style constant: " ^ s) in
      let len = int slen in
      let ctrl = sval.[0] in
      let sval = sval.Substring(1, (String.length sval - 1)) in
      match ctrl with
      | 'd' -> constd len sval
      | 'x' | 'h' -> consthu len sval
  