+-------------------------+ | Traversal | +-------------------------+ | boolean isEmpty() | | T getFirst() | | Traversal getRest() | +-------------------------+ / \ / \ --- --- | | +------------+ +------------------+ | IList |<-+ | +------------+ | +---------------------------------------------------+ / \ | | ArrLT | --- +-------------+ +---------------------------------------------------+ | | | ArrayList arrlist | ------------------- | | int first | | | | +---------------------------------------------------+ +-----------+ +----------------+ | | public ArrLT(ArrayList arrlist) | | MTList | | ConsList | | | private ArrLT(ArrayList arrlist, int first) | +-----------+ +----------------+ | +---------------------------------------------------+ | T first | | | IList rest |-+ +----------------+ +----------------------------------------------------+ | Algorithms | +-----------------------------+ +----------------------------------------------------+ | ISelect | | boolean contains(Traversal tr, ISelect pick) | +-----------------------------+ | int countSuch(Traversal tr, ISelect pick) | | boolean select(T t) | +----------------------------------------------------+ +-----------------------------+ / \ / \ --- --- | | +---------------------------+ +---------------------------+ | | | | | RedBalloon | | SmallBalloon | +---------------------------+ +---------------------------+ | boolean select(Balloon b) | | boolean select(Balloon b) | +---------------------------+ +---------------------------+ +---------- | Examples +-------------- | Traversal blist: ConsList | ... | ISelect redBalloon: RedBalloon ... | Algorithms algo: Algorithms |...................... | algo.contains(blist, redBalloon) -> boolean | ...