anchor.diff:      //        This is possible for regular expressions, but is it possible for extended regular expressions?
   
   
  +/// Active patterns which simplify matching of special <see cref="Regex"/> instances.
  +[<AutoOpen>]
  +module RegexPatterns =
  +    /// Partial active pattern which may be used to detect the 'empty' language.
  +    let inline (|Empty|_|) regex =
  +        match regex with
  +        | CharacterSet charSet
  +            when CharSet.isEmpty charSet ->
  +            Some ()
  +        | _ ->
  +            None
  +
  +    /// Partial active pattern which may be used to detect a pattern which matches one (1) instance of any character.
  +    let inline (|Any|_|) regex =
  +        match regex with
  +        | Negate Empty ->
  +            Some ()
  +        | _ ->
  +            None
  +
  +
   /// 'Smart' constructors for Regex.
   /// These should *always* be used to create new Regex instances because they ensure the
   /// resulting Regex is in a normal form; this is very important for minimizing the number
  
positive.code: 
  open System.Diagnostics
  open ExtCore.Control.Cps
  open ExtCore.Control.Collections
  open FSharpLex.SpecializedCollections
  
  (*  Turn off warning about uppercase variable identifiers; some variables
  
negative.code: 
              // Nested Concat patterns should skew towards the right.
              | Concat (r, s), t ->
                  return! simplifyRec <| Concat (r, Concat (s, t))
  
              | Star s, Star t
                  // The equivalence here is only an approximation.
  