This is terrible. There is no exact description. Contains ambiguities. For example: masks "[ [ ] ]" and "[ ] [ ]" are equivalent or not? Does the "[ [ ] [ ? ] [ * ] [ ] ]" mask not match the "[ seq ]" condition? "[ [ ] [ ? ][ * ] [ ] ]", "[ [ ][ ? ] [ * ][ ] ]" ?!!