bugfix: a.. and ..b ranges now also include the boundary value
intelligent merging with + for inclusion and - for exclusion of subpatterns