|  | @@ -263,7 +263,7 @@ var self=this;
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  |  return $core.withContext(function($ctx1) {
 | 
	
		
			
				|  |  |  //>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | -var $1,$2,$3,$4,$5;
 | 
	
		
			
				|  |  | +var $1,$2,$3,$4;
 | 
	
		
			
				|  |  |  $recv(aStream)._print_($recv(aClass)._superclass());
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  |  $ctx1.sendIdx["print:"]=1;
 | 
	
	
		
			
				|  | @@ -277,37 +277,13 @@ $1=$recv(aStream)._lf();
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  |  $ctx1.sendIdx["lf"]=1;
 | 
	
		
			
				|  |  |  //>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | -$recv($recv(aClass)._traitComposition())._ifNotEmpty_((function(){
 | 
	
		
			
				|  |  | -//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -return $core.withContext(function($ctx2) {
 | 
	
		
			
				|  |  | -//>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | -$recv(aStream)._tab();
 | 
	
		
			
				|  |  | -//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -$ctx2.sendIdx["tab"]=1;
 | 
	
		
			
				|  |  | -//>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | -$recv(aStream)._write_($recv(aClass)._usesDefinition());
 | 
	
		
			
				|  |  | -//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -$ctx2.sendIdx["write:"]=2;
 | 
	
		
			
				|  |  | -//>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | -$2=$recv(aStream)._lf();
 | 
	
		
			
				|  |  | -//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -$ctx2.sendIdx["lf"]=2;
 | 
	
		
			
				|  |  | -//>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | -return $2;
 | 
	
		
			
				|  |  | -//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
 | 
	
		
			
				|  |  | -//>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | -}));
 | 
	
		
			
				|  |  | -//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -$ctx1.sendIdx["ifNotEmpty:"]=1;
 | 
	
		
			
				|  |  | -//>>excludeEnd("ctx");
 | 
	
		
			
				|  |  |  $recv(aStream)._tab();
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -$ctx1.sendIdx["tab"]=2;
 | 
	
		
			
				|  |  | +$ctx1.sendIdx["tab"]=1;
 | 
	
		
			
				|  |  |  //>>excludeEnd("ctx");
 | 
	
		
			
				|  |  |  $recv(aStream)._write_("instanceVariableNames: ");
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -$ctx1.sendIdx["write:"]=3;
 | 
	
		
			
				|  |  | +$ctx1.sendIdx["write:"]=2;
 | 
	
		
			
				|  |  |  //>>excludeEnd("ctx");
 | 
	
		
			
				|  |  |  $recv(aStream)._print_(" "._join_($recv(aClass)._instanceVariableNames()));
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
	
		
			
				|  | @@ -315,12 +291,12 @@ $ctx1.sendIdx["print:"]=2;
 | 
	
		
			
				|  |  |  //>>excludeEnd("ctx");
 | 
	
		
			
				|  |  |  $recv(aStream)._lf();
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -$ctx1.sendIdx["lf"]=3;
 | 
	
		
			
				|  |  | +$ctx1.sendIdx["lf"]=2;
 | 
	
		
			
				|  |  |  //>>excludeEnd("ctx");
 | 
	
		
			
				|  |  |  $recv(aStream)._tab();
 | 
	
		
			
				|  |  |  $recv(aStream)._write_("package: ");
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -$ctx1.sendIdx["write:"]=4;
 | 
	
		
			
				|  |  | +$ctx1.sendIdx["write:"]=3;
 | 
	
		
			
				|  |  |  //>>excludeEnd("ctx");
 | 
	
		
			
				|  |  |  $recv(aStream)._print_($recv(aClass)._category());
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
	
		
			
				|  | @@ -328,41 +304,41 @@ $ctx1.sendIdx["print:"]=3;
 | 
	
		
			
				|  |  |  //>>excludeEnd("ctx");
 | 
	
		
			
				|  |  |  $recv(aStream)._write_("!");
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -$ctx1.sendIdx["write:"]=5;
 | 
	
		
			
				|  |  | +$ctx1.sendIdx["write:"]=4;
 | 
	
		
			
				|  |  |  //>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | -$3=$recv(aStream)._lf();
 | 
	
		
			
				|  |  | +$2=$recv(aStream)._lf();
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -$ctx1.sendIdx["lf"]=4;
 | 
	
		
			
				|  |  | +$ctx1.sendIdx["lf"]=3;
 | 
	
		
			
				|  |  |  //>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | -$4=$recv(aClass)._comment();
 | 
	
		
			
				|  |  | +$3=$recv(aClass)._comment();
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  |  $ctx1.sendIdx["comment"]=1;
 | 
	
		
			
				|  |  |  //>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | -$recv($4)._ifNotEmpty_((function(){
 | 
	
		
			
				|  |  | +$recv($3)._ifNotEmpty_((function(){
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  |  return $core.withContext(function($ctx2) {
 | 
	
		
			
				|  |  |  //>>excludeEnd("ctx");
 | 
	
		
			
				|  |  |  $recv(aStream)._write_("!");
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -$ctx2.sendIdx["write:"]=6;
 | 
	
		
			
				|  |  | +$ctx2.sendIdx["write:"]=5;
 | 
	
		
			
				|  |  |  //>>excludeEnd("ctx");
 | 
	
		
			
				|  |  |  $recv(aStream)._print_(aClass);
 | 
	
		
			
				|  |  |  $recv(aStream)._write_(" commentStamp!");
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -$ctx2.sendIdx["write:"]=7;
 | 
	
		
			
				|  |  | +$ctx2.sendIdx["write:"]=6;
 | 
	
		
			
				|  |  |  //>>excludeEnd("ctx");
 | 
	
		
			
				|  |  |  $recv(aStream)._lf();
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -$ctx2.sendIdx["lf"]=5;
 | 
	
		
			
				|  |  | +$ctx2.sendIdx["lf"]=4;
 | 
	
		
			
				|  |  |  //>>excludeEnd("ctx");
 | 
	
		
			
				|  |  |  $recv(aStream)._write_([self._chunkEscape_($recv(aClass)._comment()),"!"]);
 | 
	
		
			
				|  |  | -$5=$recv(aStream)._lf();
 | 
	
		
			
				|  |  | +$4=$recv(aStream)._lf();
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -$ctx2.sendIdx["lf"]=6;
 | 
	
		
			
				|  |  | +$ctx2.sendIdx["lf"]=5;
 | 
	
		
			
				|  |  |  //>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | -return $5;
 | 
	
		
			
				|  |  | +return $4;
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
 | 
	
		
			
				|  |  | +}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
 | 
	
		
			
				|  |  |  //>>excludeEnd("ctx");
 | 
	
		
			
				|  |  |  }));
 | 
	
		
			
				|  |  |  $recv(aStream)._lf();
 | 
	
	
		
			
				|  | @@ -373,10 +349,10 @@ return self;
 | 
	
		
			
				|  |  |  },
 | 
	
		
			
				|  |  |  //>>excludeStart("ide", pragmas.excludeIdeData);
 | 
	
		
			
				|  |  |  args: ["aClass", "aStream"],
 | 
	
		
			
				|  |  | -source: "exportDefinitionOf: aClass on: aStream\x0a\x09\x22Chunk format.\x22\x0a\x0a\x09aStream\x0a\x09\x09print: aClass superclass;\x0a\x09\x09write: ' subclass: ';\x0a\x09\x09printSymbol: aClass name;\x0a\x09\x09lf.\x0a\x09aClass traitComposition\x0a\x09\x09ifNotEmpty: [ aStream tab; write: aClass usesDefinition; lf ].\x0a\x09aStream\x0a\x09\x09tab;\x0a\x09\x09write: 'instanceVariableNames: ';\x0a\x09\x09print: (' ' join: aClass instanceVariableNames);\x0a\x09\x09lf;\x0a\x09\x09tab;\x0a\x09\x09write: 'package: ';\x0a\x09\x09print: aClass category;\x0a\x09\x09write: '!';\x0a\x09\x09lf.\x0a\x09aClass comment ifNotEmpty: [ aStream\x0a\x09\x09write: '!'; print: aClass; write: ' commentStamp!'; lf;\x0a\x09\x09write: { self chunkEscape: aClass comment. '!' }; lf ].\x0a\x09aStream lf",
 | 
	
		
			
				|  |  | +source: "exportDefinitionOf: aClass on: aStream\x0a\x09\x22Chunk format.\x22\x0a\x0a\x09aStream\x0a\x09\x09print: aClass superclass;\x0a\x09\x09write: ' subclass: ';\x0a\x09\x09printSymbol: aClass name;\x0a\x09\x09lf.\x0a\x09\x22aClass traitComposition\x0a\x09\x09ifNotEmpty: [ aStream tab; write: {'uses: '. aClass traitCompositionDefinition}; lf ].\x22\x0a\x09aStream\x0a\x09\x09tab;\x0a\x09\x09write: 'instanceVariableNames: ';\x0a\x09\x09print: (' ' join: aClass instanceVariableNames);\x0a\x09\x09lf;\x0a\x09\x09tab;\x0a\x09\x09write: 'package: ';\x0a\x09\x09print: aClass category;\x0a\x09\x09write: '!';\x0a\x09\x09lf.\x0a\x09aClass comment ifNotEmpty: [ aStream\x0a\x09\x09write: '!'; print: aClass; write: ' commentStamp!'; lf;\x0a\x09\x09write: { self chunkEscape: aClass comment. '!' }; lf ].\x0a\x09aStream lf",
 | 
	
		
			
				|  |  |  referencedClasses: [],
 | 
	
		
			
				|  |  |  //>>excludeEnd("ide");
 | 
	
		
			
				|  |  | -messageSends: ["print:", "superclass", "write:", "printSymbol:", "name", "lf", "ifNotEmpty:", "traitComposition", "tab", "usesDefinition", "join:", "instanceVariableNames", "category", "comment", "chunkEscape:"]
 | 
	
		
			
				|  |  | +messageSends: ["print:", "superclass", "write:", "printSymbol:", "name", "lf", "tab", "join:", "instanceVariableNames", "category", "ifNotEmpty:", "comment", "chunkEscape:"]
 | 
	
		
			
				|  |  |  }),
 | 
	
		
			
				|  |  |  $globals.ChunkExporter);
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -390,77 +366,29 @@ var classIvars,classTraitComposition;
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  |  return $core.withContext(function($ctx1) {
 | 
	
		
			
				|  |  |  //>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | -var $1,$2,$4,$3;
 | 
	
		
			
				|  |  | +var $1,$2;
 | 
	
		
			
				|  |  |  $1=$recv(aClass)._class();
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  |  $ctx1.sendIdx["class"]=1;
 | 
	
		
			
				|  |  |  //>>excludeEnd("ctx");
 | 
	
		
			
				|  |  |  classIvars=$recv($1)._instanceVariableNames();
 | 
	
		
			
				|  |  | -$2=$recv(aClass)._class();
 | 
	
		
			
				|  |  | -//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -$ctx1.sendIdx["class"]=2;
 | 
	
		
			
				|  |  | -//>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | -classTraitComposition=$recv($2)._traitComposition();
 | 
	
		
			
				|  |  | -$4=$recv(classIvars)._notEmpty();
 | 
	
		
			
				|  |  | -//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -$ctx1.sendIdx["notEmpty"]=1;
 | 
	
		
			
				|  |  | -//>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | -$3=$recv($4)._or_((function(){
 | 
	
		
			
				|  |  | -//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -return $core.withContext(function($ctx2) {
 | 
	
		
			
				|  |  | -//>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | -return $recv(classTraitComposition)._notEmpty();
 | 
	
		
			
				|  |  | -//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
 | 
	
		
			
				|  |  | -//>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | -}));
 | 
	
		
			
				|  |  | -if($core.assert($3)){
 | 
	
		
			
				|  |  | +classTraitComposition=$recv($recv(aClass)._class())._traitComposition();
 | 
	
		
			
				|  |  | +$2=$recv(classIvars)._notEmpty();
 | 
	
		
			
				|  |  | +if($core.assert($2)){
 | 
	
		
			
				|  |  |  $recv(aStream)._print_($recv(aClass)._theMetaClass());
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  |  $ctx1.sendIdx["print:"]=1;
 | 
	
		
			
				|  |  |  //>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | -$recv(classTraitComposition)._ifEmpty_ifNotEmpty_((function(){
 | 
	
		
			
				|  |  | -//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -return $core.withContext(function($ctx2) {
 | 
	
		
			
				|  |  | -//>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | -return $recv(aStream)._space();
 | 
	
		
			
				|  |  | -//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -}, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
 | 
	
		
			
				|  |  | -//>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | -}),(function(){
 | 
	
		
			
				|  |  | -//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -return $core.withContext(function($ctx2) {
 | 
	
		
			
				|  |  | -//>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | -$recv(aStream)._lf();
 | 
	
		
			
				|  |  | -//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -$ctx2.sendIdx["lf"]=1;
 | 
	
		
			
				|  |  | -//>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | -$recv(aStream)._tab();
 | 
	
		
			
				|  |  | -//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -$ctx2.sendIdx["tab"]=1;
 | 
	
		
			
				|  |  | -//>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | -$recv(aStream)._write_($recv($recv(aClass)._class())._usesDefinition());
 | 
	
		
			
				|  |  | -//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -$ctx2.sendIdx["write:"]=1;
 | 
	
		
			
				|  |  | -//>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | -$recv(aStream)._lf();
 | 
	
		
			
				|  |  | -//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -$ctx2.sendIdx["lf"]=2;
 | 
	
		
			
				|  |  | -//>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | -return $recv(aStream)._tab();
 | 
	
		
			
				|  |  | -//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -}, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)});
 | 
	
		
			
				|  |  | -//>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | -}));
 | 
	
		
			
				|  |  | +$recv(aStream)._space();
 | 
	
		
			
				|  |  |  $recv(aStream)._write_("instanceVariableNames: ");
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -$ctx1.sendIdx["write:"]=2;
 | 
	
		
			
				|  |  | +$ctx1.sendIdx["write:"]=1;
 | 
	
		
			
				|  |  |  //>>excludeEnd("ctx");
 | 
	
		
			
				|  |  |  $recv(aStream)._print_(" "._join_(classIvars));
 | 
	
		
			
				|  |  |  $recv(aStream)._write_("!");
 | 
	
		
			
				|  |  |  $recv(aStream)._lf();
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -$ctx1.sendIdx["lf"]=3;
 | 
	
		
			
				|  |  | +$ctx1.sendIdx["lf"]=1;
 | 
	
		
			
				|  |  |  //>>excludeEnd("ctx");
 | 
	
		
			
				|  |  |  $recv(aStream)._lf();
 | 
	
		
			
				|  |  |  }
 | 
	
	
		
			
				|  | @@ -471,10 +399,10 @@ return self;
 | 
	
		
			
				|  |  |  },
 | 
	
		
			
				|  |  |  //>>excludeStart("ide", pragmas.excludeIdeData);
 | 
	
		
			
				|  |  |  args: ["aClass", "aStream"],
 | 
	
		
			
				|  |  | -source: "exportMetaDefinitionOf: aClass on: aStream\x0a\x0a\x09| classIvars classTraitComposition |\x0a\x09classIvars := aClass class instanceVariableNames.\x0a\x09classTraitComposition := aClass class traitComposition.\x0a\x0a\x09(classIvars notEmpty or: [classTraitComposition notEmpty]) ifTrue: [\x0a\x09\x09aStream\x0a\x09\x09\x09print: aClass theMetaClass.\x0a\x09\x09classTraitComposition\x0a\x09\x09\x09ifEmpty: [ aStream space ]\x0a\x09\x09\x09ifNotEmpty: [ aStream lf; tab; write: aClass class usesDefinition; lf; tab ].\x0a\x09\x09aStream\x0a\x09\x09\x09write: 'instanceVariableNames: ';\x0a\x09\x09\x09print: (' ' join: classIvars);\x0a\x09\x09\x09write: '!'; lf; lf ]",
 | 
	
		
			
				|  |  | +source: "exportMetaDefinitionOf: aClass on: aStream\x0a\x0a\x09| classIvars classTraitComposition |\x0a\x09classIvars := aClass class instanceVariableNames.\x0a\x09classTraitComposition := aClass class traitComposition.\x0a\x0a\x09(classIvars notEmpty \x22or: [classTraitComposition notEmpty]\x22) ifTrue: [\x0a\x09\x09aStream\x0a\x09\x09\x09print: aClass theMetaClass.\x0a\x09\x09aStream space. \x22classTraitComposition\x0a\x09\x09\x09ifEmpty: [ aStream space ]\x0a\x09\x09\x09ifNotEmpty: [ aStream lf; tab; write: {'uses: '. aClass class traitCompositionDefinition}; lf; tab ].\x22\x0a\x09\x09aStream\x0a\x09\x09\x09write: 'instanceVariableNames: ';\x0a\x09\x09\x09print: (' ' join: classIvars);\x0a\x09\x09\x09write: '!'; lf; lf ]",
 | 
	
		
			
				|  |  |  referencedClasses: [],
 | 
	
		
			
				|  |  |  //>>excludeEnd("ide");
 | 
	
		
			
				|  |  | -messageSends: ["instanceVariableNames", "class", "traitComposition", "ifTrue:", "or:", "notEmpty", "print:", "theMetaClass", "ifEmpty:ifNotEmpty:", "space", "lf", "tab", "write:", "usesDefinition", "join:"]
 | 
	
		
			
				|  |  | +messageSends: ["instanceVariableNames", "class", "traitComposition", "ifTrue:", "notEmpty", "print:", "theMetaClass", "space", "write:", "join:", "lf"]
 | 
	
		
			
				|  |  |  }),
 | 
	
		
			
				|  |  |  $globals.ChunkExporter);
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -547,6 +475,7 @@ return self._exportBehavior_on_(meta,aStream);
 | 
	
		
			
				|  |  |  }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
 | 
	
		
			
				|  |  |  //>>excludeEnd("ctx");
 | 
	
		
			
				|  |  |  }));
 | 
	
		
			
				|  |  | +self._exportPackageTraitCompositionsOf_on_(aPackage,aStream);
 | 
	
		
			
				|  |  |  self._exportProtocols_on_(self._extensionProtocolsOfPackage_(aPackage),aStream);
 | 
	
		
			
				|  |  |  return self;
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
	
		
			
				|  | @@ -555,10 +484,10 @@ return self;
 | 
	
		
			
				|  |  |  },
 | 
	
		
			
				|  |  |  //>>excludeStart("ide", pragmas.excludeIdeData);
 | 
	
		
			
				|  |  |  args: ["aPackage", "aStream"],
 | 
	
		
			
				|  |  | -source: "exportPackage: aPackage on: aStream\x0a\x0a\x09self\x0a\x09\x09exportPackageDefinitionOf: aPackage on: aStream;\x0a\x09\x09exportPackageImportsOf: aPackage on: aStream.\x0a\x09\x0a\x09aPackage sortedClasses do: [ :each |\x0a\x09\x09self exportBehavior: each on: aStream.\x0a\x09\x09each theMetaClass ifNotNil: [ :meta | self exportBehavior: meta on: aStream ] ].\x0a\x09\x0a\x09self \x0a\x09\x09exportProtocols: (self extensionProtocolsOfPackage: aPackage)\x0a\x09\x09on: aStream",
 | 
	
		
			
				|  |  | +source: "exportPackage: aPackage on: aStream\x0a\x0a\x09self\x0a\x09\x09exportPackageDefinitionOf: aPackage on: aStream;\x0a\x09\x09exportPackageImportsOf: aPackage on: aStream.\x0a\x09\x0a\x09aPackage sortedClasses do: [ :each |\x0a\x09\x09self exportBehavior: each on: aStream.\x0a\x09\x09each theMetaClass ifNotNil: [ :meta | self exportBehavior: meta on: aStream ] ].\x0a\x09\x0a\x09self exportPackageTraitCompositionsOf: aPackage on: aStream.\x0a\x0a\x09self \x0a\x09\x09exportProtocols: (self extensionProtocolsOfPackage: aPackage)\x0a\x09\x09on: aStream",
 | 
	
		
			
				|  |  |  referencedClasses: [],
 | 
	
		
			
				|  |  |  //>>excludeEnd("ide");
 | 
	
		
			
				|  |  | -messageSends: ["exportPackageDefinitionOf:on:", "exportPackageImportsOf:on:", "do:", "sortedClasses", "exportBehavior:on:", "ifNotNil:", "theMetaClass", "exportProtocols:on:", "extensionProtocolsOfPackage:"]
 | 
	
		
			
				|  |  | +messageSends: ["exportPackageDefinitionOf:on:", "exportPackageImportsOf:on:", "do:", "sortedClasses", "exportBehavior:on:", "ifNotNil:", "theMetaClass", "exportPackageTraitCompositionsOf:on:", "exportProtocols:on:", "extensionProtocolsOfPackage:"]
 | 
	
		
			
				|  |  |  }),
 | 
	
		
			
				|  |  |  $globals.ChunkExporter);
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -630,6 +559,52 @@ messageSends: ["ifNotEmpty:", "imports", "write:", "print:", "name", "chunkEscap
 | 
	
		
			
				|  |  |  }),
 | 
	
		
			
				|  |  |  $globals.ChunkExporter);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +$core.addMethod(
 | 
	
		
			
				|  |  | +$core.method({
 | 
	
		
			
				|  |  | +selector: "exportPackageTraitCompositionsOf:on:",
 | 
	
		
			
				|  |  | +protocol: "output",
 | 
	
		
			
				|  |  | +fn: function (aPackage,aStream){
 | 
	
		
			
				|  |  | +var self=this;
 | 
	
		
			
				|  |  | +//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | +return $core.withContext(function($ctx1) {
 | 
	
		
			
				|  |  | +//>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | +$recv($recv(aPackage)._traitCompositions())._ifNotEmpty_((function(traitCompositions){
 | 
	
		
			
				|  |  | +//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | +return $core.withContext(function($ctx2) {
 | 
	
		
			
				|  |  | +//>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | +$recv(traitCompositions)._keysAndValuesDo_((function(key,value){
 | 
	
		
			
				|  |  | +//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | +return $core.withContext(function($ctx3) {
 | 
	
		
			
				|  |  | +//>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | +return self._exportTraitComposition_of_on_(value,key,aStream);
 | 
	
		
			
				|  |  | +//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | +}, function($ctx3) {$ctx3.fillBlock({key:key,value:value},$ctx2,2)});
 | 
	
		
			
				|  |  | +//>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | +}));
 | 
	
		
			
				|  |  | +$recv(aStream)._write_("! !");
 | 
	
		
			
				|  |  | +$recv(aStream)._lf();
 | 
	
		
			
				|  |  | +//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | +$ctx2.sendIdx["lf"]=1;
 | 
	
		
			
				|  |  | +//>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | +return $recv(aStream)._lf();
 | 
	
		
			
				|  |  | +//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | +}, function($ctx2) {$ctx2.fillBlock({traitCompositions:traitCompositions},$ctx1,1)});
 | 
	
		
			
				|  |  | +//>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | +}));
 | 
	
		
			
				|  |  | +return self;
 | 
	
		
			
				|  |  | +//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | +}, function($ctx1) {$ctx1.fill(self,"exportPackageTraitCompositionsOf:on:",{aPackage:aPackage,aStream:aStream},$globals.ChunkExporter)});
 | 
	
		
			
				|  |  | +//>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | +},
 | 
	
		
			
				|  |  | +//>>excludeStart("ide", pragmas.excludeIdeData);
 | 
	
		
			
				|  |  | +args: ["aPackage", "aStream"],
 | 
	
		
			
				|  |  | +source: "exportPackageTraitCompositionsOf: aPackage on: aStream\x0a\x09aPackage traitCompositions ifNotEmpty: [ :traitCompositions |\x0a\x09\x09traitCompositions keysAndValuesDo: [ :key :value | self exportTraitComposition: value of: key on: aStream ].\x0a\x09\x09aStream write: '! !'; lf; lf ]",
 | 
	
		
			
				|  |  | +referencedClasses: [],
 | 
	
		
			
				|  |  | +//>>excludeEnd("ide");
 | 
	
		
			
				|  |  | +messageSends: ["ifNotEmpty:", "traitCompositions", "keysAndValuesDo:", "exportTraitComposition:of:on:", "write:", "lf"]
 | 
	
		
			
				|  |  | +}),
 | 
	
		
			
				|  |  | +$globals.ChunkExporter);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  $core.addMethod(
 | 
	
		
			
				|  |  |  $core.method({
 | 
	
		
			
				|  |  |  selector: "exportProtocol:on:",
 | 
	
	
		
			
				|  | @@ -772,51 +747,61 @@ $globals.ChunkExporter);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  $core.addMethod(
 | 
	
		
			
				|  |  |  $core.method({
 | 
	
		
			
				|  |  | -selector: "exportTraitDefinitionOf:on:",
 | 
	
		
			
				|  |  | +selector: "exportTraitComposition:of:on:",
 | 
	
		
			
				|  |  |  protocol: "output",
 | 
	
		
			
				|  |  | -fn: function (aClass,aStream){
 | 
	
		
			
				|  |  | +fn: function (aTraitComposition,aBehavior,aStream){
 | 
	
		
			
				|  |  |  var self=this;
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  |  return $core.withContext(function($ctx1) {
 | 
	
		
			
				|  |  |  //>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | -var $1,$2,$3,$4,$5;
 | 
	
		
			
				|  |  | -$recv(aStream)._write_("Trait named: ");
 | 
	
		
			
				|  |  | +$recv(aStream)._print_(aBehavior);
 | 
	
		
			
				|  |  | +$recv(aStream)._write_(" setTraitComposition: ");
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  |  $ctx1.sendIdx["write:"]=1;
 | 
	
		
			
				|  |  |  //>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | -$recv(aStream)._printSymbol_($recv(aClass)._name());
 | 
	
		
			
				|  |  | -$1=$recv(aStream)._lf();
 | 
	
		
			
				|  |  | -//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -$ctx1.sendIdx["lf"]=1;
 | 
	
		
			
				|  |  | -//>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | -$recv($recv(aClass)._traitComposition())._ifNotEmpty_((function(){
 | 
	
		
			
				|  |  | -//>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -return $core.withContext(function($ctx2) {
 | 
	
		
			
				|  |  | -//>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | -$recv(aStream)._tab();
 | 
	
		
			
				|  |  | +$recv(aStream)._write_($recv(aBehavior)._traitCompositionDefinition());
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -$ctx2.sendIdx["tab"]=1;
 | 
	
		
			
				|  |  | +$ctx1.sendIdx["write:"]=2;
 | 
	
		
			
				|  |  |  //>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | -$recv(aStream)._write_($recv(aClass)._usesDefinition());
 | 
	
		
			
				|  |  | +$recv(aStream)._write_(" asTraitComposition!");
 | 
	
		
			
				|  |  | +$recv(aStream)._lf();
 | 
	
		
			
				|  |  | +return self;
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -$ctx2.sendIdx["write:"]=2;
 | 
	
		
			
				|  |  | +}, function($ctx1) {$ctx1.fill(self,"exportTraitComposition:of:on:",{aTraitComposition:aTraitComposition,aBehavior:aBehavior,aStream:aStream},$globals.ChunkExporter)});
 | 
	
		
			
				|  |  |  //>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | -$2=$recv(aStream)._lf();
 | 
	
		
			
				|  |  | +},
 | 
	
		
			
				|  |  | +//>>excludeStart("ide", pragmas.excludeIdeData);
 | 
	
		
			
				|  |  | +args: ["aTraitComposition", "aBehavior", "aStream"],
 | 
	
		
			
				|  |  | +source: "exportTraitComposition: aTraitComposition of: aBehavior on: aStream\x0a\x09aStream \x0a\x09\x09print: aBehavior;\x0a\x09\x09write: ' setTraitComposition: ';\x0a\x09\x09write: aBehavior traitCompositionDefinition;\x0a\x09\x09write: ' asTraitComposition!';\x0a\x09\x09lf",
 | 
	
		
			
				|  |  | +referencedClasses: [],
 | 
	
		
			
				|  |  | +//>>excludeEnd("ide");
 | 
	
		
			
				|  |  | +messageSends: ["print:", "write:", "traitCompositionDefinition", "lf"]
 | 
	
		
			
				|  |  | +}),
 | 
	
		
			
				|  |  | +$globals.ChunkExporter);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +$core.addMethod(
 | 
	
		
			
				|  |  | +$core.method({
 | 
	
		
			
				|  |  | +selector: "exportTraitDefinitionOf:on:",
 | 
	
		
			
				|  |  | +protocol: "output",
 | 
	
		
			
				|  |  | +fn: function (aClass,aStream){
 | 
	
		
			
				|  |  | +var self=this;
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -$ctx2.sendIdx["lf"]=2;
 | 
	
		
			
				|  |  | +return $core.withContext(function($ctx1) {
 | 
	
		
			
				|  |  |  //>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | -return $2;
 | 
	
		
			
				|  |  | +var $1,$2,$3,$4;
 | 
	
		
			
				|  |  | +$recv(aStream)._write_("Trait named: ");
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
 | 
	
		
			
				|  |  | +$ctx1.sendIdx["write:"]=1;
 | 
	
		
			
				|  |  |  //>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | -}));
 | 
	
		
			
				|  |  | +$recv(aStream)._printSymbol_($recv(aClass)._name());
 | 
	
		
			
				|  |  | +$1=$recv(aStream)._lf();
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -$ctx1.sendIdx["ifNotEmpty:"]=1;
 | 
	
		
			
				|  |  | +$ctx1.sendIdx["lf"]=1;
 | 
	
		
			
				|  |  |  //>>excludeEnd("ctx");
 | 
	
		
			
				|  |  |  $recv(aStream)._tab();
 | 
	
		
			
				|  |  |  $recv(aStream)._write_("package: ");
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -$ctx1.sendIdx["write:"]=3;
 | 
	
		
			
				|  |  | +$ctx1.sendIdx["write:"]=2;
 | 
	
		
			
				|  |  |  //>>excludeEnd("ctx");
 | 
	
		
			
				|  |  |  $recv(aStream)._print_($recv(aClass)._category());
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
	
		
			
				|  | @@ -824,41 +809,41 @@ $ctx1.sendIdx["print:"]=1;
 | 
	
		
			
				|  |  |  //>>excludeEnd("ctx");
 | 
	
		
			
				|  |  |  $recv(aStream)._write_("!");
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -$ctx1.sendIdx["write:"]=4;
 | 
	
		
			
				|  |  | +$ctx1.sendIdx["write:"]=3;
 | 
	
		
			
				|  |  |  //>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | -$3=$recv(aStream)._lf();
 | 
	
		
			
				|  |  | +$2=$recv(aStream)._lf();
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -$ctx1.sendIdx["lf"]=3;
 | 
	
		
			
				|  |  | +$ctx1.sendIdx["lf"]=2;
 | 
	
		
			
				|  |  |  //>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | -$4=$recv(aClass)._comment();
 | 
	
		
			
				|  |  | +$3=$recv(aClass)._comment();
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  |  $ctx1.sendIdx["comment"]=1;
 | 
	
		
			
				|  |  |  //>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | -$recv($4)._ifNotEmpty_((function(){
 | 
	
		
			
				|  |  | +$recv($3)._ifNotEmpty_((function(){
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  |  return $core.withContext(function($ctx2) {
 | 
	
		
			
				|  |  |  //>>excludeEnd("ctx");
 | 
	
		
			
				|  |  |  $recv(aStream)._write_("!");
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -$ctx2.sendIdx["write:"]=5;
 | 
	
		
			
				|  |  | +$ctx2.sendIdx["write:"]=4;
 | 
	
		
			
				|  |  |  //>>excludeEnd("ctx");
 | 
	
		
			
				|  |  |  $recv(aStream)._print_(aClass);
 | 
	
		
			
				|  |  |  $recv(aStream)._write_(" commentStamp!");
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -$ctx2.sendIdx["write:"]=6;
 | 
	
		
			
				|  |  | +$ctx2.sendIdx["write:"]=5;
 | 
	
		
			
				|  |  |  //>>excludeEnd("ctx");
 | 
	
		
			
				|  |  |  $recv(aStream)._lf();
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -$ctx2.sendIdx["lf"]=4;
 | 
	
		
			
				|  |  | +$ctx2.sendIdx["lf"]=3;
 | 
	
		
			
				|  |  |  //>>excludeEnd("ctx");
 | 
	
		
			
				|  |  |  $recv(aStream)._write_([self._chunkEscape_($recv(aClass)._comment()),"!"]);
 | 
	
		
			
				|  |  | -$5=$recv(aStream)._lf();
 | 
	
		
			
				|  |  | +$4=$recv(aStream)._lf();
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -$ctx2.sendIdx["lf"]=5;
 | 
	
		
			
				|  |  | +$ctx2.sendIdx["lf"]=4;
 | 
	
		
			
				|  |  |  //>>excludeEnd("ctx");
 | 
	
		
			
				|  |  | -return $5;
 | 
	
		
			
				|  |  | +return $4;
 | 
	
		
			
				|  |  |  //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 | 
	
		
			
				|  |  | -}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
 | 
	
		
			
				|  |  | +}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
 | 
	
		
			
				|  |  |  //>>excludeEnd("ctx");
 | 
	
		
			
				|  |  |  }));
 | 
	
		
			
				|  |  |  $recv(aStream)._lf();
 | 
	
	
		
			
				|  | @@ -869,10 +854,10 @@ return self;
 | 
	
		
			
				|  |  |  },
 | 
	
		
			
				|  |  |  //>>excludeStart("ide", pragmas.excludeIdeData);
 | 
	
		
			
				|  |  |  args: ["aClass", "aStream"],
 | 
	
		
			
				|  |  | -source: "exportTraitDefinitionOf: aClass on: aStream\x0a\x09\x22Chunk format.\x22\x0a\x0a\x09aStream\x0a\x09\x09write: 'Trait named: '; printSymbol: aClass name; lf.\x0a\x09aClass traitComposition\x0a\x09\x09ifNotEmpty: [ aStream tab; write: aClass usesDefinition; lf ].\x0a\x09aStream\x0a\x09\x09tab; write: 'package: '; print:\x09aClass category; write: '!'; lf.\x0a\x09aClass comment ifNotEmpty: [\x0a\x09\x09aStream\x0a\x09\x09write: '!'; print: aClass; write: ' commentStamp!'; lf;\x0a\x09\x09write: { self chunkEscape: aClass comment. '!' }; lf ].\x0a\x09aStream lf",
 | 
	
		
			
				|  |  | +source: "exportTraitDefinitionOf: aClass on: aStream\x0a\x09\x22Chunk format.\x22\x0a\x0a\x09aStream\x0a\x09\x09write: 'Trait named: '; printSymbol: aClass name; lf.\x0a\x09\x22aClass traitComposition\x0a\x09\x09ifNotEmpty: [ aStream tab; write: {'uses: '. aClass traitCompositionDefinition}; lf ].\x22\x0a\x09aStream\x0a\x09\x09tab; write: 'package: '; print:\x09aClass category; write: '!'; lf.\x0a\x09aClass comment ifNotEmpty: [\x0a\x09\x09aStream\x0a\x09\x09write: '!'; print: aClass; write: ' commentStamp!'; lf;\x0a\x09\x09write: { self chunkEscape: aClass comment. '!' }; lf ].\x0a\x09aStream lf",
 | 
	
		
			
				|  |  |  referencedClasses: [],
 | 
	
		
			
				|  |  |  //>>excludeEnd("ide");
 | 
	
		
			
				|  |  | -messageSends: ["write:", "printSymbol:", "name", "lf", "ifNotEmpty:", "traitComposition", "tab", "usesDefinition", "print:", "category", "comment", "chunkEscape:"]
 | 
	
		
			
				|  |  | +messageSends: ["write:", "printSymbol:", "name", "lf", "tab", "print:", "category", "ifNotEmpty:", "comment", "chunkEscape:"]
 | 
	
		
			
				|  |  |  }),
 | 
	
		
			
				|  |  |  $globals.ChunkExporter);
 | 
	
		
			
				|  |  |  
 |