anchor.diff:                              sb.Append "," |> ignore)
                           // Remove the trailing "," before returning.
                           sb.Length <- sb.Length - 1
  -                        sb.ToString ()
  -                ))
  +                        sb.ToString ())
  +            // Increment the rule index
  +            ruleIndex + 1)
  +        // Discard the rule index
  +        |> ignore
   
           // Write the document to a file.
           // TEMP : This is a hard-coded filename -- we should determine this from
  
positive.code:             dgmlDoc.CreateElement ("DirectedGraph", "http://schemas.microsoft.com/vs/2009/dgml")
              |> dgmlDoc.AppendChild
  
          let nodes =
              dgmlDoc.CreateElement ("Nodes", directedGraph.NamespaceURI)
              |> directedGraph.AppendChild
  
negative.code:                 let categoryAttr = dgmlDoc.CreateAttribute "Category"
                  dfaStateNode.Attributes.Append categoryAttr |> ignore
                  categoryAttr.Value <- ruleId
  
                  // If this is a final (accepting) DFA state, set the
                  // AcceptedRuleClauseIndex attribute value.
                  Map.tryFind dfaStateId compiledRule.Dfa.RuleAcceptedByState
                  |> Option.iter (fun acceptedRuleClauseIndex ->
                      let acceptedRuleClauseIndexAttr = dgmlDoc.CreateAttribute "AcceptedRuleClauseIndex"
                      dfaStateNode.Attributes.Append acceptedRuleClauseIndexAttr |> ignore
                      acceptedRuleClauseIndexAttr.Value <- acceptedRuleClauseIndex.ToString ())
  
              // Add the transitions for this rule's DFA.
              compiledRule.Dfa.Transitions.AdjacencyMap
  