TODO: document limitations

\cX
union, intersection
\p{...}
^,$
\b,\B,\A,\G,\Z,\z
possessive quantifiers: X?+
back references: \<n>, \k<name>
long escape: \Q, \E
named groups: (?<name>X)
flags: (?idmsuxU)
independent, non-capturing group: (?>X)

TODO: split classes, move into java.util.regex
TODO: use TrivialPattern