Optimization: combination of consecutive negative lookahead constructions (?!a)(?!b)(?!c) gets combined to (?!a|b|c), which is faster to process.
Optimization: combination of consecutive negative lookahead constructions (?!a)(?!b)(?!c) gets combined to (?!a|b|c), which is faster to process. This optimization should be applied before the lookarounds are expanded to intersections and differences.