add: newElement super add: newElement. (2 to: current) reverseDo: [:i | (testBlock value: newElement value: (values at: i-1)) ifTrue: [ values at: i put: (values at: i-1) ] ifFalse: [ ^ values at: i put: newElement] ]. values at: 1 put: newElement