anchor.diff:      // definition), then call the preprocessor function.
       preprocessMacros (List.rev macros) Array.empty (Map.empty, Set.empty)
   
  +/// Determines if all characters in the specified CharSet are ASCII characters;
  +/// that is, they can be represented by an 8-bit value.
  +let private isAsciiCharSet (charSet : CharSet) : bool =
  +    charSet
  +    |> CharSet.forall (fun c ->
  +        int c <= int System.Byte.MaxValue)
  +
   //
   let private validateAndSimplifyPattern pattern (macroEnv, badMacros, options) =
       //
  
positive.code:                 return err
              | Choice1Of2 r ->
                  return
                      Regex.Star r
                      |> Choice1Of2
  
          | Pattern.Concat (r, s) ->
  
negative.code: 
          | Regex.Negate r ->
              let! r = rewriteNegatedCharSets r
              return Regex.negate r
  
          | Regex.Star r ->
              let! r = rewriteNegatedCharSets r
              return Regex.star r
  
          | Regex.Concat (r, s) ->
              let! r = rewriteNegatedCharSets r
              let! s = rewriteNegatedCharSets s
              return Regex.concat r s
  
          | Regex.And (r, s) ->
              let! r = rewriteNegatedCharSets r
              let! s = rewriteNegatedCharSets s
              return Regex.andr r s
  
          | Regex.Or (r, s) ->
              let! r = rewriteNegatedCharSets r
              let! s = rewriteNegatedCharSets s
              return Regex.orr r s
          }
  
      rewriteNegatedCharSets regex id
  