public … struct ItemRef { … }; // extra info kept in separate parallel list to the references, // as this is less used as keeps cache better struct ItemExtra { … }; // tree leaf struct TLeaf { … }; // tree node struct TNode { … }; // instead of using linked list we maintain // item references (for quick lookup) PooledList … }