QUALIFIED: sets QUALIFIED: classes QUALIFIED: sequences.deep SYMBOL: +shadow+ : (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 sequences.deep:flatten ; : number-of-slots ( class -- number ) all-slots length ; : (shadowed-boa) ( class -- quot ) [ [ shadowed-slot-offsets natural-sort reverse! ] [ initial-values ] [ number-of-slots 1 - ] tri '[ 2 - [ _ nth _ ] keep - '[ [ _ ] _ ndip ] ] map concat ] [ [ ] curry ] bi compose ; MACRO: shadowed-boa ( class -- tuple ) (shadowed-boa) [ boa ] compose ; : mark-shadowed ( tuple -- 'tuple ) [ classes:class shadowed-slot-offsets +shadow+ ] [ '[ _ _ rot set-slot ] each ] [ ] tri ;