enumer gen object set re hash set model facad generaliz element object cl accumul descend cl re collect enumer re 