Here is the fileout code in Strongtalk. It is not the way we program!



Delta define: #Top as: (

(Class subclassOf: 'Object' instanceVariables: '')) !



(Delta mirrorFor: #Top) revision: '$Revision:$'!



(Delta mirrorFor: #Top) group: 'Unclassified'!



(Delta mirrorFor: #Top)

comment: 

''!



Delta define: #Middle as: (

(Class subclassOf: 'Top' instanceVariables: '')) !



(Delta mirrorFor: #Middle) revision: '$Revision:$'!



(Delta mirrorFor: #Middle) group: 'Unclassified'!



(Delta mirrorFor: #Middle)

comment: 

''!



Delta define: #Bottom as: (

(Class subclassOf: 'Middle' instanceVariables: '')) !



(Delta mirrorFor: #Bottom) revision: '$Revision:$'!



(Delta mirrorFor: #Bottom) group: 'Unclassified'!



(Delta mirrorFor: #Bottom)

comment: 

''!



Delta define: #Up as: (

(Class subclassOf: 'Object' instanceVariables: '')) !



(Delta mirrorFor: #Up) revision: '$Revision:$'!



(Delta mirrorFor: #Up) group: 'Unclassified'!



(Delta mirrorFor: #Up)

comment: 

''!



! (Delta mirrorFor: #Up) methodsFor: 'service' !





ctv: b ^

Transcript show: 'Up';cr.

 ^'Up'. !



cv: t ^

Transcript show: 'Up';cr.

 ^'Up'. 

!



inv: m ^

Transcript show: 'Up';cr.

 ^'Up'. ! !



Delta define: #Down as: (

(Class subclassOf: 'Up' instanceVariables: '')) !



(Delta mirrorFor: #Down) revision: '$Revision:$'!



(Delta mirrorFor: #Down) group: 'Unclassified'!



(Delta mirrorFor: #Down)

comment: 

''!



! (Delta mirrorFor: #Down) methodsFor: 'service' !





ctv: m ^

Transcript show: 'Down';cr.

 ^'Down'. !



inv: m ^

Transcript show: 'Down';cr.

 ^'Down'. ! !



Delta define: #Client as: (

(Class subclassOf: 'Object' instanceVariables: '')) !



(Delta mirrorFor: #Client) revision: '$Revision:$'!



(Delta mirrorFor: #Client) group: 'Unclassified'!



(Delta mirrorFor: #Client)

comment: 

''!



! (Delta mirrorFor: #Client) methodsFor: 'service' !





cocon



| u  d  ud  |



u := Up new.

d := Down new.

ud := Down new.

Transcript show: '-- first column ';cr.

u cv: Top new.

u cv: Middle new.

u cv: Bottom new.

Transcript show: 'u inv: Top new. Type of actual argument 1 (Top) is not a subtype of formal argument type Middle';cr.

u inv: Middle new.

u inv: Bottom new.

Transcript show: 'u ctv: Top new. Type of actual argument 1 (Top) is not a subtype of formal argument type Bottom';cr. 

Transcript show: 'u ctv: Middle new. Type of actual argument 1 (Middle) is not a subtype of formal argument type Bottom';cr.  

u ctv: Bottom new.

Transcript show: '-- second column ';cr.

d cv: Top new. "Transcript show: '!!!! d cv: Top new. Type of actual argument 1 (Top) is not a subtype of formal argument type Middle';cr. "

d cv: Middle new.

d cv: Bottom new.

Transcript show: 'd inv: Top new. Type of actual argument 1 (Top) is not a subtype of formal argument type Middle';cr.

d inv: Middle new.

d inv: Bottom new.

Transcript show: 'd ctv: Top new. Type of actual argument 1 (Top) is not a subtype of formal argument type Bottom';cr. 

d ctv: Middle new.

d ctv: Bottom new.

Transcript show: '-- third column ';cr.

ud cv: Top new.

ud cv: Middle new.

ud cv: Bottom new.

Transcript show: 'ud inv: Top new. Type of actual argument 1 (Top) is not a subtype of formal argument type Middle';cr.

ud inv: Middle new.

ud inv: Bottom new.

Transcript show: 'ud ctv: Top new. Type of actual argument 1 (Top) is not a subtype of formal argument type Bottom';cr. 

Transcript show: 'ud ctv: Middle new. Type of actual argument 1 (Middle) is not a subtype of formal argument type Bottom';cr.

ud ctv: Bottom new.! !



-- run

-- first column 

Up

Up

Up

u inv: Top new. Type of actual argument 1 (Top) is not a subtype of formal argument type Middle

Up

Up

u ctv: Top new. Type of actual argument 1 (Top) is not a subtype of formal argument type Bottom

u ctv: Middle new. Type of actual argument 1 (Middle) is not a subtype of formal argument type Bottom

Up

-- second column 

Up

Up

Up

d inv: Top new. Type of actual argument 1 (Top) is not a subtype of formal argument type Middle

Down

Down

d ctv: Top new. Type of actual argument 1 (Top) is not a subtype of formal argument type Bottom

Down

Down

-- third column 

Up

Up

Up

ud inv: Top new. Type of actual argument 1 (Top) is not a subtype of formal argument type Middle

Down

Down

ud ctv: Top new. Type of actual argument 1 (Top) is not a subtype of formal argument type Bottom

ud ctv: Middle new. Type of actual argument 1 (Middle) is not a subtype of formal argument type Bottom

Down