QUALIFIED: sets : duplicated-slots ( class -- seq ) all-slots [ name>> ] map duplicates sets:members ; : shadowed-slot-offsets ( class -- seq ) [ duplicated-slots ] [ all-slots ] bi [ [ name>> = ] with filter but-last [ offset>> ] map ] curry map ; : number-of-slots ( class -- number ) all-slots length ; : (shadowed-boa) ( class -- quot ) [ [ shadowed-slot-offsets flatten natural-sort reverse! ] [ initial-values ] [ number-of-slots 1 - ] tri '[ 2 - [ _ nth _ ] keep - '[ _ 1quotation _ ndip ] ] map concat ] [ 1quotation ] bi compose ; MACRO: shadowed-boa ( class -- tuple ) (shadowed-boa) [ boa ] compose ;