anchor.diff:      let nodes = Text.StringBuilder()
       w nodes "var nodes = new vis.DataSet(["
   
  -    for (a, b, condstr) in rels do
  -      let aid = mkId a
  -      let bid = mkId b
  +    for (table_a, table_b, condstr) in rels do
  +      let aid = mkId table_a
  +      let bid = mkId table_b
         w edges (sprintf "{from: %d, to: %d, title: \"%s\"}," aid bid condstr)
   
       for KeyValue(tname, id) in ids do
  -      let iszdd = tname.StartsWith "zdd_"
  -      let isxss = tname.StartsWith "xss_"
  -      let isdd =  tname.StartsWith "xdd_"
  -
  -      let shape = if iszdd || isxss || isdd then "box" else "ellipse"
  -      let color =
  -        if iszdd then "#FFFF00"
  -        elif isxss then "pink"
  -        elif isdd then "gold"
  -        else "#97C2FC"
  -
  +      let shape =  "ellipse"
  +      let color = "#97C2FC"
         w nodes (sprintf "{id: %d, label: '%s', shape: '%s', color: '%s'}," id tname shape color)
   
       w edges "]);"
  
positive.code:               cr.MultiPartIdentifier 
                |> MultiPartIdentifier.FromCs 
                |> fun x ->
                  colRefs.Add (Ops.GetName x)
                })
    colRefs |> List.ofSeq
  
  
negative.code:   else
      Choice2Of2(errs)
  
  type ExprUtils =
    static member GetName(ident:Identifier) : string =
      match ident with
      | Identifier.Base(QuoteType=quoteType; Value=Some(v)) -> v
  