Work on #336: use polymorphic getRegion() to support inner and outer cases.

This improves on the idea I used to implement extension of `a(`, `a{`.
It still has an off-by-one issue if brackets are next to each other,
but works in general cases. I'm experiencing lack of time ATM to fix it 
properly. If fixing the issues proves to be tough we could add
another polymorphic method to account for inner/outer differences.