anchor.diff:  
                   CharSet.difference ruleAlphabet initialEdgeLabels
   
  -            // If the set of characters matched by the wildcard pattern is not empty,
  -            // create a new DFA state which accepts the wildcard pattern, then add
  -            // transition edges to it from the initial state.
  +            // If the set of characters matched by the wildcard pattern is not empty, create a new DFA state which
  +            // accepts the wildcard pattern, then add transition edges to it from the initial state.
               if CharSet.isEmpty wildcardChars then
  -                // TODO : Emit a warning to let the user know this pattern will never be matched.
  +                // TODO : This warning shouldn't be emitted here -- it should be returned from this function so
  +                //        if can be displayed to the user in whatever way makes sense for the consumer of this function.
  +                //        Also, we want to return location information so it can be used to emit MSBuild-style warning
  +                //        messages and/or text adornments in Visual Studio.
                   Printf.dprintfn "Warning: Wildcard pattern in rule will never be matched."
   
                   compiledPatternDfa
  
positive.code: /// </param>
  /// <param name="regex">A regular expression.</param>
  /// <returns>A regular expression created by transforming negated character sets into positive character sets.</returns>
  /// <remarks>
  /// This is only necessary for fslex compatibility; once fsharplex has it's own backend (e.g., direct-style),
  /// this won't be needed anymore (though it may be retained as a library function for diagnostics purposes).
  /// </remarks>
  let private rewriteNegatedCharSets universe regex =
      let rec rewriteNegatedCharSets regex =
          cont {
  
negative.code:             // Only the earliest use of the wildcard pattern will be matched.
              let acceptingClauseIndex, neverMatchedClauseIndices = Set.extractMin wildcardClauseIndices
  
              // TODO : Return warning messages (with location info) about patterns which will never be matched.
              // TEMP : In the meantime, print warnings to the debug console for development purposes.
              neverMatchedClauseIndices
              |> Set.iter (fun clauseIndex ->
                  Printf.dprintfn "This pattern will never be matched. (ClauseIndex = %i)" <| int clauseIndex)
  
              Some acceptingClauseIndex
  
  