(define (class-name parameters) (let ((super (new-part super-class-name some-parameters)) (self 'nil)) (let ((instance-variable init-value) ...) (define (method parameter-list) method-body) ... (define (set-self! object-part) (set! self object-part) (send 'set-self! super object-part)) (define (dispatch message) (cond ((eqv? message 'selector) method) ... ((eqv? message 'set-self) set-self!) (else (method-lookup super message)))) (set! self dispatch)) self))