or download this
Note that capture buffers matched inside of
recursion are not accessible after the recursion
returns, so the extra layer of capturing buffers
is necessary. Thus $+{NAME_PAT} would not
be defined even though $+{NAME} would be [see example].