This function is just a little weird – we initially plant a term for a parentheses-single, then remove & replace later in the ...End method. We could also probably stop generating the nested subpattern to the wrong place & copying out – could stack the current disjunction & generate directly into a fresh one.