static SS gazelle_deepZip_keepBrackets(S inputA, S inputB, O... _) { SS map = gazelle_zip_keepBrackets(inputA, inputB); if (map == null) null; SS map2 = similarEmptyMap(map); for (S a, S b : map) { if (tok_isRoundOrCurlyBracketed(a) && tok_isRoundOrCurlyBracketed(b)) { S aa = tok_deRoundOrCurlyBracket(a); S bb = tok_deRoundOrCurlyBracket(b); SS subMap = gazelle_deepZip_keepBrackets(aa, bb, _); if (subMap == null) null; if (!putAllStrictlyIC(map2, subMap)) null; } else if (!strictPutIC(map2, a, b)) null; } ret map2; }