anchor.diff:          | regex, Epsilon
           | Epsilon, regex ->
               return regex
  -        | CharacterSet charSet, _
  -        | _, CharacterSet charSet
  -            when CharSet.isEmpty charSet ->
  +
  +        | Empty, _
  +        | _, Empty ->
               return empty
   
           // Nested Concat patterns should skew towards the right.
  
positive.code:     let rec private andImpl (regex1 : Regex) (regex2 : Regex) =
          cont {
          match regex1, regex2 with
          | CharacterSet charSet, _
          | _, CharacterSet charSet
              when CharSet.isEmpty charSet ->
              return empty
  
          | CharacterSet charSet1, CharacterSet charSet2 ->
              return
                  CharSet.intersect charSet1 charSet2
                  |> CharacterSet
  
          | Any, regex
          | regex, Any ->
  
negative.code:         | _ ->
              false
  
      /// Partial active pattern which may be used to detect the 'empty' language.
      let inline private (|Empty|_|) regex =
          match regex with
          | CharacterSet charSet
              when CharSet.isEmpty charSet ->
              Some ()
          | _ ->
              None
  
      /// Returns a new regular expression which matches exactly one (1) instance of the specified character.
      [<CompiledName("OfCharacter")>]
      let inline ofChar c =
  