private int insertRecursive(PlanNode node) { if (node instanceof GroupReference) { return ((GroupReference) node).getGroupId(); } int group = nextGroupId(); PlanNode rewritten = insertChildrenAndRewrite(node); groups.put(group, Group.withMember(rewritten)); incrementReferenceCounts(rewritten, group); return group; }