[ Pi µvar: 3.14159265358979; Self makeFigure µmethod: [ x µvar: 0; y µvar: 0; self setX: newX µmethod: [ x µ<- newX; Void ]; self setY: newY µmethod: [ y µ<- newY; Void ]; Self addRadius µmethod: [ r µvar: 0; self setR: newR µmethod: [ r µ<- newR; Void ]; Self addSecondRadius µmethod: [ rr µvar: 0; self setRR: newRR µmethod: [ rr µ<- newRR; Void ]; self area µmethod: [ Pi * r * rr ]; Self addSecondRadius µmethod: [ self setRR: newRR µmethod: [ self error: "cannot set second radius" ]; self area µmethod: [ Pi * r sqr ]]; µself ]; Self addRadius µmethod: [ self setR: newR µmethod: [ self error: "cannot set radius" ]; self area µmethod: [ 0 ]]; Self addSecondRadius ]]; Figure µvar: Object makeFigure; Ellipse µvar: Figure addRadius; Circle µvar: Ellipse addSecondRadius; Point µvar: Circle addSecondRadius; P µvar: Point µclone; P setX: 0; P setY: 0; C µvar: Circle µclone; C setX: 0; C setY: 0; C setR: 1; E µvar: Ellipse µclone; E setX: 0; E setY: 0; E setR: 1; E setRR: 2; E µinspect; C µinspect; P µinspect; " area of point = " display; P area display; Eoln display; " area of circle = " display; C area display; Eoln display; " area of ellipse = " display; E area display; Eoln display ]