diff --git a/.project b/.project
new file mode 100644
index 0000000..81083cc
--- /dev/null
+++ b/.project
@@ -0,0 +1,3 @@
+{
+	'srcDirectory' : 'src'
+}
\ No newline at end of file
diff --git a/.smalltalk.ston b/.smalltalk.ston
index b751a01..cde6ee3 100644
--- a/.smalltalk.ston
+++ b/.smalltalk.ston
@@ -2,7 +2,8 @@ SmalltalkCISpec {
   #loading : [
     SCIMetacelloLoadSpec {
       #baseline : 'SmartTest',
-      #directory : '',
+      #directory : 'src',
+      #load : [ 'test' ],
       #platforms : [ #pharo ]
     }
   ]
diff --git a/.travis.yml b/.travis.yml
index 60a9ebd..14c759e 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -7,8 +7,3 @@ os:
 
 smalltalk:
   - Pharo-7.0
-  - Pharo-6.1
-  
-matrix:
-  allow_failures:
-    - smalltalk: Pharo-7.0
diff --git a/BaselineOfSmartTest.package/.filetree b/BaselineOfSmartTest.package/.filetree
deleted file mode 100644
index 57a6797..0000000
--- a/BaselineOfSmartTest.package/.filetree
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-	"separateMethodMetaAndSource" : false,
-	"noMethodMetaData" : true,
-	"useCypressPropertiesFile" : true
-}
\ No newline at end of file
diff --git a/BaselineOfSmartTest.package/BaselineOfSmartTest.class/README.md b/BaselineOfSmartTest.package/BaselineOfSmartTest.class/README.md
deleted file mode 100644
index e69de29..0000000
diff --git a/BaselineOfSmartTest.package/BaselineOfSmartTest.class/instance/baseline..st b/BaselineOfSmartTest.package/BaselineOfSmartTest.class/instance/baseline..st
deleted file mode 100644
index 63b7bfc..0000000
--- a/BaselineOfSmartTest.package/BaselineOfSmartTest.class/instance/baseline..st
+++ /dev/null
@@ -1,15 +0,0 @@
-baselines
-baseline: spec
-	<baseline>
-	spec
-		for: #common
-		do: [ 
-			spec preLoadDoIt: #preLoad.
-			self defineDependencies: spec.
-			spec
-				repository: 'github://badetitou/SmartTest' ;
-				package: 'SmartTest';
-				package: 'SmartTest-Calypso';
-				group: 'default'
-					with: #('SmartTest');
-				group: 'calypso' with: #('default' 'Calypso' 'SmartTest-Calypso') ]
\ No newline at end of file
diff --git a/BaselineOfSmartTest.package/BaselineOfSmartTest.class/instance/defineDependencies..st b/BaselineOfSmartTest.package/BaselineOfSmartTest.class/instance/defineDependencies..st
deleted file mode 100644
index e443f1c..0000000
--- a/BaselineOfSmartTest.package/BaselineOfSmartTest.class/instance/defineDependencies..st
+++ /dev/null
@@ -1,7 +0,0 @@
-baselines
-defineDependencies: spec
-	spec
-		configuration: 'Calypso'
-		with: [ spec
-				versionString: #stable;
-				repository: 'http://smalltalkhub.com/mc/Pharo/MetaRepoForPharo60/main' ]
\ No newline at end of file
diff --git a/BaselineOfSmartTest.package/BaselineOfSmartTest.class/instance/preLoad.st b/BaselineOfSmartTest.package/BaselineOfSmartTest.class/instance/preLoad.st
deleted file mode 100644
index 0779eb8..0000000
--- a/BaselineOfSmartTest.package/BaselineOfSmartTest.class/instance/preLoad.st
+++ /dev/null
@@ -1,5 +0,0 @@
-baselines
-preLoad
-	"(CompilationContext bytecodeBackend = OpalEncoderForSistaV1)
-		ifFalse: [ CompilationContext bytecodeBackend: OpalEncoderForSistaV1.
-			Compiler recompileAll ]"
\ No newline at end of file
diff --git a/BaselineOfSmartTest.package/BaselineOfSmartTest.class/properties.json b/BaselineOfSmartTest.package/BaselineOfSmartTest.class/properties.json
deleted file mode 100644
index 648af49..0000000
--- a/BaselineOfSmartTest.package/BaselineOfSmartTest.class/properties.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-	"commentStamp" : "",
-	"super" : "BaselineOf",
-	"category" : "BaselineOfSmartTest",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [ ],
-	"name" : "BaselineOfSmartTest",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/BaselineOfSmartTest.package/monticello.meta/categories.st b/BaselineOfSmartTest.package/monticello.meta/categories.st
deleted file mode 100644
index 46a00e8..0000000
--- a/BaselineOfSmartTest.package/monticello.meta/categories.st
+++ /dev/null
@@ -1 +0,0 @@
-SystemOrganization addCategory: #BaselineOfSmartTest!
diff --git a/BaselineOfSmartTest.package/monticello.meta/initializers.st b/BaselineOfSmartTest.package/monticello.meta/initializers.st
deleted file mode 100644
index e69de29..0000000
diff --git a/BaselineOfSmartTest.package/monticello.meta/package b/BaselineOfSmartTest.package/monticello.meta/package
deleted file mode 100644
index f0d1a18..0000000
--- a/BaselineOfSmartTest.package/monticello.meta/package
+++ /dev/null
@@ -1 +0,0 @@
-(name 'BaselineOfSmartTest')
\ No newline at end of file
diff --git a/BaselineOfSmartTest.package/properties.json b/BaselineOfSmartTest.package/properties.json
deleted file mode 100644
index 6f31cf5..0000000
--- a/BaselineOfSmartTest.package/properties.json
+++ /dev/null
@@ -1 +0,0 @@
-{ }
\ No newline at end of file
diff --git a/ConfigurationOfSmartTest.package/.filetree b/ConfigurationOfSmartTest.package/.filetree
deleted file mode 100644
index 57a6797..0000000
--- a/ConfigurationOfSmartTest.package/.filetree
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-	"separateMethodMetaAndSource" : false,
-	"noMethodMetaData" : true,
-	"useCypressPropertiesFile" : true
-}
\ No newline at end of file
diff --git a/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/README.md b/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/README.md
deleted file mode 100644
index e69de29..0000000
diff --git a/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/class/DevelopmentSupport.st b/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/class/DevelopmentSupport.st
deleted file mode 100644
index c173702..0000000
--- a/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/class/DevelopmentSupport.st
+++ /dev/null
@@ -1,4 +0,0 @@
-development support
-DevelopmentSupport
-	<apiDocumentation>
-	
\ No newline at end of file
diff --git a/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/class/baseConfigurationClassIfAbsent..st b/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/class/baseConfigurationClassIfAbsent..st
deleted file mode 100644
index c134fad..0000000
--- a/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/class/baseConfigurationClassIfAbsent..st
+++ /dev/null
@@ -1,6 +0,0 @@
-development support
-baseConfigurationClassIfAbsent: arg1
-	^ Smalltalk
-		at: #ConfigurationOf
-		ifAbsent: [ self ensureMetacelloBaseConfiguration.
-			Smalltalk at: #ConfigurationOf ifAbsent: arg1 ]
\ No newline at end of file
diff --git a/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/class/ensureMetacello.st b/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/class/ensureMetacello.st
deleted file mode 100644
index 555d700..0000000
--- a/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/class/ensureMetacello.st
+++ /dev/null
@@ -1,3 +0,0 @@
-development support
-ensureMetacello
-	(self baseConfigurationClassIfAbsent: [  ]) ensureMetacello
\ No newline at end of file
diff --git a/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/class/ensureMetacelloBaseConfiguration.st b/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/class/ensureMetacelloBaseConfiguration.st
deleted file mode 100644
index d28fdb0..0000000
--- a/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/class/ensureMetacelloBaseConfiguration.st
+++ /dev/null
@@ -1,15 +0,0 @@
-development support
-ensureMetacelloBaseConfiguration
-	Smalltalk
-		at: #ConfigurationOf
-		ifAbsent: [ | tmp2 tmp3 |
-			tmp2 := MCHttpRepository
-				location: 'http://smalltalkhub.com/mc/dkh/metacello/main'
-				user: ''
-				password: ''.
-			tmp2
-				versionReaderForFileNamed: 'Metacello-Base-dkh.107'
-				do: [ :arg1 | 
-					tmp3 := arg1 version.
-					tmp3 load.
-					tmp3 workingCopy repositoryGroup addRepository: tmp2 ] ]
\ No newline at end of file
diff --git a/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/class/isMetacelloConfig.st b/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/class/isMetacelloConfig.st
deleted file mode 100644
index 93594e3..0000000
--- a/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/class/isMetacelloConfig.st
+++ /dev/null
@@ -1,3 +0,0 @@
-development support
-isMetacelloConfig
-	^ true
\ No newline at end of file
diff --git a/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/class/load.st b/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/class/load.st
deleted file mode 100644
index 063bcbf..0000000
--- a/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/class/load.st
+++ /dev/null
@@ -1,4 +0,0 @@
-development support
-load
-	<apiDocumentation>
-	^ (self project version: #stable) load
\ No newline at end of file
diff --git a/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/class/loadBleedingEdge.st b/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/class/loadBleedingEdge.st
deleted file mode 100644
index 71f048c..0000000
--- a/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/class/loadBleedingEdge.st
+++ /dev/null
@@ -1,4 +0,0 @@
-development support
-loadBleedingEdge
-	<apiDocumentation>
-	^ (self project version: #bleedingEdge) load
\ No newline at end of file
diff --git a/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/class/loadDevelopment.st b/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/class/loadDevelopment.st
deleted file mode 100644
index 1def28e..0000000
--- a/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/class/loadDevelopment.st
+++ /dev/null
@@ -1,4 +0,0 @@
-development support
-loadDevelopment
-	<apiDocumentation>
-	^ (self project version: #development) load
\ No newline at end of file
diff --git a/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/class/project.st b/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/class/project.st
deleted file mode 100644
index 956fddd..0000000
--- a/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/class/project.st
+++ /dev/null
@@ -1,3 +0,0 @@
-development support
-project
-	^ self new project
\ No newline at end of file
diff --git a/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/class/validate.st b/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/class/validate.st
deleted file mode 100644
index 8946906..0000000
--- a/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/class/validate.st
+++ /dev/null
@@ -1,8 +0,0 @@
-development support
-validate
-	<apiDocumentation>
-	self ensureMetacello.
-	^ ((Smalltalk at: #MetacelloToolBox)
-		validateConfiguration: self
-		debug: #()
-		recurse: false) explore
\ No newline at end of file
diff --git a/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/instance/customProjectAttributes.st b/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/instance/customProjectAttributes.st
deleted file mode 100644
index 15665cb..0000000
--- a/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/instance/customProjectAttributes.st
+++ /dev/null
@@ -1,3 +0,0 @@
-symbolic versions
-customProjectAttributes
-	^ #().
\ No newline at end of file
diff --git a/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/instance/dev01..st b/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/instance/dev01..st
deleted file mode 100644
index 6ea88fb..0000000
--- a/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/instance/dev01..st
+++ /dev/null
@@ -1,10 +0,0 @@
-symbolic versions
-dev01: spec
-	<version: 'dev-01'>
-	
-	spec for: #'common' do: [
-  		spec
-			baseline: 'SmartTest'
-			with: [ 
-				spec 
-					repository: 'github://badetitou/SmartTest' ] ].
\ No newline at end of file
diff --git a/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/instance/development..st b/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/instance/development..st
deleted file mode 100644
index e040d13..0000000
--- a/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/instance/development..st
+++ /dev/null
@@ -1,5 +0,0 @@
-symbolic versions
-development: spec
-	<symbolicVersion: 'development'>
-	
-	spec for: #'common' version: 'dev-01'.
\ No newline at end of file
diff --git a/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/instance/master..st b/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/instance/master..st
deleted file mode 100644
index 377c2c2..0000000
--- a/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/instance/master..st
+++ /dev/null
@@ -1,8 +0,0 @@
-symbolic versions
-master: spec
-	<version: 'master'>
-	
-	spec for: #'common' do: [
-  		spec
-			baseline: 'SmartTest'
-			with: [ spec repository: 'github://badetitou/SmartTest:master' ] ]
\ No newline at end of file
diff --git a/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/instance/project.st b/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/instance/project.st
deleted file mode 100644
index ca8cbc3..0000000
--- a/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/instance/project.st
+++ /dev/null
@@ -1,14 +0,0 @@
-symbolic versions
-project
-	| tmp1 |
-	tmp1 := project.
-	^ tmp1
-		ifNil: [ self class ensureMetacello.
-			project := MetacelloMCProject new
-				projectAttributes: self customProjectAttributes.
-			(Smalltalk at: #MetacelloVersionConstructor)
-				on: self
-				project: project.
-			project loadType: #linear.
-			project ]
-		ifNotNil: [ tmp1 ]
\ No newline at end of file
diff --git a/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/instance/stable..st b/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/instance/stable..st
deleted file mode 100644
index d77b1be..0000000
--- a/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/instance/stable..st
+++ /dev/null
@@ -1,5 +0,0 @@
-symbolic versions
-stable: spec
-	<symbolicVersion: #'stable'>
-
-	spec for: #'common' version: 'master'.
\ No newline at end of file
diff --git a/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/properties.json b/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/properties.json
deleted file mode 100644
index 8ecfb73..0000000
--- a/ConfigurationOfSmartTest.package/ConfigurationOfSmartTest.class/properties.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-	"commentStamp" : "",
-	"super" : "Object",
-	"category" : "ConfigurationOfSmartTest",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [
-		"LastVersionLoad"
-	],
-	"instvars" : [
-		"project"
-	],
-	"name" : "ConfigurationOfSmartTest",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/ConfigurationOfSmartTest.package/monticello.meta/categories.st b/ConfigurationOfSmartTest.package/monticello.meta/categories.st
deleted file mode 100644
index 008c229..0000000
--- a/ConfigurationOfSmartTest.package/monticello.meta/categories.st
+++ /dev/null
@@ -1 +0,0 @@
-SystemOrganization addCategory: #ConfigurationOfSmartTest!
diff --git a/ConfigurationOfSmartTest.package/monticello.meta/initializers.st b/ConfigurationOfSmartTest.package/monticello.meta/initializers.st
deleted file mode 100644
index e69de29..0000000
diff --git a/ConfigurationOfSmartTest.package/monticello.meta/package b/ConfigurationOfSmartTest.package/monticello.meta/package
deleted file mode 100644
index 0f3d1fa..0000000
--- a/ConfigurationOfSmartTest.package/monticello.meta/package
+++ /dev/null
@@ -1 +0,0 @@
-(name 'ConfigurationOfSmartTest')
\ No newline at end of file
diff --git a/ConfigurationOfSmartTest.package/properties.json b/ConfigurationOfSmartTest.package/properties.json
deleted file mode 100644
index 6f31cf5..0000000
--- a/ConfigurationOfSmartTest.package/properties.json
+++ /dev/null
@@ -1 +0,0 @@
-{ }
\ No newline at end of file
diff --git a/README.md b/README.md
index 41bedb4..24155a3 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,7 @@
 # SmartTest
-Master:![master](https://api.travis-ci.org/badetitou/SmartTest.svg?branch=master)
- Development: ![development](https://travis-ci.org/badetitou/SmartTest.svg?branch=development)
+
+Master: [![Master](https://travis-ci.org/badetitou/SmartTest.svg?branch=master)](https://travis-ci.org/badetitou/SmartTest/branches)
+Development: [![development](https://travis-ci.org/badetitou/SmartTest.svg?branch=development)](https://travis-ci.org/badetitou/SmartTest/branches)
 
 ## What is SmartTest ?
 
diff --git a/SmartTest-Calypso.package/.filetree b/SmartTest-Calypso.package/.filetree
deleted file mode 100644
index 57a6797..0000000
--- a/SmartTest-Calypso.package/.filetree
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-	"separateMethodMetaAndSource" : false,
-	"noMethodMetaData" : true,
-	"useCypressPropertiesFile" : true
-}
\ No newline at end of file
diff --git a/SmartTest-Calypso.package/ClyOpenClassRelatedTestsCommand.class/README.md b/SmartTest-Calypso.package/ClyOpenClassRelatedTestsCommand.class/README.md
deleted file mode 100644
index 5b8cd52..0000000
--- a/SmartTest-Calypso.package/ClyOpenClassRelatedTestsCommand.class/README.md
+++ /dev/null
@@ -1 +0,0 @@
-I represent the button that open details of tests you should run from CORA (for a class)
\ No newline at end of file
diff --git a/SmartTest-Calypso.package/ClyOpenClassRelatedTestsCommand.class/instance/buildTableCellIconFor..st b/SmartTest-Calypso.package/ClyOpenClassRelatedTestsCommand.class/instance/buildTableCellIconFor..st
deleted file mode 100644
index 73941a2..0000000
--- a/SmartTest-Calypso.package/ClyOpenClassRelatedTestsCommand.class/instance/buildTableCellIconFor..st
+++ /dev/null
@@ -1,4 +0,0 @@
-table decoration
-buildTableCellIconFor: anItemCellMorph
-
-	^anItemCellMorph iconNamed: #smallWindow
\ No newline at end of file
diff --git a/SmartTest-Calypso.package/ClyOpenClassRelatedTestsCommand.class/instance/canBeExecutedInContext..st b/SmartTest-Calypso.package/ClyOpenClassRelatedTestsCommand.class/instance/canBeExecutedInContext..st
deleted file mode 100644
index 9141449..0000000
--- a/SmartTest-Calypso.package/ClyOpenClassRelatedTestsCommand.class/instance/canBeExecutedInContext..st
+++ /dev/null
@@ -1,5 +0,0 @@
-execution
-canBeExecutedInContext: aCriticContext
-	(super canBeExecutedInDropContext: aCriticContext) ifFalse: [ ^false ].
-	
-	^ SmTRelativeTestsCritique subclasses includes: aCriticContext selectedCritique class
\ No newline at end of file
diff --git a/SmartTest-Calypso.package/ClyOpenClassRelatedTestsCommand.class/instance/description.st b/SmartTest-Calypso.package/ClyOpenClassRelatedTestsCommand.class/instance/description.st
deleted file mode 100644
index d639199..0000000
--- a/SmartTest-Calypso.package/ClyOpenClassRelatedTestsCommand.class/instance/description.st
+++ /dev/null
@@ -1,3 +0,0 @@
-table decoration
-description
-	^'Open Tests Selection'
\ No newline at end of file
diff --git a/SmartTest-Calypso.package/ClyOpenClassRelatedTestsCommand.class/instance/execute.st b/SmartTest-Calypso.package/ClyOpenClassRelatedTestsCommand.class/instance/execute.st
deleted file mode 100644
index d484d30..0000000
--- a/SmartTest-Calypso.package/ClyOpenClassRelatedTestsCommand.class/instance/execute.st
+++ /dev/null
@@ -1,3 +0,0 @@
-execution
-execute
-	critique openTestsWindowWith: critique tests
\ No newline at end of file
diff --git a/SmartTest-Calypso.package/ClyOpenClassRelatedTestsCommand.class/properties.json b/SmartTest-Calypso.package/ClyOpenClassRelatedTestsCommand.class/properties.json
deleted file mode 100644
index 5931e70..0000000
--- a/SmartTest-Calypso.package/ClyOpenClassRelatedTestsCommand.class/properties.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-	"commentStamp" : "BenoitVerhaeghe 7/3/2017 16:35",
-	"super" : "ClyCritiqueCommand",
-	"category" : "SmartTest-Calypso",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [ ],
-	"name" : "ClyOpenClassRelatedTestsCommand",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest-Calypso.package/ClyRunClassRelatedTestsCommand.class/README.md b/SmartTest-Calypso.package/ClyRunClassRelatedTestsCommand.class/README.md
deleted file mode 100644
index 96a07a5..0000000
--- a/SmartTest-Calypso.package/ClyRunClassRelatedTestsCommand.class/README.md
+++ /dev/null
@@ -1 +0,0 @@
-I represent the button that run the tests that CORA's found about a class
\ No newline at end of file
diff --git a/SmartTest-Calypso.package/ClyRunClassRelatedTestsCommand.class/instance/canBeExecutedInContext..st b/SmartTest-Calypso.package/ClyRunClassRelatedTestsCommand.class/instance/canBeExecutedInContext..st
deleted file mode 100644
index 215543d..0000000
--- a/SmartTest-Calypso.package/ClyRunClassRelatedTestsCommand.class/instance/canBeExecutedInContext..st
+++ /dev/null
@@ -1,6 +0,0 @@
-execution
-canBeExecutedInContext: aCriticContext
-
-	(super canBeExecutedInDropContext: aCriticContext) ifFalse: [ ^false ].
-	
-	^SmTRelativeTestsCritique subclasses includes: aCriticContext class
\ No newline at end of file
diff --git a/SmartTest-Calypso.package/ClyRunClassRelatedTestsCommand.class/instance/decorateTableCell.using..st b/SmartTest-Calypso.package/ClyRunClassRelatedTestsCommand.class/instance/decorateTableCell.using..st
deleted file mode 100644
index ee0bd16..0000000
--- a/SmartTest-Calypso.package/ClyRunClassRelatedTestsCommand.class/instance/decorateTableCell.using..st
+++ /dev/null
@@ -1,8 +0,0 @@
-table decoration
-decorateTableCell: anItemCellMorph using: aCommandActivator
-
-	| button |
-	(self canBeExecutedInContext: critique) ifFalse: [ ^ self ].
-	button := SmTIconFabric createIconForMethods: critique tests.
-		
-	self decorateTableCell: anItemCellMorph with: button
\ No newline at end of file
diff --git a/SmartTest-Calypso.package/ClyRunClassRelatedTestsCommand.class/instance/description.st b/SmartTest-Calypso.package/ClyRunClassRelatedTestsCommand.class/instance/description.st
deleted file mode 100644
index 6eb7a29..0000000
--- a/SmartTest-Calypso.package/ClyRunClassRelatedTestsCommand.class/instance/description.st
+++ /dev/null
@@ -1,3 +0,0 @@
-table decoration
-description
-	^'Run tests'
\ No newline at end of file
diff --git a/SmartTest-Calypso.package/ClyRunClassRelatedTestsCommand.class/instance/execute.st b/SmartTest-Calypso.package/ClyRunClassRelatedTestsCommand.class/instance/execute.st
deleted file mode 100644
index a4b1618..0000000
--- a/SmartTest-Calypso.package/ClyRunClassRelatedTestsCommand.class/instance/execute.st
+++ /dev/null
@@ -1,4 +0,0 @@
-execution
-execute
-	"We never go here"
-	self halt
\ No newline at end of file
diff --git a/SmartTest-Calypso.package/ClyRunClassRelatedTestsCommand.class/properties.json b/SmartTest-Calypso.package/ClyRunClassRelatedTestsCommand.class/properties.json
deleted file mode 100644
index cefd7a6..0000000
--- a/SmartTest-Calypso.package/ClyRunClassRelatedTestsCommand.class/properties.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-	"commentStamp" : "BenoitVerhaeghe 7/3/2017 16:36",
-	"super" : "ClyCritiqueCommand",
-	"category" : "SmartTest-Calypso",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [ ],
-	"name" : "ClyRunClassRelatedTestsCommand",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest-Calypso.package/SmTRules.extension/instance/isOnNautilusOrCalypso.st b/SmartTest-Calypso.package/SmTRules.extension/instance/isOnNautilusOrCalypso.st
deleted file mode 100644
index 9d6bd94..0000000
--- a/SmartTest-Calypso.package/SmTRules.extension/instance/isOnNautilusOrCalypso.st
+++ /dev/null
@@ -1,6 +0,0 @@
-*SmartTest-Calypso
-isOnNautilusOrCalypso
-	"20 items means at least Nautilus"
-	| he |
-	he := thisContext stack collect: [ :c | c methodClass asString ] .
-	^ he anySatisfy: [:el | 'ClyNavigationEnvironment' match: el]
\ No newline at end of file
diff --git a/SmartTest-Calypso.package/SmTRules.extension/properties.json b/SmartTest-Calypso.package/SmTRules.extension/properties.json
deleted file mode 100644
index defc7d5..0000000
--- a/SmartTest-Calypso.package/SmTRules.extension/properties.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-	"name" : "SmTRules"
-}
\ No newline at end of file
diff --git a/SmartTest-Calypso.package/monticello.meta/categories.st b/SmartTest-Calypso.package/monticello.meta/categories.st
deleted file mode 100644
index 002630b..0000000
--- a/SmartTest-Calypso.package/monticello.meta/categories.st
+++ /dev/null
@@ -1 +0,0 @@
-SystemOrganization addCategory: #'SmartTest-Calypso'!
diff --git a/SmartTest-Calypso.package/monticello.meta/initializers.st b/SmartTest-Calypso.package/monticello.meta/initializers.st
deleted file mode 100644
index e69de29..0000000
diff --git a/SmartTest-Calypso.package/monticello.meta/package b/SmartTest-Calypso.package/monticello.meta/package
deleted file mode 100644
index 6457950..0000000
--- a/SmartTest-Calypso.package/monticello.meta/package
+++ /dev/null
@@ -1 +0,0 @@
-(name 'SmartTest-Calypso')
\ No newline at end of file
diff --git a/SmartTest-Calypso.package/properties.json b/SmartTest-Calypso.package/properties.json
deleted file mode 100644
index 6f31cf5..0000000
--- a/SmartTest-Calypso.package/properties.json
+++ /dev/null
@@ -1 +0,0 @@
-{ }
\ No newline at end of file
diff --git a/SmartTest.package/.filetree b/SmartTest.package/.filetree
deleted file mode 100644
index 57a6797..0000000
--- a/SmartTest.package/.filetree
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-	"separateMethodMetaAndSource" : false,
-	"noMethodMetaData" : true,
-	"useCypressPropertiesFile" : true
-}
\ No newline at end of file
diff --git a/SmartTest.package/ASTCacheResetTest.extension/properties.json b/SmartTest.package/ASTCacheResetTest.extension/properties.json
deleted file mode 100644
index c232b20..0000000
--- a/SmartTest.package/ASTCacheResetTest.extension/properties.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-	"name" : "ASTCacheResetTest"
-}
\ No newline at end of file
diff --git a/SmartTest.package/CompiledMethod.extension/instance/asTestCase.st b/SmartTest.package/CompiledMethod.extension/instance/asTestCase.st
deleted file mode 100644
index c8d97c0..0000000
--- a/SmartTest.package/CompiledMethod.extension/instance/asTestCase.st
+++ /dev/null
@@ -1,3 +0,0 @@
-*SmartTest
-asTestCase
-	^ self methodClass selector: self selector
\ No newline at end of file
diff --git a/SmartTest.package/CompiledMethod.extension/instance/belongsToTestCase.st b/SmartTest.package/CompiledMethod.extension/instance/belongsToTestCase.st
deleted file mode 100644
index 62e0c35..0000000
--- a/SmartTest.package/CompiledMethod.extension/instance/belongsToTestCase.st
+++ /dev/null
@@ -1,3 +0,0 @@
-*SmartTest
-belongsToTestCase
-	^ self methodClass isKindOf: TestCase class.
\ No newline at end of file
diff --git a/SmartTest.package/CompiledMethod.extension/instance/isTestMethod.st b/SmartTest.package/CompiledMethod.extension/instance/isTestMethod.st
deleted file mode 100644
index 37b8411..0000000
--- a/SmartTest.package/CompiledMethod.extension/instance/isTestMethod.st
+++ /dev/null
@@ -1,4 +0,0 @@
-*SmartTest
-isTestMethod 
-  	^ 	self belongsToTestCase
-		and: [ self methodClass allTestSelectors includes: self selector].
\ No newline at end of file
diff --git a/SmartTest.package/CompiledMethod.extension/instance/isTestSetUpMethod.st b/SmartTest.package/CompiledMethod.extension/instance/isTestSetUpMethod.st
deleted file mode 100644
index ac12504..0000000
--- a/SmartTest.package/CompiledMethod.extension/instance/isTestSetUpMethod.st
+++ /dev/null
@@ -1,4 +0,0 @@
-*SmartTest
-isTestSetUpMethod
-	^ (self selector = #setUp) 
-	   and: [self belongsToTestCase].
\ No newline at end of file
diff --git a/SmartTest.package/CompiledMethod.extension/instance/isTestTearDownMethod.st b/SmartTest.package/CompiledMethod.extension/instance/isTestTearDownMethod.st
deleted file mode 100644
index 39ad64e..0000000
--- a/SmartTest.package/CompiledMethod.extension/instance/isTestTearDownMethod.st
+++ /dev/null
@@ -1,4 +0,0 @@
-*SmartTest
-isTestTearDownMethod
-	^ (self selector = #tearDown) 
-	   and:[self belongsToTestCase]. 
\ No newline at end of file
diff --git a/SmartTest.package/CompiledMethod.extension/properties.json b/SmartTest.package/CompiledMethod.extension/properties.json
deleted file mode 100644
index c2e4663..0000000
--- a/SmartTest.package/CompiledMethod.extension/properties.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-	"name" : "CompiledMethod"
-}
\ No newline at end of file
diff --git a/SmartTest.package/FormCanvas.extension/instance/fillOval.color.withPercentage.borderWidth.borderColor..st b/SmartTest.package/FormCanvas.extension/instance/fillOval.color.withPercentage.borderWidth.borderColor..st
deleted file mode 100644
index c7b77c7..0000000
--- a/SmartTest.package/FormCanvas.extension/instance/fillOval.color.withPercentage.borderWidth.borderColor..st
+++ /dev/null
@@ -1,15 +0,0 @@
-*SmartTest
-fillOval: r color: fillColor withPercentage: aFloat borderWidth: borderWidth borderColor: borderColor
-	| rect |
-
-	"draw the border of the oval"
-	rect := (r translateBy: origin) truncated.
-	(borderWidth = 0 or: [borderColor isTransparent]) ifFalse:[
-		self setFillColor: borderColor.
-		(r area > 10000 or: [fillColor isTranslucent]) 
-			ifTrue: [port frameOval: rect borderWidth: borderWidth]
-			ifFalse: [port fillOval: rect]]. "faster this way"
-	"fill the inside"
-	fillColor isTransparent ifFalse:
-		[self setFillColor: fillColor.
-		port fillOval: (rect insetBy: borderWidth)].
diff --git a/SmartTest.package/FormCanvas.extension/instance/fillOval.fillStyle.withPercentage.borderWidth.borderColor..st b/SmartTest.package/FormCanvas.extension/instance/fillOval.fillStyle.withPercentage.borderWidth.borderColor..st
deleted file mode 100644
index e4d5003..0000000
--- a/SmartTest.package/FormCanvas.extension/instance/fillOval.fillStyle.withPercentage.borderWidth.borderColor..st
+++ /dev/null
@@ -1,10 +0,0 @@
-*SmartTest
-fillOval: aRectangle fillStyle: aFillStyle withPercentage: aFloat borderWidth: bw borderColor: bc
-	"Fill the given oval."
-
-	(aFillStyle isBitmapFill and:[aFillStyle isKindOf: InfiniteForm]) ifTrue:[
-		^self fillOval: aRectangle color: aFillStyle borderWidth: bw borderColor: bc].
-	(aFillStyle isSolidFill) ifTrue:[
-		^self fillOval: aRectangle withPercentage: aFloat color: aFillStyle asColor borderWidth: bw borderColor: bc].
-	"Use a BalloonCanvas instead"
-	self balloonFillOval: aRectangle fillStyle: aFillStyle borderWidth: bw borderColor: bc
\ No newline at end of file
diff --git a/SmartTest.package/FormCanvas.extension/instance/fillOval.withPercentage.color.borderWidth.borderColor..st b/SmartTest.package/FormCanvas.extension/instance/fillOval.withPercentage.color.borderWidth.borderColor..st
deleted file mode 100644
index 0d1dc7f..0000000
--- a/SmartTest.package/FormCanvas.extension/instance/fillOval.withPercentage.color.borderWidth.borderColor..st
+++ /dev/null
@@ -1,15 +0,0 @@
-*SmartTest
-fillOval: r withPercentage: aFloat color: fillColor borderWidth: borderWidth borderColor: borderColor
-	| rect |
-
-	"draw the border of the oval"
-	rect := (r translateBy: origin) truncated.
-	(borderWidth = 0 or: [borderColor isTransparent]) ifFalse:[
-		self setFillColor: borderColor.
-		(r area > 10000 or: [fillColor isTranslucent]) 
-			ifTrue: [port frameOval: rect borderWidth: borderWidth]
-			ifFalse: [port fillOval: rect]]. "faster this way"
-	"fill the inside"
-	fillColor isTransparent ifFalse:
-		[self setFillColor: fillColor.
-		port fillOval: (rect insetBy: borderWidth) withPercentage: aFloat].
diff --git a/SmartTest.package/FormCanvas.extension/properties.json b/SmartTest.package/FormCanvas.extension/properties.json
deleted file mode 100644
index 9887a28..0000000
--- a/SmartTest.package/FormCanvas.extension/properties.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-	"name" : "FormCanvas"
-}
\ No newline at end of file
diff --git a/SmartTest.package/GrafPort.extension/properties.json b/SmartTest.package/GrafPort.extension/properties.json
deleted file mode 100644
index 7221c9f..0000000
--- a/SmartTest.package/GrafPort.extension/properties.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-	"name" : "GrafPort"
-}
\ No newline at end of file
diff --git a/SmartTest.package/HDTestCoverage.extension/instance/unmark.st b/SmartTest.package/HDTestCoverage.extension/instance/unmark.st
deleted file mode 100644
index 0f25e27..0000000
--- a/SmartTest.package/HDTestCoverage.extension/instance/unmark.st
+++ /dev/null
@@ -1,3 +0,0 @@
-*SmartTest
-unmark
-	hasRun := false
\ No newline at end of file
diff --git a/SmartTest.package/HDTestCoverage.extension/properties.json b/SmartTest.package/HDTestCoverage.extension/properties.json
deleted file mode 100644
index ed52621..0000000
--- a/SmartTest.package/HDTestCoverage.extension/properties.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-	"name" : "HDTestCoverage"
-}
\ No newline at end of file
diff --git a/SmartTest.package/ManifestSmartTest.class/README.md b/SmartTest.package/ManifestSmartTest.class/README.md
deleted file mode 100644
index 671949a..0000000
--- a/SmartTest.package/ManifestSmartTest.class/README.md
+++ /dev/null
@@ -1 +0,0 @@
-I store metadata for this package. These meta data are used by other tools such as the SmalllintManifestChecker and the critics Browser
\ No newline at end of file
diff --git a/SmartTest.package/ManifestSmartTest.class/class/description.st b/SmartTest.package/ManifestSmartTest.class/class/description.st
deleted file mode 100644
index 9534f95..0000000
--- a/SmartTest.package/ManifestSmartTest.class/class/description.st
+++ /dev/null
@@ -1,2 +0,0 @@
-meta-data
-description ^ 'CORA is an extention of QA which display information about test'
\ No newline at end of file
diff --git a/SmartTest.package/ManifestSmartTest.class/class/preUnload.st b/SmartTest.package/ManifestSmartTest.class/class/preUnload.st
deleted file mode 100644
index 631df91..0000000
--- a/SmartTest.package/ManifestSmartTest.class/class/preUnload.st
+++ /dev/null
@@ -1,4 +0,0 @@
-meta-data
-preUnload
-	super preUnload.
-	SmTListener disable
\ No newline at end of file
diff --git a/SmartTest.package/ManifestSmartTest.class/properties.json b/SmartTest.package/ManifestSmartTest.class/properties.json
deleted file mode 100644
index ceb1756..0000000
--- a/SmartTest.package/ManifestSmartTest.class/properties.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-	"commentStamp" : "<historical>",
-	"super" : "PackageManifest",
-	"category" : "SmartTest",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [ ],
-	"name" : "ManifestSmartTest",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/NautilusRefactoring.extension/properties.json b/SmartTest.package/NautilusRefactoring.extension/properties.json
deleted file mode 100644
index c56d8be..0000000
--- a/SmartTest.package/NautilusRefactoring.extension/properties.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-	"name" : "NautilusRefactoring"
-}
\ No newline at end of file
diff --git a/SmartTest.package/QANautilusPluginMorph.extension/instance/displayCritique..st b/SmartTest.package/QANautilusPluginMorph.extension/instance/displayCritique..st
deleted file mode 100644
index a659709..0000000
--- a/SmartTest.package/QANautilusPluginMorph.extension/instance/displayCritique..st
+++ /dev/null
@@ -1,47 +0,0 @@
-*SmartTest
-displayCritique: aCritique
-	| listItem |
-	listItem := Morph new
-		layoutPolicy: TableLayout new;
-		listDirection: #leftToRight;
-		cellPositioning: #center;
-		hResizing: #spaceFill;
-		vResizing: #shrinkWrap;
-		cellInset: 5;
-		color: Color transparent;
-		layoutInset:
-			(Margin
-				left: 0
-				top: 0
-				right: 10
-				bottom: 0);
-		yourself.
-	listItem addMorph: aCritique title asStringMorph.
-	aCritique iconicButtons
-		do: [ :iconicButtons | listItem addMorphBack: iconicButtons ].
-	aCritique actions
-		do: [ :action | 
-			listItem
-				addMorphBack:
-					(IconicButton new
-						target: action;
-						labelGraphic: action icon;
-						actionSelector: #actOnCritic:ofEntity:;
-						arguments:
-							{aCritique.
-							entity};
-						color: Color transparent;
-						helpText: action description;
-						extent: 16 @ 16;
-						borderWidth: 0;
-						yourself) ].
-	aCritique isCritic
-		ifTrue: [ listItem
-				addMorphBack:
-					(Morph new
-						color: Color transparent;
-						hResizing: #spaceFill;
-						height: 5;
-						yourself).
-			listItem addMorphBack: (QAFeedbackMorph new critique: aCritique) ].
-	^ listItem
\ No newline at end of file
diff --git a/SmartTest.package/QANautilusPluginMorph.extension/properties.json b/SmartTest.package/QANautilusPluginMorph.extension/properties.json
deleted file mode 100644
index 805058f..0000000
--- a/SmartTest.package/QANautilusPluginMorph.extension/properties.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-	"name" : "QANautilusPluginMorph"
-}
\ No newline at end of file
diff --git a/SmartTest.package/RGMethodDefinition.extension/instance/isInitializer.st b/SmartTest.package/RGMethodDefinition.extension/instance/isInitializer.st
deleted file mode 100644
index 2af1669..0000000
--- a/SmartTest.package/RGMethodDefinition.extension/instance/isInitializer.st
+++ /dev/null
@@ -1,3 +0,0 @@
-*SmartTest
-isInitializer
-	^ self selector = #initialize
\ No newline at end of file
diff --git a/SmartTest.package/RGMethodDefinition.extension/instance/senders.st b/SmartTest.package/RGMethodDefinition.extension/instance/senders.st
deleted file mode 100644
index d224b7c..0000000
--- a/SmartTest.package/RGMethodDefinition.extension/instance/senders.st
+++ /dev/null
@@ -1,3 +0,0 @@
-*SmartTest
-senders
-	^ SystemNavigation default allSendersOf: self selector
\ No newline at end of file
diff --git a/SmartTest.package/RGMethodDefinition.extension/properties.json b/SmartTest.package/RGMethodDefinition.extension/properties.json
deleted file mode 100644
index 0bcc002..0000000
--- a/SmartTest.package/RGMethodDefinition.extension/properties.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-	"name" : "RGMethodDefinition"
-}
\ No newline at end of file
diff --git a/SmartTest.package/ReProperty.extension/instance/iconicButtons.st b/SmartTest.package/ReProperty.extension/instance/iconicButtons.st
deleted file mode 100644
index 94e94db..0000000
--- a/SmartTest.package/ReProperty.extension/instance/iconicButtons.st
+++ /dev/null
@@ -1,4 +0,0 @@
-*SmartTest
-iconicButtons
-
-	^ #()
\ No newline at end of file
diff --git a/SmartTest.package/ReProperty.extension/properties.json b/SmartTest.package/ReProperty.extension/properties.json
deleted file mode 100644
index 5f0ce47..0000000
--- a/SmartTest.package/ReProperty.extension/properties.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-	"name" : "ReProperty"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTAnnouncer.class/README.md b/SmartTest.package/SmTAnnouncer.class/README.md
deleted file mode 100644
index e69de29..0000000
diff --git a/SmartTest.package/SmTAnnouncer.class/class/announcer.st b/SmartTest.package/SmTAnnouncer.class/class/announcer.st
deleted file mode 100644
index 59bd5d1..0000000
--- a/SmartTest.package/SmTAnnouncer.class/class/announcer.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-announcer
-	^ announcer ifNil: [ announcer := SmTAnnouncer new ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTAnnouncer.class/class/shouldAnnounce.st b/SmartTest.package/SmTAnnouncer.class/class/shouldAnnounce.st
deleted file mode 100644
index 0596a28..0000000
--- a/SmartTest.package/SmTAnnouncer.class/class/shouldAnnounce.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-shouldAnnounce
-	^ SmTTestListener activated
\ No newline at end of file
diff --git a/SmartTest.package/SmTAnnouncer.class/properties.json b/SmartTest.package/SmTAnnouncer.class/properties.json
deleted file mode 100644
index 5a28be5..0000000
--- a/SmartTest.package/SmTAnnouncer.class/properties.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-	"commentStamp" : "",
-	"super" : "Announcer",
-	"category" : "SmartTest-Listener",
-	"classinstvars" : [
-		"announcer"
-	],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [ ],
-	"name" : "SmTAnnouncer",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTAutoTestsWindows.class/README.md b/SmartTest.package/SmTAutoTestsWindows.class/README.md
deleted file mode 100644
index ffda2bb..0000000
--- a/SmartTest.package/SmTAutoTestsWindows.class/README.md
+++ /dev/null
@@ -1 +0,0 @@
-The windows where we can select test
\ No newline at end of file
diff --git a/SmartTest.package/SmTAutoTestsWindows.class/class/defaultSpec.st b/SmartTest.package/SmTAutoTestsWindows.class/class/defaultSpec.st
deleted file mode 100644
index 0ab6a3d..0000000
--- a/SmartTest.package/SmTAutoTestsWindows.class/class/defaultSpec.st
+++ /dev/null
@@ -1,6 +0,0 @@
-specs
-defaultSpec
-	^ SpecLayout composed
-		newRow: [ :row | row  add: #testList] top: 0 bottom: 0.2 ;
-		newRow: [ :row | row  add: #button]  top: 0.8 bottom: 0;
-		yourself
\ No newline at end of file
diff --git a/SmartTest.package/SmTAutoTestsWindows.class/instance/button.st b/SmartTest.package/SmTAutoTestsWindows.class/instance/button.st
deleted file mode 100644
index cd4a51c..0000000
--- a/SmartTest.package/SmTAutoTestsWindows.class/instance/button.st
+++ /dev/null
@@ -1,4 +0,0 @@
-accessing
-button
-	^button
-	
\ No newline at end of file
diff --git a/SmartTest.package/SmTAutoTestsWindows.class/instance/extent.st b/SmartTest.package/SmTAutoTestsWindows.class/instance/extent.st
deleted file mode 100644
index 2c67358..0000000
--- a/SmartTest.package/SmTAutoTestsWindows.class/instance/extent.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-extent
-	^ 400 @ 200
\ No newline at end of file
diff --git a/SmartTest.package/SmTAutoTestsWindows.class/instance/icons.st b/SmartTest.package/SmTAutoTestsWindows.class/instance/icons.st
deleted file mode 100644
index 1a13cd5..0000000
--- a/SmartTest.package/SmTAutoTestsWindows.class/instance/icons.st
+++ /dev/null
@@ -1,4 +0,0 @@
-accessing
-icons 
-	^icons ifNil: [ icons := OrderedCollection new ]
-	
\ No newline at end of file
diff --git a/SmartTest.package/SmTAutoTestsWindows.class/instance/initializePresenter.st b/SmartTest.package/SmTAutoTestsWindows.class/instance/initializePresenter.st
deleted file mode 100644
index 0276c1f..0000000
--- a/SmartTest.package/SmTAutoTestsWindows.class/instance/initializePresenter.st
+++ /dev/null
@@ -1,7 +0,0 @@
-initialization
-initializePresenter
-	"Currently useless"
-
-	button
-		action:
-			[ testList listItems withIndexDo: [ :el :id | (self icons at: id) doButtonAction ] ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTAutoTestsWindows.class/instance/initializeWidgets.st b/SmartTest.package/SmTAutoTestsWindows.class/instance/initializeWidgets.st
deleted file mode 100644
index 3ae5210..0000000
--- a/SmartTest.package/SmTAutoTestsWindows.class/instance/initializeWidgets.st
+++ /dev/null
@@ -1,7 +0,0 @@
-initialization
-initializeWidgets
-	testList := IconListModel new.
-	button := self newButton.
-	button label: 'Run all test'.
-	self focusOrder add: testList.
-	
diff --git a/SmartTest.package/SmTAutoTestsWindows.class/instance/setList..st b/SmartTest.package/SmTAutoTestsWindows.class/instance/setList..st
deleted file mode 100644
index 47c0d44..0000000
--- a/SmartTest.package/SmTAutoTestsWindows.class/instance/setList..st
+++ /dev/null
@@ -1,8 +0,0 @@
-accessing
-setList: aTestList
-	^ testList
-		items: aTestList;
-		icons: [ :testMethod | 
-			| ib |
-			ib := SmTIconFabric createIconForMethod: testMethod.
-			self icons add: ib ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTAutoTestsWindows.class/instance/testList.st b/SmartTest.package/SmTAutoTestsWindows.class/instance/testList.st
deleted file mode 100644
index d44b749..0000000
--- a/SmartTest.package/SmTAutoTestsWindows.class/instance/testList.st
+++ /dev/null
@@ -1,4 +0,0 @@
-accessing
-testList
-	^testList
-	
\ No newline at end of file
diff --git a/SmartTest.package/SmTAutoTestsWindows.class/instance/title.st b/SmartTest.package/SmTAutoTestsWindows.class/instance/title.st
deleted file mode 100644
index f7aa3c8..0000000
--- a/SmartTest.package/SmTAutoTestsWindows.class/instance/title.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-title
-	^ 'AutoTest Selection'.
\ No newline at end of file
diff --git a/SmartTest.package/SmTAutoTestsWindows.class/properties.json b/SmartTest.package/SmTAutoTestsWindows.class/properties.json
deleted file mode 100644
index 1270a25..0000000
--- a/SmartTest.package/SmTAutoTestsWindows.class/properties.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-	"commentStamp" : "BenoitVerhaeghe 6/28/2017 09:32",
-	"super" : "ComposableModel",
-	"category" : "SmartTest-Morph",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [
-		"testList",
-		"button",
-		"icons"
-	],
-	"name" : "SmTAutoTestsWindows",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTBasicCacheStrategy.class/README.md b/SmartTest.package/SmTBasicCacheStrategy.class/README.md
deleted file mode 100644
index e69de29..0000000
diff --git a/SmartTest.package/SmTBasicCacheStrategy.class/instance/at..st b/SmartTest.package/SmTBasicCacheStrategy.class/instance/at..st
deleted file mode 100644
index b9fbb76..0000000
--- a/SmartTest.package/SmTBasicCacheStrategy.class/instance/at..st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-at: aMethodReference
-	^ self currentCache at: aMethodReference 
\ No newline at end of file
diff --git a/SmartTest.package/SmTBasicCacheStrategy.class/instance/at.ifAbsent..st b/SmartTest.package/SmTBasicCacheStrategy.class/instance/at.ifAbsent..st
deleted file mode 100644
index 6f59865..0000000
--- a/SmartTest.package/SmTBasicCacheStrategy.class/instance/at.ifAbsent..st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-at: methodReference ifAbsent: aBlock
-	^ self currentCache at: methodReference ifAbsent: aBlock
\ No newline at end of file
diff --git a/SmartTest.package/SmTBasicCacheStrategy.class/instance/at.ifPresent.ifAbsent..st b/SmartTest.package/SmTBasicCacheStrategy.class/instance/at.ifPresent.ifAbsent..st
deleted file mode 100644
index cbd4e07..0000000
--- a/SmartTest.package/SmTBasicCacheStrategy.class/instance/at.ifPresent.ifAbsent..st
+++ /dev/null
@@ -1,3 +0,0 @@
-private 
-at: key ifPresent: aPresentBlock ifAbsent: anAbsentBlock
-	^ self currentCache at: key ifPresent: aPresentBlock ifAbsent: anAbsentBlock
\ No newline at end of file
diff --git a/SmartTest.package/SmTBasicCacheStrategy.class/instance/at.put..st b/SmartTest.package/SmTBasicCacheStrategy.class/instance/at.put..st
deleted file mode 100644
index c7863a2..0000000
--- a/SmartTest.package/SmTBasicCacheStrategy.class/instance/at.put..st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-at: aMethodReference put: aCacheElement
-	^ self currentCache at: aMethodReference put: aCacheElement 
\ No newline at end of file
diff --git a/SmartTest.package/SmTBasicCacheStrategy.class/instance/currentCache.st b/SmartTest.package/SmTBasicCacheStrategy.class/instance/currentCache.st
deleted file mode 100644
index 15c0bfd..0000000
--- a/SmartTest.package/SmTBasicCacheStrategy.class/instance/currentCache.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-currentCache
-	^ cache 
\ No newline at end of file
diff --git a/SmartTest.package/SmTBasicCacheStrategy.class/instance/relevantTestsFor..st b/SmartTest.package/SmTBasicCacheStrategy.class/instance/relevantTestsFor..st
deleted file mode 100644
index 018ab01..0000000
--- a/SmartTest.package/SmTBasicCacheStrategy.class/instance/relevantTestsFor..st
+++ /dev/null
@@ -1,3 +0,0 @@
-private
-relevantTestsFor: aCompiledMethod
-	^ self currentCache at: aCompiledMethod methodReference ifAbsentPut: [ Set new ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTBasicCacheStrategy.class/instance/testsForMethodReference..st b/SmartTest.package/SmTBasicCacheStrategy.class/instance/testsForMethodReference..st
deleted file mode 100644
index b02e458..0000000
--- a/SmartTest.package/SmTBasicCacheStrategy.class/instance/testsForMethodReference..st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-testsForMethodReference: aMethodReference
-	^ self currentCache at: aMethodReference ifAbsentPut: [ Set new ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTBasicCacheStrategy.class/properties.json b/SmartTest.package/SmTBasicCacheStrategy.class/properties.json
deleted file mode 100644
index b2017c4..0000000
--- a/SmartTest.package/SmTBasicCacheStrategy.class/properties.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-	"commentStamp" : "",
-	"super" : "SmTCacheStrategy",
-	"category" : "SmartTest-Cache",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [ ],
-	"name" : "SmTBasicCacheStrategy",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTBigButtonCollector.class/README.md b/SmartTest.package/SmTBigButtonCollector.class/README.md
deleted file mode 100644
index 27e144b..0000000
--- a/SmartTest.package/SmTBigButtonCollector.class/README.md
+++ /dev/null
@@ -1 +0,0 @@
-The collector used by the Listener to save all the relative test method
\ No newline at end of file
diff --git a/SmartTest.package/SmTBigButtonCollector.class/class/activated..st b/SmartTest.package/SmTBigButtonCollector.class/class/activated..st
deleted file mode 100644
index 0a97ea8..0000000
--- a/SmartTest.package/SmTBigButtonCollector.class/class/activated..st
+++ /dev/null
@@ -1,4 +0,0 @@
-accessing
-activated: aSelector
-	activated := aSelector.
-	bigButton activated: aSelector
\ No newline at end of file
diff --git a/SmartTest.package/SmTBigButtonCollector.class/class/activated.st b/SmartTest.package/SmTBigButtonCollector.class/class/activated.st
deleted file mode 100644
index 14a1239..0000000
--- a/SmartTest.package/SmTBigButtonCollector.class/class/activated.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-activated
-	^ activated ifNil: [ activated := false ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTBigButtonCollector.class/class/bigButton.st b/SmartTest.package/SmTBigButtonCollector.class/class/bigButton.st
deleted file mode 100644
index 1073d44..0000000
--- a/SmartTest.package/SmTBigButtonCollector.class/class/bigButton.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-bigButton
-	^ bigButton
\ No newline at end of file
diff --git a/SmartTest.package/SmTBigButtonCollector.class/class/initialize.st b/SmartTest.package/SmTBigButtonCollector.class/class/initialize.st
deleted file mode 100644
index c46aa53..0000000
--- a/SmartTest.package/SmTBigButtonCollector.class/class/initialize.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-initialize
-	bigButton := self new
\ No newline at end of file
diff --git a/SmartTest.package/SmTBigButtonCollector.class/class/reset.st b/SmartTest.package/SmTBigButtonCollector.class/class/reset.st
deleted file mode 100644
index 78115e3..0000000
--- a/SmartTest.package/SmTBigButtonCollector.class/class/reset.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-reset
-	self bigButton collector: nil
\ No newline at end of file
diff --git a/SmartTest.package/SmTBigButtonCollector.class/class/settingsOn..st b/SmartTest.package/SmTBigButtonCollector.class/class/settingsOn..st
deleted file mode 100644
index 059e5bb..0000000
--- a/SmartTest.package/SmTBigButtonCollector.class/class/settingsOn..st
+++ /dev/null
@@ -1,22 +0,0 @@
-accessing
-settingsOn: aBuilder
-	<systemsettings>
-	(aBuilder setting: #activated)
-		parent: 'SmartTest';
-		target: self;
-		order: 0.01;
-		label: 'SmartTest Collect ButtonActivated';
-		description: 'Toogle to activate/disable the Big Button'.
-	(aBuilder group: #reset)
-		label: 'Big Button Reset Cache';
-		target: self;
-		parent: #SmartTest;
-		dialog: [ SimpleButtonMorph new
-				target: self;
-				label: 'Reset Bg Button SmartTest Cache';
-				actionSelector: #reset;
-				themeChanged;
-				yourself ];
-		description:
-			'Reset the cache of SmartTest
-		SmTTestFinderStrategy methodToTest'
\ No newline at end of file
diff --git a/SmartTest.package/SmTBigButtonCollector.class/instance/activated..st b/SmartTest.package/SmTBigButtonCollector.class/instance/activated..st
deleted file mode 100644
index 9c4a8e3..0000000
--- a/SmartTest.package/SmTBigButtonCollector.class/instance/activated..st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-activated: aSelector
-	aSelector ifTrue: [ self enable ] ifFalse: [ self disable ].
\ No newline at end of file
diff --git a/SmartTest.package/SmTBigButtonCollector.class/instance/changeColorFromTestResult..st b/SmartTest.package/SmTBigButtonCollector.class/instance/changeColorFromTestResult..st
deleted file mode 100644
index 46b47cd..0000000
--- a/SmartTest.package/SmTBigButtonCollector.class/instance/changeColorFromTestResult..st
+++ /dev/null
@@ -1,9 +0,0 @@
-accessing
-changeColorFromTestResult: aTestResult
-	morph buttonMorph color: Color gray.
-	aTestResult passedCount > 0
-		ifTrue: [ morph buttonMorph color: Color green ].
-	aTestResult hasFailures
-		ifTrue: [ morph buttonMorph color: Color yellow ].
-	aTestResult hasErrors
-		ifTrue: [ morph buttonMorph color: Color red ].
\ No newline at end of file
diff --git a/SmartTest.package/SmTBigButtonCollector.class/instance/collector..st b/SmartTest.package/SmTBigButtonCollector.class/instance/collector..st
deleted file mode 100644
index 61f4cdb..0000000
--- a/SmartTest.package/SmTBigButtonCollector.class/instance/collector..st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-collector: anObject
-	collector := anObject 
\ No newline at end of file
diff --git a/SmartTest.package/SmTBigButtonCollector.class/instance/collector.st b/SmartTest.package/SmTBigButtonCollector.class/instance/collector.st
deleted file mode 100644
index 230160c..0000000
--- a/SmartTest.package/SmTBigButtonCollector.class/instance/collector.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-collector
-	^ collector ifNil: [ collector := Set new ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTBigButtonCollector.class/instance/disable.st b/SmartTest.package/SmTBigButtonCollector.class/instance/disable.st
deleted file mode 100644
index 9b10bae..0000000
--- a/SmartTest.package/SmTBigButtonCollector.class/instance/disable.st
+++ /dev/null
@@ -1,5 +0,0 @@
-accessing
-disable
-	"Do not receiver any system change notification anymore"
-	morph window isClosed ifFalse: [ morph window close] .
-	SystemAnnouncer uniqueInstance unsubscribe: self
\ No newline at end of file
diff --git a/SmartTest.package/SmTBigButtonCollector.class/instance/enable.st b/SmartTest.package/SmTBigButtonCollector.class/instance/enable.st
deleted file mode 100644
index a510777..0000000
--- a/SmartTest.package/SmTBigButtonCollector.class/instance/enable.st
+++ /dev/null
@@ -1,5 +0,0 @@
-accessing
-enable
-	morph openWithSpec.
-	SystemAnnouncer uniqueInstance unsubscribe: self.
-	{(MethodModified -> #methodModified:)} do: [ :pair | SystemAnnouncer uniqueInstance weak when: pair key send: pair value to: self ].
diff --git a/SmartTest.package/SmTBigButtonCollector.class/instance/initialize.st b/SmartTest.package/SmTBigButtonCollector.class/instance/initialize.st
deleted file mode 100644
index ff13486..0000000
--- a/SmartTest.package/SmTBigButtonCollector.class/instance/initialize.st
+++ /dev/null
@@ -1,5 +0,0 @@
-accessing
-initialize
-	collector := Set new.
-	morph := SmTButtonResultWindow new.
-	morph controler: self.
\ No newline at end of file
diff --git a/SmartTest.package/SmTBigButtonCollector.class/instance/methodModified..st b/SmartTest.package/SmTBigButtonCollector.class/instance/methodModified..st
deleted file mode 100644
index 1e8e28c..0000000
--- a/SmartTest.package/SmTBigButtonCollector.class/instance/methodModified..st
+++ /dev/null
@@ -1,7 +0,0 @@
-accessing
-methodModified: anAnnouncement
-	| listOfTest |
-	listOfTest := (SmTRules testFinder findTestsForMethod: anAnnouncement newMethod) collect: #methodReference. 
-	self collector
-		addAll: listOfTest.
-	self updateUIAfterAddingMethod: listOfTest.
\ No newline at end of file
diff --git a/SmartTest.package/SmTBigButtonCollector.class/instance/notify.st b/SmartTest.package/SmTBigButtonCollector.class/instance/notify.st
deleted file mode 100644
index 711f318..0000000
--- a/SmartTest.package/SmTBigButtonCollector.class/instance/notify.st
+++ /dev/null
@@ -1,17 +0,0 @@
-accessing
-notify
-	| aTestResult |
-	aTestResult := SmTRules runner
-		runCases:
-			(self collector
-				collect:
-					[ :aMethodReference | aMethodReference methodClass selector: aMethodReference selector ]).
-	self
-		collector:
-			(self collector
-				reject: [ :a | 
-					((TestResult historyAt: a methodClass) at: #passed)
-						includes: a selector ]).
-	self updateNumberOfTheProgressCircle.
-	self changeColorFromTestResult: aTestResult.
-	morph fillFailedTestListFromTestResult: aTestResult
\ No newline at end of file
diff --git a/SmartTest.package/SmTBigButtonCollector.class/instance/updateList..st b/SmartTest.package/SmTBigButtonCollector.class/instance/updateList..st
deleted file mode 100644
index d8a8411..0000000
--- a/SmartTest.package/SmTBigButtonCollector.class/instance/updateList..st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-updateList: listOfTest
-	morph addToListTestsMethods: listOfTest
\ No newline at end of file
diff --git a/SmartTest.package/SmTBigButtonCollector.class/instance/updateNumberOfTheProgressCircle.st b/SmartTest.package/SmTBigButtonCollector.class/instance/updateNumberOfTheProgressCircle.st
deleted file mode 100644
index de0ab01..0000000
--- a/SmartTest.package/SmTBigButtonCollector.class/instance/updateNumberOfTheProgressCircle.st
+++ /dev/null
@@ -1,4 +0,0 @@
-accessing
-updateNumberOfTheProgressCircle
-	morph buttonText acceptValue: self collector size asTwoCharacterString.
-	morph buttonMorph color: Color gray.
\ No newline at end of file
diff --git a/SmartTest.package/SmTBigButtonCollector.class/instance/updateUIAfterAddingMethod..st b/SmartTest.package/SmTBigButtonCollector.class/instance/updateUIAfterAddingMethod..st
deleted file mode 100644
index 5837a0c..0000000
--- a/SmartTest.package/SmTBigButtonCollector.class/instance/updateUIAfterAddingMethod..st
+++ /dev/null
@@ -1,4 +0,0 @@
-accessing
-updateUIAfterAddingMethod: listOfTest
-	self updateNumberOfTheProgressCircle.
-	self updateList: listOfTest
\ No newline at end of file
diff --git a/SmartTest.package/SmTBigButtonCollector.class/properties.json b/SmartTest.package/SmTBigButtonCollector.class/properties.json
deleted file mode 100644
index 1cebfaa..0000000
--- a/SmartTest.package/SmTBigButtonCollector.class/properties.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-	"commentStamp" : "BenoitVerhaeghe 8/11/2017 08:48",
-	"super" : "SmTCollector",
-	"category" : "SmartTest-Collector",
-	"classinstvars" : [
-		"activated",
-		"bigButton"
-	],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [
-		"morph",
-		"collector"
-	],
-	"name" : "SmTBigButtonCollector",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTButtonResultWindow.class/README.md b/SmartTest.package/SmTButtonResultWindow.class/README.md
deleted file mode 100644
index e69de29..0000000
diff --git a/SmartTest.package/SmTButtonResultWindow.class/class/defaultSpec.st b/SmartTest.package/SmTButtonResultWindow.class/class/defaultSpec.st
deleted file mode 100644
index b16d0dc..0000000
--- a/SmartTest.package/SmTButtonResultWindow.class/class/defaultSpec.st
+++ /dev/null
@@ -1,6 +0,0 @@
-specs
-defaultSpec
-	^ SpecLayout composed
-		newColumn: [ :row | row add: #button ] left: 0 right: 0.6;
-		newColumn: [ :row | row add: #testList ] left: 0.4 right: 1;
-		yourself
\ No newline at end of file
diff --git a/SmartTest.package/SmTButtonResultWindow.class/instance/addToListTestsMethods..st b/SmartTest.package/SmTButtonResultWindow.class/instance/addToListTestsMethods..st
deleted file mode 100644
index 607e58c..0000000
--- a/SmartTest.package/SmTButtonResultWindow.class/instance/addToListTestsMethods..st
+++ /dev/null
@@ -1,7 +0,0 @@
-accessing
-addToListTestsMethods: newTestMethod
-	| list |
-	list := testList listItems asOrderedCollection.
-	list := (list collect: [ :a | (a class lookupSelector: a selector) methodReference  ]) asSet.
-	list addAll: newTestMethod.
-	self setList: ((list collect: [:methodReference | methodReference methodClass selector: methodReference selector]) asOrderedCollection sort: [ :a :b | a asString < b asString ] ) 
\ No newline at end of file
diff --git a/SmartTest.package/SmTButtonResultWindow.class/instance/button..st b/SmartTest.package/SmTButtonResultWindow.class/instance/button..st
deleted file mode 100644
index f917aa1..0000000
--- a/SmartTest.package/SmTButtonResultWindow.class/instance/button..st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-button: anObject
-	button := anObject
\ No newline at end of file
diff --git a/SmartTest.package/SmTButtonResultWindow.class/instance/button.st b/SmartTest.package/SmTButtonResultWindow.class/instance/button.st
deleted file mode 100644
index d11dd9b..0000000
--- a/SmartTest.package/SmTButtonResultWindow.class/instance/button.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-button
-	^ button
\ No newline at end of file
diff --git a/SmartTest.package/SmTButtonResultWindow.class/instance/buttonMorph.st b/SmartTest.package/SmTButtonResultWindow.class/instance/buttonMorph.st
deleted file mode 100644
index 08443b9..0000000
--- a/SmartTest.package/SmTButtonResultWindow.class/instance/buttonMorph.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-buttonMorph
-	^ button morph
\ No newline at end of file
diff --git a/SmartTest.package/SmTButtonResultWindow.class/instance/buttonText..st b/SmartTest.package/SmTButtonResultWindow.class/instance/buttonText..st
deleted file mode 100644
index 96b2d79..0000000
--- a/SmartTest.package/SmTButtonResultWindow.class/instance/buttonText..st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-buttonText: anObject
-	buttonText := anObject
\ No newline at end of file
diff --git a/SmartTest.package/SmTButtonResultWindow.class/instance/buttonText.st b/SmartTest.package/SmTButtonResultWindow.class/instance/buttonText.st
deleted file mode 100644
index 0bcf5c7..0000000
--- a/SmartTest.package/SmTButtonResultWindow.class/instance/buttonText.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-buttonText
-	^ buttonText
\ No newline at end of file
diff --git a/SmartTest.package/SmTButtonResultWindow.class/instance/controler..st b/SmartTest.package/SmTButtonResultWindow.class/instance/controler..st
deleted file mode 100644
index 9d82fe1..0000000
--- a/SmartTest.package/SmTButtonResultWindow.class/instance/controler..st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-controler: anObject
-	 self button morph controler: anObject
\ No newline at end of file
diff --git a/SmartTest.package/SmTButtonResultWindow.class/instance/controler.st b/SmartTest.package/SmTButtonResultWindow.class/instance/controler.st
deleted file mode 100644
index d61b5dc..0000000
--- a/SmartTest.package/SmTButtonResultWindow.class/instance/controler.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-controler
-	^controler
\ No newline at end of file
diff --git a/SmartTest.package/SmTButtonResultWindow.class/instance/extent.st b/SmartTest.package/SmTButtonResultWindow.class/instance/extent.st
deleted file mode 100644
index 90cd0d1..0000000
--- a/SmartTest.package/SmTButtonResultWindow.class/instance/extent.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-extent
-	^ 600 @ 300
\ No newline at end of file
diff --git a/SmartTest.package/SmTButtonResultWindow.class/instance/fillFailedTestListFromTestResult..st b/SmartTest.package/SmTButtonResultWindow.class/instance/fillFailedTestListFromTestResult..st
deleted file mode 100644
index 3417604..0000000
--- a/SmartTest.package/SmTButtonResultWindow.class/instance/fillFailedTestListFromTestResult..st
+++ /dev/null
@@ -1,9 +0,0 @@
-accessing
-fillFailedTestListFromTestResult: aTestResult
-	| list |
-	list := testList listItems asOrderedCollection .
-	list := list reject: [ :a | ((TestResult historyAt: a class) at: #passed) includes: a selector ].
-	list addAll: aTestResult errors.
-	list addAll: aTestResult failures.
-	list := (list collect: [ :a | (a class lookupSelector: a selector) methodReference  ]) asSet.
-	self setList: ((list collect: [:methodReference | methodReference methodClass selector: methodReference selector]) asOrderedCollection sort: [ :a :b | a asString < b asString ] ) 
\ No newline at end of file
diff --git a/SmartTest.package/SmTButtonResultWindow.class/instance/icons..st b/SmartTest.package/SmTButtonResultWindow.class/instance/icons..st
deleted file mode 100644
index b35d0d7..0000000
--- a/SmartTest.package/SmTButtonResultWindow.class/instance/icons..st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-icons: anObject
-	icons := anObject
\ No newline at end of file
diff --git a/SmartTest.package/SmTButtonResultWindow.class/instance/icons.st b/SmartTest.package/SmTButtonResultWindow.class/instance/icons.st
deleted file mode 100644
index 513b4d0..0000000
--- a/SmartTest.package/SmTButtonResultWindow.class/instance/icons.st
+++ /dev/null
@@ -1,4 +0,0 @@
-accessing
-icons
-	^icons ifNil: [ icons := OrderedCollection new ]
-	
\ No newline at end of file
diff --git a/SmartTest.package/SmTButtonResultWindow.class/instance/initializeWidgets.st b/SmartTest.package/SmTButtonResultWindow.class/instance/initializeWidgets.st
deleted file mode 100644
index b47da3c..0000000
--- a/SmartTest.package/SmTButtonResultWindow.class/instance/initializeWidgets.st
+++ /dev/null
@@ -1,19 +0,0 @@
-accessing
-initializeWidgets
-	testList := IconListModel new.
-	button := (SmTProgressCircle new
-		controler: self;
-		percentage: 100;
-		extent: 400@200;
-		color: Color gray) asSpecAdapter.
-	
-	buttonText := ('00' asStringMorph
-		font: (LogicalFont familyName: 'Source Sans Pro' pointSize: 50) emphasis: 2;
-		position: 60@60;
-		color: Color white;
-		yourself).
-	
-	self buttonMorph addMorphFront: buttonText.
-		
-
-	self focusOrder add: testList.
\ No newline at end of file
diff --git a/SmartTest.package/SmTButtonResultWindow.class/instance/setList..st b/SmartTest.package/SmTButtonResultWindow.class/instance/setList..st
deleted file mode 100644
index 4684852..0000000
--- a/SmartTest.package/SmTButtonResultWindow.class/instance/setList..st
+++ /dev/null
@@ -1,8 +0,0 @@
-initialization
-setList: aTestList
-	^ testList
-		items: aTestList;
-		icons: [ :testMethod | 
-			| ib |
-			ib := SmTIconFabric createIconForMethod: testMethod.
-			self icons add: ib ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTButtonResultWindow.class/instance/testList..st b/SmartTest.package/SmTButtonResultWindow.class/instance/testList..st
deleted file mode 100644
index ff6ed96..0000000
--- a/SmartTest.package/SmTButtonResultWindow.class/instance/testList..st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-testList: anObject
-	testList := anObject
\ No newline at end of file
diff --git a/SmartTest.package/SmTButtonResultWindow.class/instance/testList.st b/SmartTest.package/SmTButtonResultWindow.class/instance/testList.st
deleted file mode 100644
index 62b6a13..0000000
--- a/SmartTest.package/SmTButtonResultWindow.class/instance/testList.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-testList
-	^ testList
\ No newline at end of file
diff --git a/SmartTest.package/SmTButtonResultWindow.class/instance/title.st b/SmartTest.package/SmTButtonResultWindow.class/instance/title.st
deleted file mode 100644
index b4888f0..0000000
--- a/SmartTest.package/SmTButtonResultWindow.class/instance/title.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-title
-	^ 'Tests Results'.
\ No newline at end of file
diff --git a/SmartTest.package/SmTButtonResultWindow.class/properties.json b/SmartTest.package/SmTButtonResultWindow.class/properties.json
deleted file mode 100644
index 8fea311..0000000
--- a/SmartTest.package/SmTButtonResultWindow.class/properties.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-	"commentStamp" : "",
-	"super" : "ComposableModel",
-	"category" : "SmartTest-Morph",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [
-		"testList",
-		"button",
-		"icons",
-		"controler",
-		"buttonText"
-	],
-	"name" : "SmTButtonResultWindow",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTCacheBuilderTest.class/README.md b/SmartTest.package/SmTCacheBuilderTest.class/README.md
deleted file mode 100644
index fab72dd..0000000
--- a/SmartTest.package/SmTCacheBuilderTest.class/README.md
+++ /dev/null
@@ -1 +0,0 @@
-This class aims to test the construction of the cache in the context of dynamic method analysis.
\ No newline at end of file
diff --git a/SmartTest.package/SmTCacheBuilderTest.class/instance/searchTestMethodsFor..st b/SmartTest.package/SmTCacheBuilderTest.class/instance/searchTestMethodsFor..st
deleted file mode 100644
index 509300c..0000000
--- a/SmartTest.package/SmTCacheBuilderTest.class/instance/searchTestMethodsFor..st
+++ /dev/null
@@ -1,4 +0,0 @@
-helpers
-searchTestMethodsFor: aCompiledMethod
-	
-	^ smartFinder resarchTestsForMethod: aCompiledMethod .
\ No newline at end of file
diff --git a/SmartTest.package/SmTCacheBuilderTest.class/instance/setUp.st b/SmartTest.package/SmTCacheBuilderTest.class/instance/setUp.st
deleted file mode 100644
index 3bffb3e..0000000
--- a/SmartTest.package/SmTCacheBuilderTest.class/instance/setUp.st
+++ /dev/null
@@ -1,10 +0,0 @@
-initialization
-setUp
-	smartFinder := SmartFinder new.
-	smartFinder filter: SmTDefaultClassPackagesFilter new.
-	"the cache is initially empty"
-	smartFinder autoUpdateCache: false.
-	smartFinder cacheClass: SmTBasicCacheStrategy new.
-	smartFinder resetCache.
-	smartFinder smtFinder: SmTTestCoverageTestFinderStrategy new.
-	smartFinder autoUpdateCache: true
\ No newline at end of file
diff --git a/SmartTest.package/SmTCacheBuilderTest.class/instance/tearDown.st b/SmartTest.package/SmTCacheBuilderTest.class/instance/tearDown.st
deleted file mode 100644
index cbbaee6..0000000
--- a/SmartTest.package/SmTCacheBuilderTest.class/instance/tearDown.st
+++ /dev/null
@@ -1,4 +0,0 @@
-initialization
-tearDown
-	smartFinder autoUpdateCache: false
-	
\ No newline at end of file
diff --git a/SmartTest.package/SmTCacheBuilderTest.class/instance/testResarchTestsForStandardMethodWhileEmptyCache.st b/SmartTest.package/SmTCacheBuilderTest.class/instance/testResarchTestsForStandardMethodWhileEmptyCache.st
deleted file mode 100644
index 250015e..0000000
--- a/SmartTest.package/SmTCacheBuilderTest.class/instance/testResarchTestsForStandardMethodWhileEmptyCache.st
+++ /dev/null
@@ -1,9 +0,0 @@
-tests
-testResarchTestsForStandardMethodWhileEmptyCache
-	<CORATestBlacklisted>
-	| testsFound |
-	self assert: smartFinder cacheValues isEmpty.
-	testsFound := self searchTestMethodsFor: SmTClass >> #method2.
-	self assert: smartFinder cacheValues isEmpty.
-	self assert: testsFound isEmpty.
-	
diff --git a/SmartTest.package/SmTCacheBuilderTest.class/instance/testRunningTestMethod1ToBuildCache.st b/SmartTest.package/SmTCacheBuilderTest.class/instance/testRunningTestMethod1ToBuildCache.st
deleted file mode 100644
index 3048846..0000000
--- a/SmartTest.package/SmTCacheBuilderTest.class/instance/testRunningTestMethod1ToBuildCache.st
+++ /dev/null
@@ -1,13 +0,0 @@
-tests
-testRunningTestMethod1ToBuildCache
-	<CORATestBlacklisted>
-	self assert: smartFinder cacheValues isEmpty.
-	SmTClassTest run: #testMethod1.
-	"Running the test fill the cache that is then no more empty but contains only the association between SmTClass>>method1 and SmTClassTest>>testMethod1"
-	self assert: smartFinder cacheValues isNotEmpty.
-	self assert: smartFinder cacheValues size equals: 2.
-
-	"Not sure about the format of the dictionnary."
-	self
-		assert: (smartFinder cacheValues at: (RGMethodDefinition className: 'SmTClass' selector: #method1 isMetaSide: false))
-		equals: {(RGMethodDefinition className: 'SmTClassTest' selector: #testMethod1 isMetaSide: false)} asSet
\ No newline at end of file
diff --git a/SmartTest.package/SmTCacheBuilderTest.class/instance/testRunningTestMethod2ToBuildCache.st b/SmartTest.package/SmTCacheBuilderTest.class/instance/testRunningTestMethod2ToBuildCache.st
deleted file mode 100644
index cb72a4b..0000000
--- a/SmartTest.package/SmTCacheBuilderTest.class/instance/testRunningTestMethod2ToBuildCache.st
+++ /dev/null
@@ -1,40 +0,0 @@
-tests
-testRunningTestMethod2ToBuildCache
-	<CORATestBlacklisted>
-	self assert: smartFinder cacheValues isEmpty.
-	SmTClassTest run: #testMethod2.
-	"Running the test fill the cache that is then no more empty but contains only the association between SmTClass>>methodi (with i = 1 to 4) and SmTClassTest>>testMethod2. The cache should contain 4 associations one per each method as key and testMethod2 asValue"
-	self assert: smartFinder cacheValues isNotEmpty.
-	self
-		assert: smartFinder cacheValues size
-		equals: 5. 
-	self
-		assert:
-			(smartFinder cacheValues
-				at: (RGMethodDefinition className: 'SmTClass' selector: #method1 isMetaSide: false))
-		equals:
-			{(RGMethodDefinition className: 'SmTClassTest' selector: #testMethod2 isMetaSide: false)}
-				asSet.
-
-	"Not sure about the format of the dictionnary."
-	self
-		assert:
-			(smartFinder cacheValues
-				at: (RGMethodDefinition className: 'SmTClass' selector: #method2 isMetaSide: false))
-		equals:
-			{(RGMethodDefinition className: 'SmTClassTest' selector: #testMethod2 isMetaSide: false)}
-				asSet.
-	self
-		assert:
-			(smartFinder cacheValues
-				at: (RGMethodDefinition className: 'SmTClass' selector: #method3: isMetaSide: false))
-		equals:
-			{(RGMethodDefinition className: 'SmTClassTest' selector: #testMethod2 isMetaSide: false)}
-				asSet.
-	self
-		assert:
-			(smartFinder cacheValues
-				at: (RGMethodDefinition className: 'SmTClass' selector: #method4 isMetaSide: false))
-		equals:
-			{(RGMethodDefinition className: 'SmTClassTest' selector: #testMethod2 isMetaSide: false)}
-				asSet
\ No newline at end of file
diff --git a/SmartTest.package/SmTCacheBuilderTest.class/instance/testRunningTestMethod5ToBuildCache.st b/SmartTest.package/SmTCacheBuilderTest.class/instance/testRunningTestMethod5ToBuildCache.st
deleted file mode 100644
index e1a569c..0000000
--- a/SmartTest.package/SmTCacheBuilderTest.class/instance/testRunningTestMethod5ToBuildCache.st
+++ /dev/null
@@ -1,17 +0,0 @@
-tests
-testRunningTestMethod5ToBuildCache
-	"This test if SmTTestCoverage find the initialize call"
-
-	<CORATestBlacklisted>
-	self assert: smartFinder cacheValues isEmpty.
-	SmTClassTest run: #testMethod5.
-	"Running the test fill the cache that is then no more empty but contains only the association between SmTClass>>method1 and SmTClassTest>>testMethod1"
-	self assert: smartFinder cacheValues isNotEmpty.
-	self assert: smartFinder cacheValues size equals: 2.
-
-	self
-		assert: (smartFinder cacheValues at: (RGMethodDefinition className: 'SmTClass2' selector: #initialize isMetaSide: false))
-		equals: {(RGMethodDefinition className: 'SmTClassTest' selector: #testMethod5 isMetaSide: false)} asSet.
-			self
-		assert: (smartFinder cacheValues at: (RGMethodDefinition className: 'SmTClassTest' selector: #testMethod5 isMetaSide: false))
-		equals: {(RGMethodDefinition className: 'SmTClassTest' selector: #testMethod5 isMetaSide: false)} asSet
\ No newline at end of file
diff --git a/SmartTest.package/SmTCacheBuilderTest.class/properties.json b/SmartTest.package/SmTCacheBuilderTest.class/properties.json
deleted file mode 100644
index 7df7b8a..0000000
--- a/SmartTest.package/SmTCacheBuilderTest.class/properties.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-	"commentStamp" : "AnneEtien 3/2/2018 15:34",
-	"super" : "TestCase",
-	"category" : "SmartTest-Tests",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [
-		"cache",
-		"smartFinder"
-	],
-	"name" : "SmTCacheBuilderTest",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTCacheStrategy.class/README.md b/SmartTest.package/SmTCacheStrategy.class/README.md
deleted file mode 100644
index e69de29..0000000
diff --git a/SmartTest.package/SmTCacheStrategy.class/class/settingsOn..st b/SmartTest.package/SmTCacheStrategy.class/class/settingsOn..st
deleted file mode 100644
index 715378b..0000000
--- a/SmartTest.package/SmTCacheStrategy.class/class/settingsOn..st
+++ /dev/null
@@ -1,16 +0,0 @@
-settings
-settingsOn: aBuilder
-	<systemsettings>
-	(aBuilder group: #reset)
-		label: 'Reset Cache';
-		target: self;
-		parent: #SmartTest;
-		dialog: [ SimpleButtonMorph new
-				target: SmTTestFinderStrategy;
-				label: 'Reset Current SmartTest Cache';
-				actionSelector: #resetMethodToTestCache;
-				themeChanged;
-				yourself ];
-		description:
-			'Reset the cache of SmartTest
-		SmTTestFinderStrategy methodToTest'
\ No newline at end of file
diff --git a/SmartTest.package/SmTCacheStrategy.class/instance/at..st b/SmartTest.package/SmTCacheStrategy.class/instance/at..st
deleted file mode 100644
index d47a8f2..0000000
--- a/SmartTest.package/SmTCacheStrategy.class/instance/at..st
+++ /dev/null
@@ -1,3 +0,0 @@
-at
-at: aMethodReference
-	self subclassResponsibility 
\ No newline at end of file
diff --git a/SmartTest.package/SmTCacheStrategy.class/instance/at.ifAbsent..st b/SmartTest.package/SmTCacheStrategy.class/instance/at.ifAbsent..st
deleted file mode 100644
index a6fefcd..0000000
--- a/SmartTest.package/SmTCacheStrategy.class/instance/at.ifAbsent..st
+++ /dev/null
@@ -1,3 +0,0 @@
-at
-at: aCompiledMethod ifAbsent: aBlock
-	^ self subclassResponsibility 
\ No newline at end of file
diff --git a/SmartTest.package/SmTCacheStrategy.class/instance/at.ifPresent.ifAbsent..st b/SmartTest.package/SmTCacheStrategy.class/instance/at.ifPresent.ifAbsent..st
deleted file mode 100644
index e8a4214..0000000
--- a/SmartTest.package/SmTCacheStrategy.class/instance/at.ifPresent.ifAbsent..st
+++ /dev/null
@@ -1,3 +0,0 @@
-private
-at: key ifPresent: aPresentBlock ifAbsent: anAbsentBlock
-	self subclassResponsibility 
\ No newline at end of file
diff --git a/SmartTest.package/SmTCacheStrategy.class/instance/at.put..st b/SmartTest.package/SmTCacheStrategy.class/instance/at.put..st
deleted file mode 100644
index 2dd4f56..0000000
--- a/SmartTest.package/SmTCacheStrategy.class/instance/at.put..st
+++ /dev/null
@@ -1,3 +0,0 @@
-at
-at: aMethodReference put: aCacheElement
-	self subclassResponsibility 
\ No newline at end of file
diff --git a/SmartTest.package/SmTCacheStrategy.class/instance/cache..st b/SmartTest.package/SmTCacheStrategy.class/instance/cache..st
deleted file mode 100644
index 86af1ab..0000000
--- a/SmartTest.package/SmTCacheStrategy.class/instance/cache..st
+++ /dev/null
@@ -1,3 +0,0 @@
-at
-cache: aDictionary
-	cache := aDictionary 
\ No newline at end of file
diff --git a/SmartTest.package/SmTCacheStrategy.class/instance/currentCache.st b/SmartTest.package/SmTCacheStrategy.class/instance/currentCache.st
deleted file mode 100644
index 098c490..0000000
--- a/SmartTest.package/SmTCacheStrategy.class/instance/currentCache.st
+++ /dev/null
@@ -1,3 +0,0 @@
-private
-currentCache
-	self subclassResponsibility 
\ No newline at end of file
diff --git a/SmartTest.package/SmTCacheStrategy.class/instance/relevantTestsFor..st b/SmartTest.package/SmTCacheStrategy.class/instance/relevantTestsFor..st
deleted file mode 100644
index bd7fbc5..0000000
--- a/SmartTest.package/SmTCacheStrategy.class/instance/relevantTestsFor..st
+++ /dev/null
@@ -1,3 +0,0 @@
-private
-relevantTestsFor: aCompiledMethod
-	self subclassResponsibility
\ No newline at end of file
diff --git a/SmartTest.package/SmTCacheStrategy.class/instance/testsForMethodReference..st b/SmartTest.package/SmTCacheStrategy.class/instance/testsForMethodReference..st
deleted file mode 100644
index da0a187..0000000
--- a/SmartTest.package/SmTCacheStrategy.class/instance/testsForMethodReference..st
+++ /dev/null
@@ -1,3 +0,0 @@
-private
-testsForMethodReference: aMethodReference
-	self subclassResponsibility 
\ No newline at end of file
diff --git a/SmartTest.package/SmTCacheStrategy.class/properties.json b/SmartTest.package/SmTCacheStrategy.class/properties.json
deleted file mode 100644
index 99a76fe..0000000
--- a/SmartTest.package/SmTCacheStrategy.class/properties.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-	"commentStamp" : "",
-	"super" : "Object",
-	"category" : "SmartTest-Cache",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [
-		"cache"
-	],
-	"name" : "SmTCacheStrategy",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTClass.class/instance/method1.st b/SmartTest.package/SmTClass.class/instance/method1.st
deleted file mode 100644
index a48bad8..0000000
--- a/SmartTest.package/SmTClass.class/instance/method1.st
+++ /dev/null
@@ -1,5 +0,0 @@
-test data
-method1
-	"this is data for SmTFinderAbstractTest tests"
-	^ instVar1 
-	
\ No newline at end of file
diff --git a/SmartTest.package/SmTClass.class/instance/method2.st b/SmartTest.package/SmTClass.class/instance/method2.st
deleted file mode 100644
index 812f754..0000000
--- a/SmartTest.package/SmTClass.class/instance/method2.st
+++ /dev/null
@@ -1,4 +0,0 @@
-test data
-method2
-	"this is data for SmTFinderAbstractTest tests"
-	self method3: self method1
\ No newline at end of file
diff --git a/SmartTest.package/SmTClass.class/instance/method3..st b/SmartTest.package/SmTClass.class/instance/method3..st
deleted file mode 100644
index cc6e3ff..0000000
--- a/SmartTest.package/SmTClass.class/instance/method3..st
+++ /dev/null
@@ -1,5 +0,0 @@
-test data
-method3: anObject
-	"this is data for SmTFinderAbstractTest tests"
-	instVar2 := anObject.
-	self method4
\ No newline at end of file
diff --git a/SmartTest.package/SmTClass.class/instance/method4.st b/SmartTest.package/SmTClass.class/instance/method4.st
deleted file mode 100644
index 3e07236..0000000
--- a/SmartTest.package/SmTClass.class/instance/method4.st
+++ /dev/null
@@ -1,4 +0,0 @@
-test data
-method4
-	"this is data for SmTFinderAbstractTest tests"
-	^ instVar2
\ No newline at end of file
diff --git a/SmartTest.package/SmTClass.class/properties.json b/SmartTest.package/SmTClass.class/properties.json
deleted file mode 100644
index bed4fca..0000000
--- a/SmartTest.package/SmTClass.class/properties.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-	"commentStamp" : "NicolasAnquetil 3/5/2018 09:45",
-	"super" : "Object",
-	"category" : "SmartTest-Tests-Data",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [
-		"instVar1",
-		"instVar2"
-	],
-	"name" : "SmTClass",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTClass2.class/README.md b/SmartTest.package/SmTClass2.class/README.md
deleted file mode 100644
index e69de29..0000000
diff --git a/SmartTest.package/SmTClass2.class/instance/initialize.st b/SmartTest.package/SmTClass2.class/instance/initialize.st
deleted file mode 100644
index 890d8b1..0000000
--- a/SmartTest.package/SmTClass2.class/instance/initialize.st
+++ /dev/null
@@ -1,3 +0,0 @@
-initialization
-initialize
-	instVar1 := nil.
\ No newline at end of file
diff --git a/SmartTest.package/SmTClass2.class/properties.json b/SmartTest.package/SmTClass2.class/properties.json
deleted file mode 100644
index 5d05d2a..0000000
--- a/SmartTest.package/SmTClass2.class/properties.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-	"commentStamp" : "",
-	"super" : "Object",
-	"category" : "SmartTest-Tests-Data",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [
-		"instVar1",
-		"instVar2"
-	],
-	"name" : "SmTClass2",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTClassNeedTestsCritique.class/README.md b/SmartTest.package/SmTClassNeedTestsCritique.class/README.md
deleted file mode 100644
index fc1086f..0000000
--- a/SmartTest.package/SmTClassNeedTestsCritique.class/README.md
+++ /dev/null
@@ -1 +0,0 @@
-The critique that explains you need to write tests for this class
\ No newline at end of file
diff --git a/SmartTest.package/SmTClassNeedTestsCritique.class/instance/description.st b/SmartTest.package/SmTClassNeedTestsCritique.class/instance/description.st
deleted file mode 100644
index a8da552..0000000
--- a/SmartTest.package/SmTClassNeedTestsCritique.class/instance/description.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-description
-	^'You should always write tests your classes to ensure the fiability of your code'
\ No newline at end of file
diff --git a/SmartTest.package/SmTClassNeedTestsCritique.class/instance/title.st b/SmartTest.package/SmTClassNeedTestsCritique.class/instance/title.st
deleted file mode 100644
index 60b4648..0000000
--- a/SmartTest.package/SmTClassNeedTestsCritique.class/instance/title.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-title
-	^ 'You should write tests for your class'
\ No newline at end of file
diff --git a/SmartTest.package/SmTClassNeedTestsCritique.class/properties.json b/SmartTest.package/SmTClassNeedTestsCritique.class/properties.json
deleted file mode 100644
index 60255e2..0000000
--- a/SmartTest.package/SmTClassNeedTestsCritique.class/properties.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-	"commentStamp" : "BenoitVerhaeghe 6/28/2017 14:17",
-	"super" : "SmTNeedTestsCritique",
-	"category" : "SmartTest-Critiques",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [ ],
-	"name" : "SmTClassNeedTestsCritique",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTClassRelativeTestsCritique.class/README.md b/SmartTest.package/SmTClassRelativeTestsCritique.class/README.md
deleted file mode 100644
index edf4769..0000000
--- a/SmartTest.package/SmTClassRelativeTestsCritique.class/README.md
+++ /dev/null
@@ -1 +0,0 @@
-The critique that explains you need to run test for this class
\ No newline at end of file
diff --git a/SmartTest.package/SmTClassRelativeTestsCritique.class/class/for.by.tests..st b/SmartTest.package/SmTClassRelativeTestsCritique.class/class/for.by.tests..st
deleted file mode 100644
index 43eadaf..0000000
--- a/SmartTest.package/SmTClassRelativeTestsCritique.class/class/for.by.tests..st
+++ /dev/null
@@ -1,5 +0,0 @@
-instance creation
-for: anEntity by: aRule tests: aTestList
-	^ self basicNew
-		initializeRule: aRule target: anEntity testsList: aTestList;
-		yourself
\ No newline at end of file
diff --git a/SmartTest.package/SmTClassRelativeTestsCritique.class/instance/description.st b/SmartTest.package/SmTClassRelativeTestsCritique.class/instance/description.st
deleted file mode 100644
index d0f3415..0000000
--- a/SmartTest.package/SmTClassRelativeTestsCritique.class/instance/description.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-description
-	^'You should always run tests your classes to ensure the fiability of your code'
\ No newline at end of file
diff --git a/SmartTest.package/SmTClassRelativeTestsCritique.class/instance/title.st b/SmartTest.package/SmTClassRelativeTestsCritique.class/instance/title.st
deleted file mode 100644
index 7977473..0000000
--- a/SmartTest.package/SmTClassRelativeTestsCritique.class/instance/title.st
+++ /dev/null
@@ -1,5 +0,0 @@
-accessing
-title
-	 (self hasModifications)
-				ifTrue: [ ^ 'You should run tests relative to your last modification' ].
-	^ 'You should run these tests'
\ No newline at end of file
diff --git a/SmartTest.package/SmTClassRelativeTestsCritique.class/properties.json b/SmartTest.package/SmTClassRelativeTestsCritique.class/properties.json
deleted file mode 100644
index 23c3738..0000000
--- a/SmartTest.package/SmTClassRelativeTestsCritique.class/properties.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-	"commentStamp" : "BenoitVerhaeghe 6/28/2017 14:17",
-	"super" : "SmTRelativeTestsCritique",
-	"category" : "SmartTest-Critiques",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [ ],
-	"name" : "SmTClassRelativeTestsCritique",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTClassTest.class/README.md b/SmartTest.package/SmTClassTest.class/README.md
deleted file mode 100644
index b42ebde..0000000
--- a/SmartTest.package/SmTClassTest.class/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-Companion class of SmTClass totest SmartTest.
-
-Each test here exercise a method of SmTClass
diff --git a/SmartTest.package/SmTClassTest.class/instance/setUp.st b/SmartTest.package/SmTClassTest.class/instance/setUp.st
deleted file mode 100644
index 9ab9032..0000000
--- a/SmartTest.package/SmTClassTest.class/instance/setUp.st
+++ /dev/null
@@ -1,3 +0,0 @@
-test data
-setUp
-	"this is data for SmTFinderAbstractTest tests"
\ No newline at end of file
diff --git a/SmartTest.package/SmTClassTest.class/instance/tearDown.st b/SmartTest.package/SmTClassTest.class/instance/tearDown.st
deleted file mode 100644
index 1dba8c5..0000000
--- a/SmartTest.package/SmTClassTest.class/instance/tearDown.st
+++ /dev/null
@@ -1,3 +0,0 @@
-test data
-tearDown
-	"this is data for SmTFinderAbstractTest tests"
\ No newline at end of file
diff --git a/SmartTest.package/SmTClassTest.class/instance/testMethod1.st b/SmartTest.package/SmTClassTest.class/instance/testMethod1.st
deleted file mode 100644
index 84bc2a3..0000000
--- a/SmartTest.package/SmTClassTest.class/instance/testMethod1.st
+++ /dev/null
@@ -1,5 +0,0 @@
-test data
-testMethod1
-	"this is data for SmTFinderAbstractTest tests"
-	^ SmTClass new method1 
-	
\ No newline at end of file
diff --git a/SmartTest.package/SmTClassTest.class/instance/testMethod2.st b/SmartTest.package/SmTClassTest.class/instance/testMethod2.st
deleted file mode 100644
index b1f5e80..0000000
--- a/SmartTest.package/SmTClassTest.class/instance/testMethod2.st
+++ /dev/null
@@ -1,5 +0,0 @@
-test data
-testMethod2
-	"this is data for SmTFinderAbstractTest tests"
-	^ SmTClass new method2 
-	
\ No newline at end of file
diff --git a/SmartTest.package/SmTClassTest.class/instance/testMethod3.st b/SmartTest.package/SmTClassTest.class/instance/testMethod3.st
deleted file mode 100644
index a02530f..0000000
--- a/SmartTest.package/SmTClassTest.class/instance/testMethod3.st
+++ /dev/null
@@ -1,5 +0,0 @@
-test data
-testMethod3
-	"this is data for SmTFinderAbstractTest tests"
-	^ SmTClass new method3: 3. 
-	
\ No newline at end of file
diff --git a/SmartTest.package/SmTClassTest.class/instance/testMethod4.st b/SmartTest.package/SmTClassTest.class/instance/testMethod4.st
deleted file mode 100644
index 821c31c..0000000
--- a/SmartTest.package/SmTClassTest.class/instance/testMethod4.st
+++ /dev/null
@@ -1,5 +0,0 @@
-test data
-testMethod4
-	"this is data for SmTFinderAbstractTest tests"
-	^ SmTClass new method4 
-	
\ No newline at end of file
diff --git a/SmartTest.package/SmTClassTest.class/instance/testMethod5.st b/SmartTest.package/SmTClassTest.class/instance/testMethod5.st
deleted file mode 100644
index 397ba21..0000000
--- a/SmartTest.package/SmTClassTest.class/instance/testMethod5.st
+++ /dev/null
@@ -1,3 +0,0 @@
-test data
-testMethod5
-	^ SmTClass2 new. 
\ No newline at end of file
diff --git a/SmartTest.package/SmTClassTest.class/properties.json b/SmartTest.package/SmTClassTest.class/properties.json
deleted file mode 100644
index 479e4b8..0000000
--- a/SmartTest.package/SmTClassTest.class/properties.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-	"commentStamp" : "NicolasAnquetil 3/5/2018 09:45",
-	"super" : "TestCase",
-	"category" : "SmartTest-Tests-Data",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [ ],
-	"name" : "SmTClassTest",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTClassTestedRule.class/README.md b/SmartTest.package/SmTClassTestedRule.class/README.md
deleted file mode 100644
index b9f6182..0000000
--- a/SmartTest.package/SmTClassTestedRule.class/README.md
+++ /dev/null
@@ -1 +0,0 @@
-I check class tests
\ No newline at end of file
diff --git a/SmartTest.package/SmTClassTestedRule.class/class/checksClass.st b/SmartTest.package/SmTClassTestedRule.class/class/checksClass.st
deleted file mode 100644
index 47eecb8..0000000
--- a/SmartTest.package/SmTClassTestedRule.class/class/checksClass.st
+++ /dev/null
@@ -1,3 +0,0 @@
-testing-interest
-checksClass
-	^ true
\ No newline at end of file
diff --git a/SmartTest.package/SmTClassTestedRule.class/class/classActivated..st b/SmartTest.package/SmTClassTestedRule.class/class/classActivated..st
deleted file mode 100644
index d7a8cac..0000000
--- a/SmartTest.package/SmTClassTestedRule.class/class/classActivated..st
+++ /dev/null
@@ -1,3 +0,0 @@
-testing-interest
-classActivated: aSelector
-	ClassActivated := aSelector
\ No newline at end of file
diff --git a/SmartTest.package/SmTClassTestedRule.class/class/classActivated.st b/SmartTest.package/SmTClassTestedRule.class/class/classActivated.st
deleted file mode 100644
index 0f3e75d..0000000
--- a/SmartTest.package/SmTClassTestedRule.class/class/classActivated.st
+++ /dev/null
@@ -1,3 +0,0 @@
-testing-interest
-classActivated
-	^ ClassActivated ifNil: [ ClassActivated  := false ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTClassTestedRule.class/class/initialize.st b/SmartTest.package/SmTClassTestedRule.class/class/initialize.st
deleted file mode 100644
index 3026617..0000000
--- a/SmartTest.package/SmTClassTestedRule.class/class/initialize.st
+++ /dev/null
@@ -1,3 +0,0 @@
-testing-interest
-initialize
-	ReRuleManager cleanUp 
\ No newline at end of file
diff --git a/SmartTest.package/SmTClassTestedRule.class/class/settingsOn..st b/SmartTest.package/SmTClassTestedRule.class/class/settingsOn..st
deleted file mode 100644
index 0170511..0000000
--- a/SmartTest.package/SmTClassTestedRule.class/class/settingsOn..st
+++ /dev/null
@@ -1,9 +0,0 @@
-testing-interest
-settingsOn: aBuilder
-	<systemsettings>
-	(aBuilder setting: #classActivated)
-		parent: #SmTActivationRenrakuOption;
-		target: self;
-		order: 0.1;
-		label: 'SmartTest class analyse activated';
-		description: 'Toogle to activate/disable the analyse for class'
\ No newline at end of file
diff --git a/SmartTest.package/SmTClassTestedRule.class/instance/basicCheck..st b/SmartTest.package/SmTClassTestedRule.class/instance/basicCheck..st
deleted file mode 100644
index a37547d..0000000
--- a/SmartTest.package/SmTClassTestedRule.class/instance/basicCheck..st
+++ /dev/null
@@ -1,3 +0,0 @@
-running
-basicCheck: anEntity
-	^ (super basicCheck: anEntity) and: [(anEntity isKindOf: Class) and: [ self class classActivated] ]
diff --git a/SmartTest.package/SmTClassTestedRule.class/instance/check.forCritiquesDo..st b/SmartTest.package/SmTClassTestedRule.class/instance/check.forCritiquesDo..st
deleted file mode 100644
index 1f29228..0000000
--- a/SmartTest.package/SmTClassTestedRule.class/instance/check.forCritiquesDo..st
+++ /dev/null
@@ -1,7 +0,0 @@
-enumerating
-check: anEntity forCritiquesDo: aCriticBlock
-
-	(self basicCheck: anEntity)
-		ifTrue: [ (self findTestsForClass: anEntity) isEmpty
-				ifTrue: [ aCriticBlock value: (SmTClassNeedTestsCritique for: anEntity by: self) ]
-				ifFalse: [ aCriticBlock value: (SmTClassRelativeTestsCritique for: anEntity by: self tests: self tests) ] ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTClassTestedRule.class/instance/findTestsForClass..st b/SmartTest.package/SmTClassTestedRule.class/instance/findTestsForClass..st
deleted file mode 100644
index f2ce0c5..0000000
--- a/SmartTest.package/SmTClassTestedRule.class/instance/findTestsForClass..st
+++ /dev/null
@@ -1,5 +0,0 @@
-instance creation
-findTestsForClass: aClass
-	| aCollectionOfCompiledTest |
-	aCollectionOfCompiledTest :=  self findTestsForMethods: (self methodUsingVariablesOfClass: aClass).
-	^tests := aCollectionOfCompiledTest 
\ No newline at end of file
diff --git a/SmartTest.package/SmTClassTestedRule.class/instance/findTestsForMethods..st b/SmartTest.package/SmTClassTestedRule.class/instance/findTestsForMethods..st
deleted file mode 100644
index 56bbd80..0000000
--- a/SmartTest.package/SmTClassTestedRule.class/instance/findTestsForMethods..st
+++ /dev/null
@@ -1,3 +0,0 @@
-instance creation
-findTestsForMethods: aCollectionOfCompiledMethod
-	^tests := aCollectionOfCompiledMethod flatCollect: [ :aCompiledMethod | self findTestsForMethod: aCompiledMethod]
\ No newline at end of file
diff --git a/SmartTest.package/SmTClassTestedRule.class/instance/methodUsingVariablesOfClass..st b/SmartTest.package/SmTClassTestedRule.class/instance/methodUsingVariablesOfClass..st
deleted file mode 100644
index c43c7db..0000000
--- a/SmartTest.package/SmTClassTestedRule.class/instance/methodUsingVariablesOfClass..st
+++ /dev/null
@@ -1,7 +0,0 @@
-as yet unclassified
-methodUsingVariablesOfClass: aClass
-	| aSet |
-	aSet := Set new.
-	aSet addAll: (aClass classLayout allVisibleSlots flatCollect: #usingMethods).
-"	aSet addAll: ((aClass classVariables flatCollect: #usingMethods) collect: #compiledMethod)."
-	^tests := aSet 
\ No newline at end of file
diff --git a/SmartTest.package/SmTClassTestedRule.class/instance/name.st b/SmartTest.package/SmTClassTestedRule.class/instance/name.st
deleted file mode 100644
index c8ff170..0000000
--- a/SmartTest.package/SmTClassTestedRule.class/instance/name.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-name 
-	^ 'SmartTest Class Tested'
\ No newline at end of file
diff --git a/SmartTest.package/SmTClassTestedRule.class/properties.json b/SmartTest.package/SmTClassTestedRule.class/properties.json
deleted file mode 100644
index bc56384..0000000
--- a/SmartTest.package/SmTClassTestedRule.class/properties.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-	"commentStamp" : "BenoitVerhaeghe 6/28/2017 11:58",
-	"super" : "SmTRules",
-	"category" : "SmartTest-Rules",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [
-		"ClassActivated"
-	],
-	"instvars" : [ ],
-	"name" : "SmTClassTestedRule",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTCollector.class/README.md b/SmartTest.package/SmTCollector.class/README.md
deleted file mode 100644
index e69de29..0000000
diff --git a/SmartTest.package/SmTCollector.class/instance/addTestMethod..st b/SmartTest.package/SmTCollector.class/instance/addTestMethod..st
deleted file mode 100644
index 6a43f38..0000000
--- a/SmartTest.package/SmTCollector.class/instance/addTestMethod..st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-addTestMethod: aTestMethod  
-	self collector add: aTestMethod 
\ No newline at end of file
diff --git a/SmartTest.package/SmTCollector.class/instance/addTestMethods..st b/SmartTest.package/SmTCollector.class/instance/addTestMethods..st
deleted file mode 100644
index 2a688e0..0000000
--- a/SmartTest.package/SmTCollector.class/instance/addTestMethods..st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-addTestMethods: aCollectionOfTestsMethod
-	self collector addAll: aCollectionOfTestsMethod 
\ No newline at end of file
diff --git a/SmartTest.package/SmTCollector.class/instance/collector.st b/SmartTest.package/SmTCollector.class/instance/collector.st
deleted file mode 100644
index c8efb37..0000000
--- a/SmartTest.package/SmTCollector.class/instance/collector.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-collector
-	self subclassResponsibility 
\ No newline at end of file
diff --git a/SmartTest.package/SmTCollector.class/instance/flush.st b/SmartTest.package/SmTCollector.class/instance/flush.st
deleted file mode 100644
index f82172f..0000000
--- a/SmartTest.package/SmTCollector.class/instance/flush.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-flush
-	self collector removeAll
\ No newline at end of file
diff --git a/SmartTest.package/SmTCollector.class/properties.json b/SmartTest.package/SmTCollector.class/properties.json
deleted file mode 100644
index df06c67..0000000
--- a/SmartTest.package/SmTCollector.class/properties.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-	"commentStamp" : "",
-	"super" : "Object",
-	"category" : "SmartTest-Collector",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [ ],
-	"name" : "SmTCollector",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTDefaultClassPackagesFilter.class/README.md b/SmartTest.package/SmTDefaultClassPackagesFilter.class/README.md
deleted file mode 100644
index 0b9a162..0000000
--- a/SmartTest.package/SmTDefaultClassPackagesFilter.class/README.md
+++ /dev/null
@@ -1 +0,0 @@
-The finder should provide only methods which are contain in the package of the last modification or in the packages which call the method class
\ No newline at end of file
diff --git a/SmartTest.package/SmTDefaultClassPackagesFilter.class/instance/extractPackagesFrom..st b/SmartTest.package/SmTDefaultClassPackagesFilter.class/instance/extractPackagesFrom..st
deleted file mode 100644
index 48b13e3..0000000
--- a/SmartTest.package/SmTDefaultClassPackagesFilter.class/instance/extractPackagesFrom..st
+++ /dev/null
@@ -1,6 +0,0 @@
-accessing
-extractPackagesFrom: aCollectionOfCompiledMethod
-	super
-		extractPackagesFrom:
-			((aCollectionOfCompiledMethod collect: #methodClass) flatCollect: [ :aClass | aClass allCallsOn collect: #compiledMethod ])
-				, (aCollectionOfCompiledMethod collect: #package) asOrderedCollection
\ No newline at end of file
diff --git a/SmartTest.package/SmTDefaultClassPackagesFilter.class/properties.json b/SmartTest.package/SmTDefaultClassPackagesFilter.class/properties.json
deleted file mode 100644
index 6c3aa14..0000000
--- a/SmartTest.package/SmTDefaultClassPackagesFilter.class/properties.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-	"commentStamp" : "BenoitVerhaeghe 7/4/2017 10:14",
-	"super" : "SmTDefaultPackagesFilter",
-	"category" : "SmartTest-Filter",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [ ],
-	"name" : "SmTDefaultClassPackagesFilter",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTDefaultNullPackagesFilter.class/README.md b/SmartTest.package/SmTDefaultNullPackagesFilter.class/README.md
deleted file mode 100644
index 9190698..0000000
--- a/SmartTest.package/SmTDefaultNullPackagesFilter.class/README.md
+++ /dev/null
@@ -1 +0,0 @@
-I'm the useless filter because I filter nothing
\ No newline at end of file
diff --git a/SmartTest.package/SmTDefaultNullPackagesFilter.class/instance/shouldEntityBeFiltered..st b/SmartTest.package/SmTDefaultNullPackagesFilter.class/instance/shouldEntityBeFiltered..st
deleted file mode 100644
index ba83e06..0000000
--- a/SmartTest.package/SmTDefaultNullPackagesFilter.class/instance/shouldEntityBeFiltered..st
+++ /dev/null
@@ -1,5 +0,0 @@
-asserting
-shouldEntityBeFiltered: anEntity
-	"(anEntity methodClass allCallsOn collect: #ciPackage) not."
-
-	^ false
\ No newline at end of file
diff --git a/SmartTest.package/SmTDefaultNullPackagesFilter.class/properties.json b/SmartTest.package/SmTDefaultNullPackagesFilter.class/properties.json
deleted file mode 100644
index 85540ce..0000000
--- a/SmartTest.package/SmTDefaultNullPackagesFilter.class/properties.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-	"commentStamp" : "BenoitVerhaeghe 7/13/2017 14:23",
-	"super" : "SmTDefaultPackagesFilter",
-	"category" : "SmartTest-Filter",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [ ],
-	"name" : "SmTDefaultNullPackagesFilter",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTDefaultPackagesFilter.class/README.md b/SmartTest.package/SmTDefaultPackagesFilter.class/README.md
deleted file mode 100644
index 4eacf92..0000000
--- a/SmartTest.package/SmTDefaultPackagesFilter.class/README.md
+++ /dev/null
@@ -1 +0,0 @@
-I filter the entities thanks to their package base ( Potato-Hello -> Potato )
\ No newline at end of file
diff --git a/SmartTest.package/SmTDefaultPackagesFilter.class/class/settingsOn..st b/SmartTest.package/SmTDefaultPackagesFilter.class/class/settingsOn..st
deleted file mode 100644
index 4f4f342..0000000
--- a/SmartTest.package/SmTDefaultPackagesFilter.class/class/settingsOn..st
+++ /dev/null
@@ -1,5 +0,0 @@
-settings
-settingsOn: aBuilder
-	<systemsettings>
-	(aBuilder group: #SmTFilter)
-	parent: #SmartTest
\ No newline at end of file
diff --git a/SmartTest.package/SmTDefaultPackagesFilter.class/instance/extractCompiledMethodPackageBaseName..st b/SmartTest.package/SmTDefaultPackagesFilter.class/instance/extractCompiledMethodPackageBaseName..st
deleted file mode 100644
index 8481512..0000000
--- a/SmartTest.package/SmTDefaultPackagesFilter.class/instance/extractCompiledMethodPackageBaseName..st
+++ /dev/null
@@ -1,3 +0,0 @@
-parsing
-extractCompiledMethodPackageBaseName: aCompiledMethod
-	^ self extractPackageBaseName: aCompiledMethod package packageName
\ No newline at end of file
diff --git a/SmartTest.package/SmTDefaultPackagesFilter.class/instance/extractMethodDefinitionPackageBaseName..st b/SmartTest.package/SmTDefaultPackagesFilter.class/instance/extractMethodDefinitionPackageBaseName..st
deleted file mode 100644
index 3f9cdc8..0000000
--- a/SmartTest.package/SmTDefaultPackagesFilter.class/instance/extractMethodDefinitionPackageBaseName..st
+++ /dev/null
@@ -1,3 +0,0 @@
-parsing
-extractMethodDefinitionPackageBaseName: aRGMethodDefinition
-	^ self extractPackageBaseName: aRGMethodDefinition package realPackage packageName 
\ No newline at end of file
diff --git a/SmartTest.package/SmTDefaultPackagesFilter.class/instance/extractPackageBaseName..st b/SmartTest.package/SmTDefaultPackagesFilter.class/instance/extractPackageBaseName..st
deleted file mode 100644
index 0e63598..0000000
--- a/SmartTest.package/SmTDefaultPackagesFilter.class/instance/extractPackageBaseName..st
+++ /dev/null
@@ -1,3 +0,0 @@
-parsing
-extractPackageBaseName: aPackageName
-	^(aPackageName substrings: '-') at: 1
\ No newline at end of file
diff --git a/SmartTest.package/SmTDefaultPackagesFilter.class/instance/extractPackagesFrom..st b/SmartTest.package/SmTDefaultPackagesFilter.class/instance/extractPackagesFrom..st
deleted file mode 100644
index 734b7c3..0000000
--- a/SmartTest.package/SmTDefaultPackagesFilter.class/instance/extractPackagesFrom..st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-extractPackagesFrom: aCollectionOfCompiledMethod
-	packages := aCollectionOfCompiledMethod collect: [:aCompiledMethod | self extractCompiledMethodPackageBaseName: aCompiledMethod ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTDefaultPackagesFilter.class/instance/packages.st b/SmartTest.package/SmTDefaultPackagesFilter.class/instance/packages.st
deleted file mode 100644
index d899deb..0000000
--- a/SmartTest.package/SmTDefaultPackagesFilter.class/instance/packages.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-packages
-	^ packages
\ No newline at end of file
diff --git a/SmartTest.package/SmTDefaultPackagesFilter.class/instance/shouldEntityBeFiltered..st b/SmartTest.package/SmTDefaultPackagesFilter.class/instance/shouldEntityBeFiltered..st
deleted file mode 100644
index 4605d05..0000000
--- a/SmartTest.package/SmTDefaultPackagesFilter.class/instance/shouldEntityBeFiltered..st
+++ /dev/null
@@ -1,4 +0,0 @@
-asserting
-shouldEntityBeFiltered: anEntity
- "(anEntity methodClass allCallsOn collect: #ciPackage) not."
-	^ (self packages includes: (self extractMethodDefinitionPackageBaseName: anEntity )) not
\ No newline at end of file
diff --git a/SmartTest.package/SmTDefaultPackagesFilter.class/properties.json b/SmartTest.package/SmTDefaultPackagesFilter.class/properties.json
deleted file mode 100644
index ea6aa68..0000000
--- a/SmartTest.package/SmTDefaultPackagesFilter.class/properties.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-	"commentStamp" : "BenoitVerhaeghe 7/3/2017 16:30",
-	"super" : "Object",
-	"category" : "SmartTest-Filter",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [
-		"packages"
-	],
-	"name" : "SmTDefaultPackagesFilter",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTEventRecipient.class/README.md b/SmartTest.package/SmTEventRecipient.class/README.md
deleted file mode 100644
index 025ad41..0000000
--- a/SmartTest.package/SmTEventRecipient.class/README.md
+++ /dev/null
@@ -1 +0,0 @@
-I collect tests, run tests and notify the bug button of my work
\ No newline at end of file
diff --git a/SmartTest.package/SmTEventRecipient.class/instance/actionForEvent.fromMorph..st b/SmartTest.package/SmTEventRecipient.class/instance/actionForEvent.fromMorph..st
deleted file mode 100644
index d290d7f..0000000
--- a/SmartTest.package/SmTEventRecipient.class/instance/actionForEvent.fromMorph..st
+++ /dev/null
@@ -1,3 +0,0 @@
-as yet unclassified
-actionForEvent: anEvent fromMorph: aMorph
-	self runTestAndShowProgressIn: aMorph
\ No newline at end of file
diff --git a/SmartTest.package/SmTEventRecipient.class/instance/runTestAndShowProgressIn..st b/SmartTest.package/SmTEventRecipient.class/instance/runTestAndShowProgressIn..st
deleted file mode 100644
index f8c360e..0000000
--- a/SmartTest.package/SmTEventRecipient.class/instance/runTestAndShowProgressIn..st
+++ /dev/null
@@ -1,2 +0,0 @@
-as yet unclassified
-runTestAndShowProgressIn: aMorph
\ No newline at end of file
diff --git a/SmartTest.package/SmTEventRecipient.class/properties.json b/SmartTest.package/SmTEventRecipient.class/properties.json
deleted file mode 100644
index 372cd80..0000000
--- a/SmartTest.package/SmTEventRecipient.class/properties.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-	"commentStamp" : "BenoitVerhaeghe 7/18/2017 10:42",
-	"super" : "Object",
-	"category" : "SmartTest-Event",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [ ],
-	"name" : "SmTEventRecipient",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTFinderAbstractTest.class/README.md b/SmartTest.package/SmTFinderAbstractTest.class/README.md
deleted file mode 100644
index c77c3e6..0000000
--- a/SmartTest.package/SmTFinderAbstractTest.class/README.md
+++ /dev/null
@@ -1,6 +0,0 @@
-TODO
-
-	- test setUp method with teardown
-	- test setUp method with setup
-	- test tearDown with setup
-	- test tearDown with teardown
\ No newline at end of file
diff --git a/SmartTest.package/SmTFinderAbstractTest.class/class/isAbstract.st b/SmartTest.package/SmTFinderAbstractTest.class/class/isAbstract.st
deleted file mode 100644
index af93968..0000000
--- a/SmartTest.package/SmTFinderAbstractTest.class/class/isAbstract.st
+++ /dev/null
@@ -1,4 +0,0 @@
-testing
-isAbstract
-
-	^ self  == SmTFinderAbstractTest
\ No newline at end of file
diff --git a/SmartTest.package/SmTFinderAbstractTest.class/instance/searchTestMethodsFor..st b/SmartTest.package/SmTFinderAbstractTest.class/instance/searchTestMethodsFor..st
deleted file mode 100644
index 509300c..0000000
--- a/SmartTest.package/SmTFinderAbstractTest.class/instance/searchTestMethodsFor..st
+++ /dev/null
@@ -1,4 +0,0 @@
-helpers
-searchTestMethodsFor: aCompiledMethod
-	
-	^ smartFinder resarchTestsForMethod: aCompiledMethod .
\ No newline at end of file
diff --git a/SmartTest.package/SmTFinderAbstractTest.class/instance/setUp.st b/SmartTest.package/SmTFinderAbstractTest.class/instance/setUp.st
deleted file mode 100644
index 6756cab..0000000
--- a/SmartTest.package/SmTFinderAbstractTest.class/instance/setUp.st
+++ /dev/null
@@ -1,11 +0,0 @@
-initialization
-setUp
-	smartFinder := SmartFinder new.
-	smartFinder filter: SmTDefaultClassPackagesFilter new.
-	
-	testMethod1 := RGMethodDefinition className: 'SmTClassTest' selector: #testMethod1 isMetaSide: false.
-	testMethod2 := RGMethodDefinition className: 'SmTClassTest' selector: #testMethod2 isMetaSide: false.
-	testMethod3 := RGMethodDefinition className: 'SmTClassTest' selector: #testMethod3 isMetaSide: false.
-	testMethod4 := RGMethodDefinition className: 'SmTClassTest' selector: #testMethod4 isMetaSide: false.
-	testMethod5 := RGMethodDefinition className: 'SmTClassTest' selector: #testMethod5 isMetaSide: false.
-	testInheritedMethod1 := RGMethodDefinition className: 'SmTInheritClassTest' selector: #testMethod1 isMetaSide: false.
\ No newline at end of file
diff --git a/SmartTest.package/SmTFinderAbstractTest.class/instance/tearDown.st b/SmartTest.package/SmTFinderAbstractTest.class/instance/tearDown.st
deleted file mode 100644
index 0ac6ff3..0000000
--- a/SmartTest.package/SmTFinderAbstractTest.class/instance/tearDown.st
+++ /dev/null
@@ -1,5 +0,0 @@
-running
-tearDown
-	"reset the cache"
-	smartFinder resetCache.
-	super tearDown
\ No newline at end of file
diff --git a/SmartTest.package/SmTFinderAbstractTest.class/instance/testModificationOnInitialize.st b/SmartTest.package/SmTFinderAbstractTest.class/instance/testModificationOnInitialize.st
deleted file mode 100644
index 515a06d..0000000
--- a/SmartTest.package/SmTFinderAbstractTest.class/instance/testModificationOnInitialize.st
+++ /dev/null
@@ -1,11 +0,0 @@
-tests
-testModificationOnInitialize
-	<CORATestBlacklisted>
-	| testsFound |
-	testsFound := self searchTestMethodsFor: SmTClass2 >> #initialize.
-
-	self deny: (testsFound includes: testMethod1).
-	self deny: (testsFound includes: testMethod2).
-	self deny: (testsFound includes: testMethod3).
-	self deny: (testsFound includes: testMethod4).
-	self assert: (testsFound includes: testMethod5).
\ No newline at end of file
diff --git a/SmartTest.package/SmTFinderAbstractTest.class/instance/testModificationOnTest.st b/SmartTest.package/SmTFinderAbstractTest.class/instance/testModificationOnTest.st
deleted file mode 100644
index d5e8453..0000000
--- a/SmartTest.package/SmTFinderAbstractTest.class/instance/testModificationOnTest.st
+++ /dev/null
@@ -1,10 +0,0 @@
-tests
-testModificationOnTest
-	<CORATestBlacklisted>
-	| testsFound |
-	testsFound := self searchTestMethodsFor: SmTClassTest >> #testMethod4.
-
-	self deny: (testsFound includes: testMethod1).
-	self deny: (testsFound includes: testMethod2).
-	self deny: (testsFound includes: testMethod3).
-	self assert: (testsFound includes: testMethod4).
\ No newline at end of file
diff --git a/SmartTest.package/SmTFinderAbstractTest.class/instance/testSetupMethodFindsTests.st b/SmartTest.package/SmTFinderAbstractTest.class/instance/testSetupMethodFindsTests.st
deleted file mode 100644
index a9dc383..0000000
--- a/SmartTest.package/SmTFinderAbstractTest.class/instance/testSetupMethodFindsTests.st
+++ /dev/null
@@ -1,11 +0,0 @@
-tests
-testSetupMethodFindsTests
-	<CORATestBlacklisted>
-	| testsFound |
-	testsFound := self testsForASetUpMethod: SmTClassTest >> #setUp.
-
-	self assert: testsFound isNotEmpty.
-	self assert: (testsFound includes: testMethod1).
-	self assert: (testsFound includes: testMethod2).
-	self assert: (testsFound includes: testMethod3).
-	self assert: (testsFound includes: testMethod4).
\ No newline at end of file
diff --git a/SmartTest.package/SmTFinderAbstractTest.class/instance/testSetupMethodWithNonSetupFindsNoTests.st b/SmartTest.package/SmTFinderAbstractTest.class/instance/testSetupMethodWithNonSetupFindsNoTests.st
deleted file mode 100644
index 96e2cb7..0000000
--- a/SmartTest.package/SmTFinderAbstractTest.class/instance/testSetupMethodWithNonSetupFindsNoTests.st
+++ /dev/null
@@ -1,7 +0,0 @@
-tests
-testSetupMethodWithNonSetupFindsNoTests
-	<CORATestBlacklisted>
-	| testsFound |
-	testsFound := self testsForASetUpMethod: SmTClassTest >> #testMethod1.
-
-	self assert: testsFound isEmpty.
\ No newline at end of file
diff --git a/SmartTest.package/SmTFinderAbstractTest.class/instance/testStandardMethodFirstLevelSenders.st b/SmartTest.package/SmTFinderAbstractTest.class/instance/testStandardMethodFirstLevelSenders.st
deleted file mode 100644
index c88306b..0000000
--- a/SmartTest.package/SmTFinderAbstractTest.class/instance/testStandardMethodFirstLevelSenders.st
+++ /dev/null
@@ -1,10 +0,0 @@
-tests
-testStandardMethodFirstLevelSenders
-	<CORATestBlacklisted>
-	| testsFound |
-	testsFound := self searchTestMethodsFor: SmTClass >> #method2.
-
-	self deny: (testsFound includes: testMethod1).
-	self assert: (testsFound includes: testMethod2).
-	self deny: (testsFound includes: testMethod3).
-	self deny: (testsFound includes: testMethod4).
\ No newline at end of file
diff --git a/SmartTest.package/SmTFinderAbstractTest.class/instance/testStandardMethodSecondLevelSenders.st b/SmartTest.package/SmTFinderAbstractTest.class/instance/testStandardMethodSecondLevelSenders.st
deleted file mode 100644
index 7143739..0000000
--- a/SmartTest.package/SmTFinderAbstractTest.class/instance/testStandardMethodSecondLevelSenders.st
+++ /dev/null
@@ -1,11 +0,0 @@
-tests
-testStandardMethodSecondLevelSenders
-	<CORATestBlacklisted>
-	| testsFound |
-	testsFound := self searchTestMethodsFor: SmTClass >> #method1.
-
-	self assert: (testsFound includes: testMethod1).
-	self assert: (testsFound includes: testMethod2).
-	self assert: (testsFound includes: testInheritedMethod1).
-	self deny: (testsFound includes: testMethod3).
-	self deny: (testsFound includes: testMethod4).
\ No newline at end of file
diff --git a/SmartTest.package/SmTFinderAbstractTest.class/instance/testStandardMethodThirdLevelSenders.st b/SmartTest.package/SmTFinderAbstractTest.class/instance/testStandardMethodThirdLevelSenders.st
deleted file mode 100644
index 59fb15a..0000000
--- a/SmartTest.package/SmTFinderAbstractTest.class/instance/testStandardMethodThirdLevelSenders.st
+++ /dev/null
@@ -1,10 +0,0 @@
-tests
-testStandardMethodThirdLevelSenders
-	<CORATestBlacklisted>
-	| testsFound | 
-	testsFound := self searchTestMethodsFor: SmTClass >> #method4.
-
-	self deny: (testsFound includes: testMethod1).
-	self assert: (testsFound includes: testMethod2).
-	self assert: (testsFound includes: testMethod3).
-	self assert: (testsFound includes: testMethod4).
\ No newline at end of file
diff --git a/SmartTest.package/SmTFinderAbstractTest.class/instance/testTearDownMethodFindsTests.st b/SmartTest.package/SmTFinderAbstractTest.class/instance/testTearDownMethodFindsTests.st
deleted file mode 100644
index 3275ae8..0000000
--- a/SmartTest.package/SmTFinderAbstractTest.class/instance/testTearDownMethodFindsTests.st
+++ /dev/null
@@ -1,11 +0,0 @@
-tests
-testTearDownMethodFindsTests
-	<CORATestBlacklisted>
-	| testsFound |
-	testsFound := self testsForATearDownMethod: SmTClassTest >> #tearDown.
-
-	self assert: testsFound isNotEmpty.
-	self assert: (testsFound includes: testMethod1).
-	self assert: (testsFound includes: testMethod2).
-	self assert: (testsFound includes: testMethod3).
-	self assert: (testsFound includes: testMethod4).
\ No newline at end of file
diff --git a/SmartTest.package/SmTFinderAbstractTest.class/instance/testTearDownMethodWithNoneTearDownFindsNoTests.st b/SmartTest.package/SmTFinderAbstractTest.class/instance/testTearDownMethodWithNoneTearDownFindsNoTests.st
deleted file mode 100644
index 35308f1..0000000
--- a/SmartTest.package/SmTFinderAbstractTest.class/instance/testTearDownMethodWithNoneTearDownFindsNoTests.st
+++ /dev/null
@@ -1,5 +0,0 @@
-tests
-testTearDownMethodWithNoneTearDownFindsNoTests
-	<CORATestBlacklisted>
-
-	self assert: (self testsForATearDownMethod: SmTClassTest >> #testMethod1) isEmpty.
\ No newline at end of file
diff --git a/SmartTest.package/SmTFinderAbstractTest.class/instance/testTestSelfSelected.st b/SmartTest.package/SmTFinderAbstractTest.class/instance/testTestSelfSelected.st
deleted file mode 100644
index 0b7efb6..0000000
--- a/SmartTest.package/SmTFinderAbstractTest.class/instance/testTestSelfSelected.st
+++ /dev/null
@@ -1,10 +0,0 @@
-tests
-testTestSelfSelected
-	<CORATestBlacklisted>
-	| testsFound | 
-	testsFound := self testsForATestMethod: SmTClassTest >> #testMethod1.
-
-	self assert: (testsFound includes: testMethod1).
-	self deny: (testsFound includes: testMethod2).
-	self deny: (testsFound includes: testMethod3).
-	self deny: (testsFound includes: testMethod4).
\ No newline at end of file
diff --git a/SmartTest.package/SmTFinderAbstractTest.class/instance/testsForASetUpMethod..st b/SmartTest.package/SmTFinderAbstractTest.class/instance/testsForASetUpMethod..st
deleted file mode 100644
index cf4973b..0000000
--- a/SmartTest.package/SmTFinderAbstractTest.class/instance/testsForASetUpMethod..st
+++ /dev/null
@@ -1,3 +0,0 @@
-helpers
-testsForASetUpMethod: aCompiledMethod
-	^ smartFinder testsForASetUpMethod: aCompiledMethod
\ No newline at end of file
diff --git a/SmartTest.package/SmTFinderAbstractTest.class/instance/testsForATearDownMethod..st b/SmartTest.package/SmTFinderAbstractTest.class/instance/testsForATearDownMethod..st
deleted file mode 100644
index a3b088e..0000000
--- a/SmartTest.package/SmTFinderAbstractTest.class/instance/testsForATearDownMethod..st
+++ /dev/null
@@ -1,3 +0,0 @@
-helpers
-testsForATearDownMethod: aCompiledMethod
-	^ smartFinder testsForATearDownMethod: aCompiledMethod
\ No newline at end of file
diff --git a/SmartTest.package/SmTFinderAbstractTest.class/instance/testsForATestMethod..st b/SmartTest.package/SmTFinderAbstractTest.class/instance/testsForATestMethod..st
deleted file mode 100644
index 030eaf6..0000000
--- a/SmartTest.package/SmTFinderAbstractTest.class/instance/testsForATestMethod..st
+++ /dev/null
@@ -1,3 +0,0 @@
-helpers
-testsForATestMethod: aCompiledMethod
-	^ smartFinder testsForATestMethod: aCompiledMethod
\ No newline at end of file
diff --git a/SmartTest.package/SmTFinderAbstractTest.class/properties.json b/SmartTest.package/SmTFinderAbstractTest.class/properties.json
deleted file mode 100644
index 4237f5b..0000000
--- a/SmartTest.package/SmTFinderAbstractTest.class/properties.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-	"commentStamp" : "BenoitVerhaeghe 7/13/2017 16:52",
-	"super" : "TestCase",
-	"category" : "SmartTest-Tests",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [
-		"cache",
-		"smartFinder",
-		"testMethod2",
-		"testMethod1",
-		"testMethod3",
-		"testMethod4",
-		"testMethod5",
-		"testInheritedMethod1"
-	],
-	"name" : "SmTFinderAbstractTest",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTFinderStrategyReflectivityTest.class/README.md b/SmartTest.package/SmTFinderStrategyReflectivityTest.class/README.md
deleted file mode 100644
index e55c87a..0000000
--- a/SmartTest.package/SmTFinderStrategyReflectivityTest.class/README.md
+++ /dev/null
@@ -1 +0,0 @@
-A CORAFinderStrategyReflectivityTest is a test class for testing the behavior of CORAFinderStrategyReflectivity
\ No newline at end of file
diff --git a/SmartTest.package/SmTFinderStrategyReflectivityTest.class/instance/initCache.st b/SmartTest.package/SmTFinderStrategyReflectivityTest.class/instance/initCache.st
deleted file mode 100644
index a60ab82..0000000
--- a/SmartTest.package/SmTFinderStrategyReflectivityTest.class/instance/initCache.st
+++ /dev/null
@@ -1,23 +0,0 @@
-initialization
-initCache
-	^ {((RGMethodDefinition className: 'SmTClass' selector: #method1 isMetaSide: false)
-		->
-			{(RGMethodDefinition className: 'SmTClassTest' selector: #testMethod1 isMetaSide: false).
-			(RGMethodDefinition className: 'SmTClassTest' selector: #testMethod2 isMetaSide: false).
-			(RGMethodDefinition className: 'SmTInheritClassTest' selector: #testMethod1 isMetaSide: false)} asSet).
-	((RGMethodDefinition className: 'SmTClass' selector: #method2 isMetaSide: false)
-		-> {(RGMethodDefinition className: 'SmTClassTest' selector: #testMethod2 isMetaSide: false)} asSet).
-	((RGMethodDefinition className: 'SmTClass' selector: #method3: isMetaSide: false)
-		->
-			{(RGMethodDefinition className: 'SmTClassTest' selector: #testMethod1 isMetaSide: false).
-			(RGMethodDefinition className: 'SmTClassTest' selector: #testMethod2 isMetaSide: false).
-			(RGMethodDefinition className: 'SmTClassTest' selector: #testMethod3 isMetaSide: false)} asSet).
-	((RGMethodDefinition className: 'SmTClass' selector: #method4 isMetaSide: false)
-		->
-			{(RGMethodDefinition className: 'SmTClassTest' selector: #testMethod2 isMetaSide: false).
-			(RGMethodDefinition className: 'SmTClassTest' selector: #testMethod3 isMetaSide: false).
-			(RGMethodDefinition className: 'SmTClassTest' selector: #testMethod4 isMetaSide: false)} asSet).
-	((RGMethodDefinition className: 'SmTClass2' selector: #initialize isMetaSide: false)
-		-> {(RGMethodDefinition className: 'SmTClassTest' selector: #testMethod5 isMetaSide: false)} asSet).
-	((RGMethodDefinition className: 'SmTClassTest' selector: #testMethod4 isMetaSide: false)
-		-> {(RGMethodDefinition className: 'SmTClassTest' selector: #testMethod4 isMetaSide: false)} asSet)} asDictionary
\ No newline at end of file
diff --git a/SmartTest.package/SmTFinderStrategyReflectivityTest.class/instance/setUp.st b/SmartTest.package/SmTFinderStrategyReflectivityTest.class/instance/setUp.st
deleted file mode 100644
index bfc9bf3..0000000
--- a/SmartTest.package/SmTFinderStrategyReflectivityTest.class/instance/setUp.st
+++ /dev/null
@@ -1,10 +0,0 @@
-initialization
-setUp
-	"fill in the cache"
-
-	| initialCache |
-	super setUp.
-	initialCache := self initCache.
-	smartFinder cacheClass: SmTBasicCacheStrategy new.
-	smartFinder setCacheValues: initialCache.
-	smartFinder smtFinder: SmTReflectivityTestFinderStrategy new
\ No newline at end of file
diff --git a/SmartTest.package/SmTFinderStrategyReflectivityTest.class/properties.json b/SmartTest.package/SmTFinderStrategyReflectivityTest.class/properties.json
deleted file mode 100644
index 8e6b3a5..0000000
--- a/SmartTest.package/SmTFinderStrategyReflectivityTest.class/properties.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-	"commentStamp" : "<historical>",
-	"super" : "SmTFinderAbstractTest",
-	"category" : "SmartTest-Tests",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [ ],
-	"name" : "SmTFinderStrategyReflectivityTest",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTFivesMinutesCollector.class/README.md b/SmartTest.package/SmTFivesMinutesCollector.class/README.md
deleted file mode 100644
index 7df7474..0000000
--- a/SmartTest.package/SmTFivesMinutesCollector.class/README.md
+++ /dev/null
@@ -1 +0,0 @@
-I collect all the tests and run it each 5 minutes
\ No newline at end of file
diff --git a/SmartTest.package/SmTFivesMinutesCollector.class/class/addTestMethod..st b/SmartTest.package/SmTFivesMinutesCollector.class/class/addTestMethod..st
deleted file mode 100644
index 4f71515..0000000
--- a/SmartTest.package/SmTFivesMinutesCollector.class/class/addTestMethod..st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-addTestMethod: aTestMethod
-	self uniqueInstance addTestMethod: aTestMethod
\ No newline at end of file
diff --git a/SmartTest.package/SmTFivesMinutesCollector.class/class/addTestMethods..st b/SmartTest.package/SmTFivesMinutesCollector.class/class/addTestMethods..st
deleted file mode 100644
index b979690..0000000
--- a/SmartTest.package/SmTFivesMinutesCollector.class/class/addTestMethods..st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-addTestMethods: aCollectionOfTestMethods
-	self uniqueInstance addTestMethods: aCollectionOfTestMethods
\ No newline at end of file
diff --git a/SmartTest.package/SmTFivesMinutesCollector.class/class/start.st b/SmartTest.package/SmTFivesMinutesCollector.class/class/start.st
deleted file mode 100644
index 82e2d48..0000000
--- a/SmartTest.package/SmTFivesMinutesCollector.class/class/start.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-start
-	self uniqueInstance start
\ No newline at end of file
diff --git a/SmartTest.package/SmTFivesMinutesCollector.class/class/stop.st b/SmartTest.package/SmTFivesMinutesCollector.class/class/stop.st
deleted file mode 100644
index ea00ab6..0000000
--- a/SmartTest.package/SmTFivesMinutesCollector.class/class/stop.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-stop
-	self uniqueInstance stop
\ No newline at end of file
diff --git a/SmartTest.package/SmTFivesMinutesCollector.class/class/uniqueInstance.st b/SmartTest.package/SmTFivesMinutesCollector.class/class/uniqueInstance.st
deleted file mode 100644
index e866592..0000000
--- a/SmartTest.package/SmTFivesMinutesCollector.class/class/uniqueInstance.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-uniqueInstance
-	^UniqueInstance ifNil: [ UniqueInstance := self new]
\ No newline at end of file
diff --git a/SmartTest.package/SmTFivesMinutesCollector.class/instance/collector.st b/SmartTest.package/SmTFivesMinutesCollector.class/instance/collector.st
deleted file mode 100644
index 9a0d70b..0000000
--- a/SmartTest.package/SmTFivesMinutesCollector.class/instance/collector.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-collector
-	^Collector ifNil: [ Collector := Set new. ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTFivesMinutesCollector.class/instance/process.st b/SmartTest.package/SmTFivesMinutesCollector.class/instance/process.st
deleted file mode 100644
index 3d5387b..0000000
--- a/SmartTest.package/SmTFivesMinutesCollector.class/instance/process.st
+++ /dev/null
@@ -1,14 +0,0 @@
-accessing
-process
-	^ process
-		ifNil: [ process := [ [ true ]
-				whileTrue: [ (Delay forSeconds: 300) wait.
-					self collector
-						ifNotEmpty: [ | tempOrderedCollection |
-							tempOrderedCollection := OrderedCollection new.
-							tempOrderedCollection add: self collector .
-							([ :aCollectionOfTest | 
-							| tempResult |
-							tempResult := SmTRules runner runCases: aCollectionOfTest.
-							self showResult: tempResult ] newProcessWith: tempOrderedCollection) resume.
-							self reset ] ] ] newProcess ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTFivesMinutesCollector.class/instance/reset.st b/SmartTest.package/SmTFivesMinutesCollector.class/instance/reset.st
deleted file mode 100644
index 7cd4a7f..0000000
--- a/SmartTest.package/SmTFivesMinutesCollector.class/instance/reset.st
+++ /dev/null
@@ -1,3 +0,0 @@
-action
-reset
-	Collector := nil.
\ No newline at end of file
diff --git a/SmartTest.package/SmTFivesMinutesCollector.class/instance/showResult..st b/SmartTest.package/SmTFivesMinutesCollector.class/instance/showResult..st
deleted file mode 100644
index d69037e..0000000
--- a/SmartTest.package/SmTFivesMinutesCollector.class/instance/showResult..st
+++ /dev/null
@@ -1,9 +0,0 @@
-UI specific
-showResult: aTestResult
-	| ui |
-
-	(aTestResult hasErrors or: aTestResult hasFailures)
-		ifFalse: [ ^ self ].
-	ui := SmTAutoTestsWindows new.
-	ui setList: aTestResult tests.
-	ui openWithSpec.
diff --git a/SmartTest.package/SmTFivesMinutesCollector.class/instance/start.st b/SmartTest.package/SmTFivesMinutesCollector.class/instance/start.st
deleted file mode 100644
index e87cda5..0000000
--- a/SmartTest.package/SmTFivesMinutesCollector.class/instance/start.st
+++ /dev/null
@@ -1,3 +0,0 @@
-action
-start
-	self process resume.
\ No newline at end of file
diff --git a/SmartTest.package/SmTFivesMinutesCollector.class/instance/stop.st b/SmartTest.package/SmTFivesMinutesCollector.class/instance/stop.st
deleted file mode 100644
index 3860d87..0000000
--- a/SmartTest.package/SmTFivesMinutesCollector.class/instance/stop.st
+++ /dev/null
@@ -1,3 +0,0 @@
-action
-stop
-	self process suspend 
\ No newline at end of file
diff --git a/SmartTest.package/SmTFivesMinutesCollector.class/properties.json b/SmartTest.package/SmTFivesMinutesCollector.class/properties.json
deleted file mode 100644
index 3fb9d48..0000000
--- a/SmartTest.package/SmTFivesMinutesCollector.class/properties.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-	"commentStamp" : "BenoitVerhaeghe 6/28/2017 16:19",
-	"super" : "SmTCollector",
-	"category" : "SmartTest-Collector",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [
-		"Collector",
-		"UniqueInstance"
-	],
-	"instvars" : [
-		"process"
-	],
-	"name" : "SmTFivesMinutesCollector",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTIconFabric.class/README.md b/SmartTest.package/SmTIconFabric.class/README.md
deleted file mode 100644
index 4be13b3..0000000
--- a/SmartTest.package/SmTIconFabric.class/README.md
+++ /dev/null
@@ -1 +0,0 @@
-I'm a tool which create the icons
\ No newline at end of file
diff --git a/SmartTest.package/SmTIconFabric.class/class/createIconForMethod..st b/SmartTest.package/SmTIconFabric.class/class/createIconForMethod..st
deleted file mode 100644
index bb22cf2..0000000
--- a/SmartTest.package/SmTIconFabric.class/class/createIconForMethod..st
+++ /dev/null
@@ -1,15 +0,0 @@
-creation
-createIconForMethod: testMethod
-	| ib |
-	ib := IconicButton new.
-	ib
-		target: SmTRules runner;
-		actionSelector: #runCase:notifyIcon:;
-		arguments:
-			{testMethod.
-			ib};
-		labelGraphic: (SmTRules runner iconForTestFromTestCaseHistory: testMethod) asIcon;
-		color: Color transparent;
-		borderColor: Color transparent;
-		helpText: 'Run the test'.
-	^ ib
\ No newline at end of file
diff --git a/SmartTest.package/SmTIconFabric.class/class/createIconForMethods..st b/SmartTest.package/SmTIconFabric.class/class/createIconForMethods..st
deleted file mode 100644
index f6f5102..0000000
--- a/SmartTest.package/SmTIconFabric.class/class/createIconForMethods..st
+++ /dev/null
@@ -1,15 +0,0 @@
-creation
-createIconForMethods: aTestCollection
-	| ib |
-	ib := IconicButton new.
-	ib
-		target: SmTRules runner;
-		actionSelector: #runCases:notifyIcon:;
-		arguments:
-			{aTestCollection.
-			ib};
-		labelGraphic:(SmTRules runner iconForTestFromTestsCasesHistory: aTestCollection) asIcon;
-		color: Color transparent;
-		borderColor: Color transparent;
-		helpText: 'Run the test'.
-	^ ib
\ No newline at end of file
diff --git a/SmartTest.package/SmTIconFabric.class/properties.json b/SmartTest.package/SmTIconFabric.class/properties.json
deleted file mode 100644
index 0a733c4..0000000
--- a/SmartTest.package/SmTIconFabric.class/properties.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-	"commentStamp" : "BenoitVerhaeghe 6/28/2017 15:45",
-	"super" : "Object",
-	"category" : "SmartTest-Tools",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [ ],
-	"name" : "SmTIconFabric",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTInheritClassTest.class/README.md b/SmartTest.package/SmTInheritClassTest.class/README.md
deleted file mode 100644
index e69de29..0000000
diff --git a/SmartTest.package/SmTInheritClassTest.class/instance/setUp.st b/SmartTest.package/SmTInheritClassTest.class/instance/setUp.st
deleted file mode 100644
index fca3dac..0000000
--- a/SmartTest.package/SmTInheritClassTest.class/instance/setUp.st
+++ /dev/null
@@ -1,3 +0,0 @@
-initialization
-setUp
-	smTtestClass := SmTClass new
\ No newline at end of file
diff --git a/SmartTest.package/SmTInheritClassTest.class/properties.json b/SmartTest.package/SmTInheritClassTest.class/properties.json
deleted file mode 100644
index a59ce60..0000000
--- a/SmartTest.package/SmTInheritClassTest.class/properties.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-	"commentStamp" : "",
-	"super" : "SmTSuperClassTest",
-	"category" : "SmartTest-Tests-Data",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [ ],
-	"name" : "SmTInheritClassTest",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTListener.class/README.md b/SmartTest.package/SmTListener.class/README.md
deleted file mode 100644
index 65170c6..0000000
--- a/SmartTest.package/SmTListener.class/README.md
+++ /dev/null
@@ -1 +0,0 @@
-I'm listening all the event and add it to the RTS
\ No newline at end of file
diff --git a/SmartTest.package/SmTListener.class/class/disable.st b/SmartTest.package/SmTListener.class/class/disable.st
deleted file mode 100644
index a683389..0000000
--- a/SmartTest.package/SmTListener.class/class/disable.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-disable
-	self uniqueInstance disable.
\ No newline at end of file
diff --git a/SmartTest.package/SmTListener.class/class/enable.st b/SmartTest.package/SmTListener.class/class/enable.st
deleted file mode 100644
index 58b85fe..0000000
--- a/SmartTest.package/SmTListener.class/class/enable.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-enable
-	self uniqueInstance enable.
\ No newline at end of file
diff --git a/SmartTest.package/SmTListener.class/class/initialize.st b/SmartTest.package/SmTListener.class/class/initialize.st
deleted file mode 100644
index 5b6c9dd..0000000
--- a/SmartTest.package/SmTListener.class/class/initialize.st
+++ /dev/null
@@ -1,3 +0,0 @@
-initialization
-initialize
-	self disable
\ No newline at end of file
diff --git a/SmartTest.package/SmTListener.class/class/uniqueInstance.st b/SmartTest.package/SmTListener.class/class/uniqueInstance.st
deleted file mode 100644
index 85045bd..0000000
--- a/SmartTest.package/SmTListener.class/class/uniqueInstance.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-uniqueInstance
-	^ uniqueInstance ifNil: [ uniqueInstance := self new ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTListener.class/instance/addToElementBag..st b/SmartTest.package/SmTListener.class/instance/addToElementBag..st
deleted file mode 100644
index e373ece..0000000
--- a/SmartTest.package/SmTListener.class/instance/addToElementBag..st
+++ /dev/null
@@ -1,3 +0,0 @@
-search
-addToElementBag: anElement
-	SmTOnModificationStrategy uniqueInstance add: anElement 
\ No newline at end of file
diff --git a/SmartTest.package/SmTListener.class/instance/disable.st b/SmartTest.package/SmTListener.class/instance/disable.st
deleted file mode 100644
index 06a71a1..0000000
--- a/SmartTest.package/SmTListener.class/instance/disable.st
+++ /dev/null
@@ -1,4 +0,0 @@
-protocol
-disable
-	"Do not receiver any system change notification anymore"
-	SystemAnnouncer uniqueInstance unsubscribe: self
\ No newline at end of file
diff --git a/SmartTest.package/SmTListener.class/instance/enable.st b/SmartTest.package/SmTListener.class/instance/enable.st
deleted file mode 100644
index 367529b..0000000
--- a/SmartTest.package/SmTListener.class/instance/enable.st
+++ /dev/null
@@ -1,2 +0,0 @@
-protocol
-enable
diff --git a/SmartTest.package/SmTListener.class/properties.json b/SmartTest.package/SmTListener.class/properties.json
deleted file mode 100644
index 8e3574d..0000000
--- a/SmartTest.package/SmTListener.class/properties.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-	"commentStamp" : "BenoitVerhaeghe 6/29/2017 11:51",
-	"super" : "Object",
-	"category" : "SmartTest-Listener",
-	"classinstvars" : [
-		"uniqueInstance",
-		"activated"
-	],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [
-		"collector"
-	],
-	"name" : "SmTListener",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTMethodNeedTestsCritique.class/README.md b/SmartTest.package/SmTMethodNeedTestsCritique.class/README.md
deleted file mode 100644
index 48357e7..0000000
--- a/SmartTest.package/SmTMethodNeedTestsCritique.class/README.md
+++ /dev/null
@@ -1 +0,0 @@
-The critique that explains you need to write test for a method
\ No newline at end of file
diff --git a/SmartTest.package/SmTMethodNeedTestsCritique.class/instance/change.st b/SmartTest.package/SmTMethodNeedTestsCritique.class/instance/change.st
deleted file mode 100644
index 5d9e791..0000000
--- a/SmartTest.package/SmTMethodNeedTestsCritique.class/instance/change.st
+++ /dev/null
@@ -1,2 +0,0 @@
-accessing
-change
\ No newline at end of file
diff --git a/SmartTest.package/SmTMethodNeedTestsCritique.class/instance/description.st b/SmartTest.package/SmTMethodNeedTestsCritique.class/instance/description.st
deleted file mode 100644
index 09b485b..0000000
--- a/SmartTest.package/SmTMethodNeedTestsCritique.class/instance/description.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-description
-	^'You should always test your methods to ensure the fiability of your code'
\ No newline at end of file
diff --git a/SmartTest.package/SmTMethodNeedTestsCritique.class/instance/execute.st b/SmartTest.package/SmTMethodNeedTestsCritique.class/instance/execute.st
deleted file mode 100644
index 71e52fb..0000000
--- a/SmartTest.package/SmTMethodNeedTestsCritique.class/instance/execute.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-execute
-	SmTTestGenerator new generateTestMethodFor: self sourceAnchor entity
\ No newline at end of file
diff --git a/SmartTest.package/SmTMethodNeedTestsCritique.class/instance/nameToDisplay.st b/SmartTest.package/SmTMethodNeedTestsCritique.class/instance/nameToDisplay.st
deleted file mode 100644
index 91073c9..0000000
--- a/SmartTest.package/SmTMethodNeedTestsCritique.class/instance/nameToDisplay.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-nameToDisplay
-	^ 'Add a Test for ', self sourceAnchor entity name 
\ No newline at end of file
diff --git a/SmartTest.package/SmTMethodNeedTestsCritique.class/instance/oldVersionTextToDisplay.st b/SmartTest.package/SmTMethodNeedTestsCritique.class/instance/oldVersionTextToDisplay.st
deleted file mode 100644
index d116e05..0000000
--- a/SmartTest.package/SmTMethodNeedTestsCritique.class/instance/oldVersionTextToDisplay.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-oldVersionTextToDisplay
-	^''
\ No newline at end of file
diff --git a/SmartTest.package/SmTMethodNeedTestsCritique.class/instance/providesChange.st b/SmartTest.package/SmTMethodNeedTestsCritique.class/instance/providesChange.st
deleted file mode 100644
index 140b20c..0000000
--- a/SmartTest.package/SmTMethodNeedTestsCritique.class/instance/providesChange.st
+++ /dev/null
@@ -1,3 +0,0 @@
-testing
-providesChange
-	^true
\ No newline at end of file
diff --git a/SmartTest.package/SmTMethodNeedTestsCritique.class/instance/textToDisplay.st b/SmartTest.package/SmTMethodNeedTestsCritique.class/instance/textToDisplay.st
deleted file mode 100644
index 19220e5..0000000
--- a/SmartTest.package/SmTMethodNeedTestsCritique.class/instance/textToDisplay.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-textToDisplay
-	^''
\ No newline at end of file
diff --git a/SmartTest.package/SmTMethodNeedTestsCritique.class/instance/title.st b/SmartTest.package/SmTMethodNeedTestsCritique.class/instance/title.st
deleted file mode 100644
index f9d7034..0000000
--- a/SmartTest.package/SmTMethodNeedTestsCritique.class/instance/title.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-title
-	^ 'You should write tests for your method'
\ No newline at end of file
diff --git a/SmartTest.package/SmTMethodNeedTestsCritique.class/instance/whatToDisplayIn..st b/SmartTest.package/SmTMethodNeedTestsCritique.class/instance/whatToDisplayIn..st
deleted file mode 100644
index 396c583..0000000
--- a/SmartTest.package/SmTMethodNeedTestsCritique.class/instance/whatToDisplayIn..st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-whatToDisplayIn: aBrowser
-	^ { self }
\ No newline at end of file
diff --git a/SmartTest.package/SmTMethodNeedTestsCritique.class/properties.json b/SmartTest.package/SmTMethodNeedTestsCritique.class/properties.json
deleted file mode 100644
index ec1ee9c..0000000
--- a/SmartTest.package/SmTMethodNeedTestsCritique.class/properties.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-	"commentStamp" : "BenoitVerhaeghe 6/28/2017 14:16",
-	"super" : "SmTNeedTestsCritique",
-	"category" : "SmartTest-Critiques",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [ ],
-	"name" : "SmTMethodNeedTestsCritique",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTMethodRelativeTestsCritique.class/README.md b/SmartTest.package/SmTMethodRelativeTestsCritique.class/README.md
deleted file mode 100644
index 6f27049..0000000
--- a/SmartTest.package/SmTMethodRelativeTestsCritique.class/README.md
+++ /dev/null
@@ -1 +0,0 @@
-The critique that explains you should run test for this method
\ No newline at end of file
diff --git a/SmartTest.package/SmTMethodRelativeTestsCritique.class/class/for.by.tests..st b/SmartTest.package/SmTMethodRelativeTestsCritique.class/class/for.by.tests..st
deleted file mode 100644
index 43eadaf..0000000
--- a/SmartTest.package/SmTMethodRelativeTestsCritique.class/class/for.by.tests..st
+++ /dev/null
@@ -1,5 +0,0 @@
-instance creation
-for: anEntity by: aRule tests: aTestList
-	^ self basicNew
-		initializeRule: aRule target: anEntity testsList: aTestList;
-		yourself
\ No newline at end of file
diff --git a/SmartTest.package/SmTMethodRelativeTestsCritique.class/instance/description.st b/SmartTest.package/SmTMethodRelativeTestsCritique.class/instance/description.st
deleted file mode 100644
index 09b485b..0000000
--- a/SmartTest.package/SmTMethodRelativeTestsCritique.class/instance/description.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-description
-	^'You should always test your methods to ensure the fiability of your code'
\ No newline at end of file
diff --git a/SmartTest.package/SmTMethodRelativeTestsCritique.class/instance/title.st b/SmartTest.package/SmTMethodRelativeTestsCritique.class/instance/title.st
deleted file mode 100644
index 7977473..0000000
--- a/SmartTest.package/SmTMethodRelativeTestsCritique.class/instance/title.st
+++ /dev/null
@@ -1,5 +0,0 @@
-accessing
-title
-	 (self hasModifications)
-				ifTrue: [ ^ 'You should run tests relative to your last modification' ].
-	^ 'You should run these tests'
\ No newline at end of file
diff --git a/SmartTest.package/SmTMethodRelativeTestsCritique.class/properties.json b/SmartTest.package/SmTMethodRelativeTestsCritique.class/properties.json
deleted file mode 100644
index e1eb55d..0000000
--- a/SmartTest.package/SmTMethodRelativeTestsCritique.class/properties.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-	"commentStamp" : "BenoitVerhaeghe 6/28/2017 14:16",
-	"super" : "SmTRelativeTestsCritique",
-	"category" : "SmartTest-Critiques",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [
-		"entity"
-	],
-	"name" : "SmTMethodRelativeTestsCritique",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTMethodTestedRule.class/README.md b/SmartTest.package/SmTMethodTestedRule.class/README.md
deleted file mode 100644
index dfa0fa1..0000000
--- a/SmartTest.package/SmTMethodTestedRule.class/README.md
+++ /dev/null
@@ -1 +0,0 @@
-I check method tests
\ No newline at end of file
diff --git a/SmartTest.package/SmTMethodTestedRule.class/class/checksMethod.st b/SmartTest.package/SmTMethodTestedRule.class/class/checksMethod.st
deleted file mode 100644
index 6970277..0000000
--- a/SmartTest.package/SmTMethodTestedRule.class/class/checksMethod.st
+++ /dev/null
@@ -1,3 +0,0 @@
-testing-interest
-checksMethod
-	^ true
\ No newline at end of file
diff --git a/SmartTest.package/SmTMethodTestedRule.class/class/initialize.st b/SmartTest.package/SmTMethodTestedRule.class/class/initialize.st
deleted file mode 100644
index 3026617..0000000
--- a/SmartTest.package/SmTMethodTestedRule.class/class/initialize.st
+++ /dev/null
@@ -1,3 +0,0 @@
-testing-interest
-initialize
-	ReRuleManager cleanUp 
\ No newline at end of file
diff --git a/SmartTest.package/SmTMethodTestedRule.class/class/methodActivated..st b/SmartTest.package/SmTMethodTestedRule.class/class/methodActivated..st
deleted file mode 100644
index 176ab21..0000000
--- a/SmartTest.package/SmTMethodTestedRule.class/class/methodActivated..st
+++ /dev/null
@@ -1,3 +0,0 @@
-testing-interest
-methodActivated: aSelector
-	MethodActivated := aSelector
\ No newline at end of file
diff --git a/SmartTest.package/SmTMethodTestedRule.class/class/methodActivated.st b/SmartTest.package/SmTMethodTestedRule.class/class/methodActivated.st
deleted file mode 100644
index 08d58ce..0000000
--- a/SmartTest.package/SmTMethodTestedRule.class/class/methodActivated.st
+++ /dev/null
@@ -1,3 +0,0 @@
-testing-interest
-methodActivated
-	^ MethodActivated ifNil: [ MethodActivated := true ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTMethodTestedRule.class/class/settingsOn..st b/SmartTest.package/SmTMethodTestedRule.class/class/settingsOn..st
deleted file mode 100644
index 0b27cf6..0000000
--- a/SmartTest.package/SmTMethodTestedRule.class/class/settingsOn..st
+++ /dev/null
@@ -1,9 +0,0 @@
-testing-interest
-settingsOn: aBuilder
-	<systemsettings>
-	(aBuilder setting: #methodActivated)
-		parent: #SmTActivationRenrakuOption;
-		target: self;
-		order: 0.2;
-		label: 'SmartTest method analyse activated';
-		description: 'Toogle to activate/disable the analyse for method'
\ No newline at end of file
diff --git a/SmartTest.package/SmTMethodTestedRule.class/instance/basicCheck..st b/SmartTest.package/SmTMethodTestedRule.class/instance/basicCheck..st
deleted file mode 100644
index 2a71197..0000000
--- a/SmartTest.package/SmTMethodTestedRule.class/instance/basicCheck..st
+++ /dev/null
@@ -1,4 +0,0 @@
-running
-basicCheck: anEntity
-	^ (super basicCheck: anEntity)
-		and: [ (anEntity isKindOf: CompiledMethod) and: [ self class methodActivated ] ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTMethodTestedRule.class/instance/check.forCritiquesDo..st b/SmartTest.package/SmTMethodTestedRule.class/instance/check.forCritiquesDo..st
deleted file mode 100644
index 63bb6df..0000000
--- a/SmartTest.package/SmTMethodTestedRule.class/instance/check.forCritiquesDo..st
+++ /dev/null
@@ -1,7 +0,0 @@
-enumerating
-check: anEntity forCritiquesDo: aCriticBlock
-	(self basicCheck: anEntity)
-		ifTrue: [ (self findTestsForMethod: anEntity) isEmpty
-				ifTrue: [ aCriticBlock value: (SmTMethodNeedTestsCritique for: anEntity by: self) ]
-				ifFalse: [ aCriticBlock
-						value: (SmTMethodRelativeTestsCritique for: anEntity by: self tests: self tests) ] ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTMethodTestedRule.class/instance/isVisible.st b/SmartTest.package/SmTMethodTestedRule.class/instance/isVisible.st
deleted file mode 100644
index 80558d3..0000000
--- a/SmartTest.package/SmTMethodTestedRule.class/instance/isVisible.st
+++ /dev/null
@@ -1,3 +0,0 @@
-running
-isVisible
-	^ true
\ No newline at end of file
diff --git a/SmartTest.package/SmTMethodTestedRule.class/instance/name.st b/SmartTest.package/SmTMethodTestedRule.class/instance/name.st
deleted file mode 100644
index 5afc357..0000000
--- a/SmartTest.package/SmTMethodTestedRule.class/instance/name.st
+++ /dev/null
@@ -1,3 +0,0 @@
-running
-name
-	^ 'SmartTest Method Tested'
\ No newline at end of file
diff --git a/SmartTest.package/SmTMethodTestedRule.class/properties.json b/SmartTest.package/SmTMethodTestedRule.class/properties.json
deleted file mode 100644
index d7e49cf..0000000
--- a/SmartTest.package/SmTMethodTestedRule.class/properties.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-	"commentStamp" : "BenoitVerhaeghe 6/28/2017 11:57",
-	"super" : "SmTRules",
-	"category" : "SmartTest-Rules",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [
-		"MethodActivated"
-	],
-	"instvars" : [ ],
-	"name" : "SmTMethodTestedRule",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTNeedTestsCritique.class/README.md b/SmartTest.package/SmTNeedTestsCritique.class/README.md
deleted file mode 100644
index fac3200..0000000
--- a/SmartTest.package/SmTNeedTestsCritique.class/README.md
+++ /dev/null
@@ -1 +0,0 @@
-I represent a critique when there are no tests for an entity
\ No newline at end of file
diff --git a/SmartTest.package/SmTNeedTestsCritique.class/instance/description.st b/SmartTest.package/SmTNeedTestsCritique.class/instance/description.st
deleted file mode 100644
index f9cc81c..0000000
--- a/SmartTest.package/SmTNeedTestsCritique.class/instance/description.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-description
-	self subclassResponsibility 
\ No newline at end of file
diff --git a/SmartTest.package/SmTNeedTestsCritique.class/instance/icon.st b/SmartTest.package/SmTNeedTestsCritique.class/instance/icon.st
deleted file mode 100644
index c1a5ac0..0000000
--- a/SmartTest.package/SmTNeedTestsCritique.class/instance/icon.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-icon
-	^#warning asIcon
\ No newline at end of file
diff --git a/SmartTest.package/SmTNeedTestsCritique.class/instance/providesChange.st b/SmartTest.package/SmTNeedTestsCritique.class/instance/providesChange.st
deleted file mode 100644
index 823c0e5..0000000
--- a/SmartTest.package/SmTNeedTestsCritique.class/instance/providesChange.st
+++ /dev/null
@@ -1,3 +0,0 @@
-testing
-providesChange
-	^false
\ No newline at end of file
diff --git a/SmartTest.package/SmTNeedTestsCritique.class/instance/title.st b/SmartTest.package/SmTNeedTestsCritique.class/instance/title.st
deleted file mode 100644
index e531037..0000000
--- a/SmartTest.package/SmTNeedTestsCritique.class/instance/title.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-title
-	self subclassResponsibility 
\ No newline at end of file
diff --git a/SmartTest.package/SmTNeedTestsCritique.class/properties.json b/SmartTest.package/SmTNeedTestsCritique.class/properties.json
deleted file mode 100644
index b2b1fa6..0000000
--- a/SmartTest.package/SmTNeedTestsCritique.class/properties.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-	"commentStamp" : "BenoitVerhaeghe 7/4/2017 10:06",
-	"super" : "ReAbstractCritique",
-	"category" : "SmartTest-Critiques",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [ ],
-	"name" : "SmTNeedTestsCritique",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTNoCacheStrategy.class/README.md b/SmartTest.package/SmTNoCacheStrategy.class/README.md
deleted file mode 100644
index e69de29..0000000
diff --git a/SmartTest.package/SmTNoCacheStrategy.class/instance/at..st b/SmartTest.package/SmTNoCacheStrategy.class/instance/at..st
deleted file mode 100644
index 4403041..0000000
--- a/SmartTest.package/SmTNoCacheStrategy.class/instance/at..st
+++ /dev/null
@@ -1,3 +0,0 @@
-private
-at: aMethodReference
-	^ Set new
\ No newline at end of file
diff --git a/SmartTest.package/SmTNoCacheStrategy.class/instance/at.ifAbsent..st b/SmartTest.package/SmTNoCacheStrategy.class/instance/at.ifAbsent..st
deleted file mode 100644
index c72fb6e..0000000
--- a/SmartTest.package/SmTNoCacheStrategy.class/instance/at.ifAbsent..st
+++ /dev/null
@@ -1,3 +0,0 @@
-private
-at: aCompiled ifAbsent: aBlock
-	^ aBlock value
\ No newline at end of file
diff --git a/SmartTest.package/SmTNoCacheStrategy.class/instance/at.put..st b/SmartTest.package/SmTNoCacheStrategy.class/instance/at.put..st
deleted file mode 100644
index 3356c83..0000000
--- a/SmartTest.package/SmTNoCacheStrategy.class/instance/at.put..st
+++ /dev/null
@@ -1,3 +0,0 @@
-private
-at: aMethodReference put: aCacheElement
-	^ self 
\ No newline at end of file
diff --git a/SmartTest.package/SmTNoCacheStrategy.class/instance/currentCache.st b/SmartTest.package/SmTNoCacheStrategy.class/instance/currentCache.st
deleted file mode 100644
index c4c9343..0000000
--- a/SmartTest.package/SmTNoCacheStrategy.class/instance/currentCache.st
+++ /dev/null
@@ -1,3 +0,0 @@
-private
-currentCache
-	^ Dictionary new
\ No newline at end of file
diff --git a/SmartTest.package/SmTNoCacheStrategy.class/instance/relevantTestsFor..st b/SmartTest.package/SmTNoCacheStrategy.class/instance/relevantTestsFor..st
deleted file mode 100644
index c47ce96..0000000
--- a/SmartTest.package/SmTNoCacheStrategy.class/instance/relevantTestsFor..st
+++ /dev/null
@@ -1,3 +0,0 @@
-private
-relevantTestsFor: aCompiledMethod
-	^ Set new
\ No newline at end of file
diff --git a/SmartTest.package/SmTNoCacheStrategy.class/instance/testsForMethodReference..st b/SmartTest.package/SmTNoCacheStrategy.class/instance/testsForMethodReference..st
deleted file mode 100644
index cab0ff0..0000000
--- a/SmartTest.package/SmTNoCacheStrategy.class/instance/testsForMethodReference..st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-testsForMethodReference: aMethodReference
-	^ Set new
\ No newline at end of file
diff --git a/SmartTest.package/SmTNoCacheStrategy.class/properties.json b/SmartTest.package/SmTNoCacheStrategy.class/properties.json
deleted file mode 100644
index e60e1d9..0000000
--- a/SmartTest.package/SmTNoCacheStrategy.class/properties.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-	"commentStamp" : "",
-	"super" : "SmTCacheStrategy",
-	"category" : "SmartTest-Cache",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [ ],
-	"name" : "SmTNoCacheStrategy",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTOnModificationStrategy.class/README.md b/SmartTest.package/SmTOnModificationStrategy.class/README.md
deleted file mode 100644
index abad158..0000000
--- a/SmartTest.package/SmTOnModificationStrategy.class/README.md
+++ /dev/null
@@ -1 +0,0 @@
-The tools that helps us when we are working on always on modification
\ No newline at end of file
diff --git a/SmartTest.package/SmTOnModificationStrategy.class/class/get..st b/SmartTest.package/SmTOnModificationStrategy.class/class/get..st
deleted file mode 100644
index 3d7b94d..0000000
--- a/SmartTest.package/SmTOnModificationStrategy.class/class/get..st
+++ /dev/null
@@ -1,4 +0,0 @@
-accessing
-get: anElement
-	"return nil if element absent. The object else"
-	^self uniqueInstance get: anElement.
\ No newline at end of file
diff --git a/SmartTest.package/SmTOnModificationStrategy.class/class/uniqueInstance.st b/SmartTest.package/SmTOnModificationStrategy.class/class/uniqueInstance.st
deleted file mode 100644
index 6984787..0000000
--- a/SmartTest.package/SmTOnModificationStrategy.class/class/uniqueInstance.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-uniqueInstance
-	^uniqueInstance ifNil: [ uniqueInstance := self new. ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTOnModificationStrategy.class/instance/add..st b/SmartTest.package/SmTOnModificationStrategy.class/instance/add..st
deleted file mode 100644
index 35d3ce3..0000000
--- a/SmartTest.package/SmTOnModificationStrategy.class/instance/add..st
+++ /dev/null
@@ -1,4 +0,0 @@
-adding
-add: aModifiedElement
-
-	self bag add: aModifiedElement
\ No newline at end of file
diff --git a/SmartTest.package/SmTOnModificationStrategy.class/instance/bag.st b/SmartTest.package/SmTOnModificationStrategy.class/instance/bag.st
deleted file mode 100644
index 596a915..0000000
--- a/SmartTest.package/SmTOnModificationStrategy.class/instance/bag.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-bag 
-	^bag ifNil: [ bag := Bag new ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTOnModificationStrategy.class/instance/get..st b/SmartTest.package/SmTOnModificationStrategy.class/instance/get..st
deleted file mode 100644
index f69a9af..0000000
--- a/SmartTest.package/SmTOnModificationStrategy.class/instance/get..st
+++ /dev/null
@@ -1,5 +0,0 @@
-accessing
-get: anElement
-	"return nil if element absent. The object else"
-	self bag remove: anElement ifAbsent: [ ^nil ].
-	^anElement 
\ No newline at end of file
diff --git a/SmartTest.package/SmTOnModificationStrategy.class/properties.json b/SmartTest.package/SmTOnModificationStrategy.class/properties.json
deleted file mode 100644
index 7bc69a7..0000000
--- a/SmartTest.package/SmTOnModificationStrategy.class/properties.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-	"commentStamp" : "BenoitVerhaeghe 7/3/2017 09:49",
-	"super" : "Object",
-	"category" : "SmartTest-Tools",
-	"classinstvars" : [
-		"uniqueInstance"
-	],
-	"pools" : [ ],
-	"classvars" : [
-		"Collector",
-		"UniqueInstance"
-	],
-	"instvars" : [
-		"bag"
-	],
-	"name" : "SmTOnModificationStrategy",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTOnModificationTest.class/README.md b/SmartTest.package/SmTOnModificationTest.class/README.md
deleted file mode 100644
index 226ef0c..0000000
--- a/SmartTest.package/SmTOnModificationTest.class/README.md
+++ /dev/null
@@ -1 +0,0 @@
-A CORAOnModificationTest is a test class for testing the behavior of CORAOnModification
\ No newline at end of file
diff --git a/SmartTest.package/SmTOnModificationTest.class/instance/testAdd.st b/SmartTest.package/SmTOnModificationTest.class/instance/testAdd.st
deleted file mode 100644
index f95876a..0000000
--- a/SmartTest.package/SmTOnModificationTest.class/instance/testAdd.st
+++ /dev/null
@@ -1,9 +0,0 @@
-tests-adding
-testAdd
-	| onModif el |
-	onModif := SmTOnModificationStrategy new.
-	self assert: onModif bag isEmpty.
-	el := (SmTRunnerTest>>#noop). 
-	onModif add: el. 
-	self assert: onModif bag size equals: 1.
-	self assert:( onModif bag includes: el)
\ No newline at end of file
diff --git a/SmartTest.package/SmTOnModificationTest.class/instance/testGet.st b/SmartTest.package/SmTOnModificationTest.class/instance/testGet.st
deleted file mode 100644
index ded9bb1..0000000
--- a/SmartTest.package/SmTOnModificationTest.class/instance/testGet.st
+++ /dev/null
@@ -1,13 +0,0 @@
-tests-adding
-testGet
-	| onModif el |
-	onModif := SmTOnModificationStrategy new.
-	el := (SmTRunnerTest>>#noop).
-	onModif add: el.
-
-	self assert: (onModif get: (SmTRunnerTest>>#testIconForTestResultGreen)) equals: nil.
-	self assert: onModif bag size equals: 1.
-	self assert: (onModif get: (SmTRunnerTest>>#testIconForTestResultGreen)) equals: nil.
-	self assert: (onModif get: el) equals: el.
-	self assert: onModif bag size equals: 0.
-	self assert: (onModif get: el) equals: nil
\ No newline at end of file
diff --git a/SmartTest.package/SmTOnModificationTest.class/properties.json b/SmartTest.package/SmTOnModificationTest.class/properties.json
deleted file mode 100644
index 69ea590..0000000
--- a/SmartTest.package/SmTOnModificationTest.class/properties.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-	"commentStamp" : "<historical>",
-	"super" : "TestCase",
-	"category" : "SmartTest-Tests",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [ ],
-	"name" : "SmTOnModificationTest",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTProgressCircle.class/README.md b/SmartTest.package/SmTProgressCircle.class/README.md
deleted file mode 100644
index b1af462..0000000
--- a/SmartTest.package/SmTProgressCircle.class/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-pc := ProgressCircle new color: Color blue.
-pc extent: 500@500.
-pc percentage: 0.3.
-pc position: pc topRight.
-pc openInWorld.
-
-mes := MorphEventSubscription new
-	recipient: CORAEventRecipient new;
-	selector: #hello.
-
-meh := MorphicEventHandler new 
-	addSubscription: mes toEvent: #click.
-
-pc eventHandler: meh.
-
diff --git a/SmartTest.package/SmTProgressCircle.class/instance/controler..st b/SmartTest.package/SmTProgressCircle.class/instance/controler..st
deleted file mode 100644
index 680d164..0000000
--- a/SmartTest.package/SmTProgressCircle.class/instance/controler..st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-controler: anObject
-	controler := anObject
\ No newline at end of file
diff --git a/SmartTest.package/SmTProgressCircle.class/instance/drawOn..st b/SmartTest.package/SmTProgressCircle.class/instance/drawOn..st
deleted file mode 100644
index 934e855..0000000
--- a/SmartTest.package/SmTProgressCircle.class/instance/drawOn..st
+++ /dev/null
@@ -1,8 +0,0 @@
-drawing
-drawOn: aCanvas
-	aCanvas
-		fillOval: bounds
-		fillStyle: self fillStyle
-		withPercentage: self percentage
-		borderWidth: borderWidth
-		borderColor: borderColor
\ No newline at end of file
diff --git a/SmartTest.package/SmTProgressCircle.class/instance/handlesMouseDown..st b/SmartTest.package/SmTProgressCircle.class/instance/handlesMouseDown..st
deleted file mode 100644
index b306a99..0000000
--- a/SmartTest.package/SmTProgressCircle.class/instance/handlesMouseDown..st
+++ /dev/null
@@ -1,3 +0,0 @@
-drawing
-handlesMouseDown: anEvent 
-    ^ true
\ No newline at end of file
diff --git a/SmartTest.package/SmTProgressCircle.class/instance/mouseDown..st b/SmartTest.package/SmTProgressCircle.class/instance/mouseDown..st
deleted file mode 100644
index 215005f..0000000
--- a/SmartTest.package/SmTProgressCircle.class/instance/mouseDown..st
+++ /dev/null
@@ -1,4 +0,0 @@
-drawing
-mouseDown: anEvent
-	controler notify
-     
\ No newline at end of file
diff --git a/SmartTest.package/SmTProgressCircle.class/instance/percentage..st b/SmartTest.package/SmTProgressCircle.class/instance/percentage..st
deleted file mode 100644
index 585cc6f..0000000
--- a/SmartTest.package/SmTProgressCircle.class/instance/percentage..st
+++ /dev/null
@@ -1,4 +0,0 @@
-accessing
-percentage: anObject
-	percentage := anObject.
-	self changed
\ No newline at end of file
diff --git a/SmartTest.package/SmTProgressCircle.class/instance/percentage.st b/SmartTest.package/SmTProgressCircle.class/instance/percentage.st
deleted file mode 100644
index 4e4eb07..0000000
--- a/SmartTest.package/SmTProgressCircle.class/instance/percentage.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-percentage
-	^ percentage
\ No newline at end of file
diff --git a/SmartTest.package/SmTProgressCircle.class/properties.json b/SmartTest.package/SmTProgressCircle.class/properties.json
deleted file mode 100644
index 7a6c116..0000000
--- a/SmartTest.package/SmTProgressCircle.class/properties.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-	"commentStamp" : "BenoitVerhaeghe 7/18/2017 10:40",
-	"super" : "CircleMorph",
-	"category" : "SmartTest-Morph",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [
-		"percentage",
-		"controler"
-	],
-	"name" : "SmTProgressCircle",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTReflectivityTestFinderStrategy.class/README.md b/SmartTest.package/SmTReflectivityTestFinderStrategy.class/README.md
deleted file mode 100644
index 3b5405a..0000000
--- a/SmartTest.package/SmTReflectivityTestFinderStrategy.class/README.md
+++ /dev/null
@@ -1,2 +0,0 @@
-I'm a dinamycal finder. 
-I use the meta link to discover the coverage of Test
\ No newline at end of file
diff --git a/SmartTest.package/SmTReflectivityTestFinderStrategy.class/class/isConcreteFinder.st b/SmartTest.package/SmTReflectivityTestFinderStrategy.class/class/isConcreteFinder.st
deleted file mode 100644
index 37fb41d..0000000
--- a/SmartTest.package/SmTReflectivityTestFinderStrategy.class/class/isConcreteFinder.st
+++ /dev/null
@@ -1,3 +0,0 @@
-testing
-isConcreteFinder
-	^ true
\ No newline at end of file
diff --git a/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/analyseAndRemoveProxyFor..st b/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/analyseAndRemoveProxyFor..st
deleted file mode 100644
index e7eebe3..0000000
--- a/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/analyseAndRemoveProxyFor..st
+++ /dev/null
@@ -1,3 +0,0 @@
-api
-analyseAndRemoveProxyFor: aTestCase
-		MetaLink uninstallAll
\ No newline at end of file
diff --git a/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/buildCacheFromTestSuite..st b/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/buildCacheFromTestSuite..st
deleted file mode 100644
index 77049d9..0000000
--- a/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/buildCacheFromTestSuite..st
+++ /dev/null
@@ -1,4 +0,0 @@
-api
-buildCacheFromTestSuite: aTestSuite
-	aTestSuite flatCollectTests do: [ :aTestCase | self installProxyFor: aTestCase. aTestCase run ].
-	MetaLink uninstallAll
\ No newline at end of file
diff --git a/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/collectAllRelativePackages..st b/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/collectAllRelativePackages..st
deleted file mode 100644
index bf5670c..0000000
--- a/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/collectAllRelativePackages..st
+++ /dev/null
@@ -1,3 +0,0 @@
-as yet unclassified
-collectAllRelativePackages: aByteString
-	^ RPackageOrganizer default packages select: [ :a | (self filter extractPackageBaseName: a packageName) = aByteString ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/collectRelativeTestMethodOfMethods..st b/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/collectRelativeTestMethodOfMethods..st
deleted file mode 100644
index ca076e8..0000000
--- a/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/collectRelativeTestMethodOfMethods..st
+++ /dev/null
@@ -1,7 +0,0 @@
-as yet unclassified
-collectRelativeTestMethodOfMethods: methods
-	^ (((methods collect: [ :aMethod | aMethod asTestMethod ])
-		select: [ :aTestMethod | aTestMethod isNotNil ])
-		reject: [ :aTestMethod | self isCORAMethodBlacklisted: aTestMethod ])
-		asSet
-		collect: [ :method | method methodClass selector: method selector ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/extractCompiledMethodFromReceiver.andSelector..st b/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/extractCompiledMethodFromReceiver.andSelector..st
deleted file mode 100644
index 4f751ad..0000000
--- a/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/extractCompiledMethodFromReceiver.andSelector..st
+++ /dev/null
@@ -1,4 +0,0 @@
-as yet unclassified
-extractCompiledMethodFromReceiver: receiver andSelector: selector
-	" (self class environment at: aSendNode receiver methodNode compiledMethod) lookupSelector: aSendNode selector"
-	^  receiver class lookupSelector: selector 
\ No newline at end of file
diff --git a/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/extractCurrentTestExecutionFromContext..st b/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/extractCurrentTestExecutionFromContext..st
deleted file mode 100644
index 557c9b6..0000000
--- a/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/extractCurrentTestExecutionFromContext..st
+++ /dev/null
@@ -1,6 +0,0 @@
-as yet unclassified
-extractCurrentTestExecutionFromContext: ctxt
-	| aTestCase aCompiledTestCase |
- 	aTestCase := ctxt arguments at: 1.
- 	aCompiledTestCase := aTestCase class >> aTestCase selector.
- 	^ aCompiledTestCase compiledMethod
\ No newline at end of file
diff --git a/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/initializeLink.st b/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/initializeLink.st
deleted file mode 100644
index 108907a..0000000
--- a/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/initializeLink.st
+++ /dev/null
@@ -1,14 +0,0 @@
-initialization
-initializeLink
-	| link |
-	link := MetaLink new
-		metaObject: [ :ctxt | 
-			| aCompiledTestCase |
-			aCompiledTestCase := self extractCurrentTestExecutionFromContext: ctxt.
-			self initializeLinkInCompiledMethod: aCompiledTestCase.
-			self currentTestExecution: aCompiledTestCase ];
-		selector: #value:;
-		arguments: #(context);
-		level: 0;
-		optionOneShot: true.
-	(TestExecutionEnvironment >> #runTestCase:) ast link: link
\ No newline at end of file
diff --git a/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/initializeLinkInCompiledMethod..st b/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/initializeLinkInCompiledMethod..st
deleted file mode 100644
index 16f53cc..0000000
--- a/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/initializeLinkInCompiledMethod..st
+++ /dev/null
@@ -1,15 +0,0 @@
-initialization
-initializeLinkInCompiledMethod: aCompiledMethod
-	| link |
-	link := MetaLink new
-		metaObject: [ :receiver :selector | 
-			| receiverCompiledMethod |
-			receiverCompiledMethod := self extractCompiledMethodFromReceiver: receiver andSelector: selector.
-			(self isCompiledMethod: receiverCompiledMethod alreadyExploredForTest: self currentTestExecution)
-				ifFalse: [ self initializeLinkInCompiledMethod: receiverCompiledMethod ].
-			self addATest: self currentTestExecution toMethod: receiverCompiledMethod ];
-		selector: #value:value:;
-		arguments: #(receiver selector);
-		level: 0;
-		optionOneShot: true.
-	aCompiledMethod sendNodes do: [ :node | node link: link ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/installLinkAndRunTest..st b/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/installLinkAndRunTest..st
deleted file mode 100644
index b271849..0000000
--- a/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/installLinkAndRunTest..st
+++ /dev/null
@@ -1,9 +0,0 @@
-as yet unclassified
-installLinkAndRunTest: aTestMethod
-	| testEnv |
-	self currentTestExecution: aTestMethod.
-	self initializeLinkInCompiledMethod: (aTestMethod class >> aTestMethod selector).
-
-	testEnv := TestExecutionEnvironment new.
-	[testEnv beActiveDuring: [
-		testEnv runTestCase: aTestMethod]] on: Exception do: [  ].
\ No newline at end of file
diff --git a/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/installProxyFor..st b/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/installProxyFor..st
deleted file mode 100644
index 8bea42e..0000000
--- a/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/installProxyFor..st
+++ /dev/null
@@ -1,4 +0,0 @@
-api
-installProxyFor: aTestCase
-	self currentTestExecution: aTestCase.
-	self initializeLinkInCompiledMethod: aTestCase class >> aTestCase selector
\ No newline at end of file
diff --git a/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/isCORAMethodBlacklisted..st b/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/isCORAMethodBlacklisted..st
deleted file mode 100644
index b5ebb25..0000000
--- a/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/isCORAMethodBlacklisted..st
+++ /dev/null
@@ -1,3 +0,0 @@
-testing
-isCORAMethodBlacklisted: aCompiledMethod
-	^ (aCompiledMethod pragmaAt: #CORATestBlacklisted) isNotNil
\ No newline at end of file
diff --git a/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/isCompiledMethod.alreadyExploredForTest..st b/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/isCompiledMethod.alreadyExploredForTest..st
deleted file mode 100644
index 1c9c5d0..0000000
--- a/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/isCompiledMethod.alreadyExploredForTest..st
+++ /dev/null
@@ -1,6 +0,0 @@
-testing
-isCompiledMethod: receiverCompiledMethod alreadyExploredForTest: testInstance
-	self cache
-		at: receiverCompiledMethod methodReference
-		ifPresent: [ :aSetOfTestInstance | ^ aSetOfTestInstance includes: (testInstance class >> testInstance selector) methodReference  ]
-		ifAbsent: [ ^ false ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/methodsInSimilarPackageAs..st b/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/methodsInSimilarPackageAs..st
deleted file mode 100644
index 44bb3fa..0000000
--- a/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/methodsInSimilarPackageAs..st
+++ /dev/null
@@ -1,8 +0,0 @@
-as yet unclassified
-methodsInSimilarPackageAs: aCompiledMethod
-		
-	| packageBaseName packages |
-	packageBaseName := self filter extractCompiledMethodPackageBaseName: aCompiledMethod.
-	packages := self collectAllRelativePackages: packageBaseName.
-	^ packages
-		flatCollect: [ :aPackage | aPackage package correspondingRPackage methods ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/searchRelativeTestForMethod..st b/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/searchRelativeTestForMethod..st
deleted file mode 100644
index d860b54..0000000
--- a/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/searchRelativeTestForMethod..st
+++ /dev/null
@@ -1,11 +0,0 @@
-search
-searchRelativeTestForMethod: aCompiledMethod
-	"Search for only one package and NOT relative others method"
-
-	| methods |
-
-	methods := self methodsInSimilarPackageAs: aCompiledMethod.
-	((self collectRelativeTestMethodOfMethods: methods) asOrderedCollection sort: [ :a :b | a printString < b printString ])
-		do: [ :aTestMethod | self installLinkAndRunTest: aTestMethod ]
-		displayingProgress: [ :aClass | 'Processing ' , aClass asString ]
-		every: 1
\ No newline at end of file
diff --git a/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/testsForAStandardMethod..st b/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/testsForAStandardMethod..st
deleted file mode 100644
index 317c079..0000000
--- a/SmartTest.package/SmTReflectivityTestFinderStrategy.class/instance/testsForAStandardMethod..st
+++ /dev/null
@@ -1,6 +0,0 @@
-private
-testsForAStandardMethod: aCompiledMethod
-	self cache
-		at: aCompiledMethod methodReference
-		ifAbsent: [ self searchRelativeTestForMethod: aCompiledMethod ].
-	^ (self testsForMethod: aCompiledMethod) collect: #compiledMethod
\ No newline at end of file
diff --git a/SmartTest.package/SmTReflectivityTestFinderStrategy.class/properties.json b/SmartTest.package/SmTReflectivityTestFinderStrategy.class/properties.json
deleted file mode 100644
index 3e7ff27..0000000
--- a/SmartTest.package/SmTReflectivityTestFinderStrategy.class/properties.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-	"commentStamp" : "BenoitVerhaeghe 7/13/2017 14:23",
-	"super" : "SmTTestFinderDynamicStrategy",
-	"category" : "SmartTest-Finder",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [ ],
-	"name" : "SmTReflectivityTestFinderStrategy",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTRelativeTestsCritique.class/README.md b/SmartTest.package/SmTRelativeTestsCritique.class/README.md
deleted file mode 100644
index 56ceb36..0000000
--- a/SmartTest.package/SmTRelativeTestsCritique.class/README.md
+++ /dev/null
@@ -1 +0,0 @@
-I represent a critique when there are tests to run for an entity
\ No newline at end of file
diff --git a/SmartTest.package/SmTRelativeTestsCritique.class/class/for.by.tests..st b/SmartTest.package/SmTRelativeTestsCritique.class/class/for.by.tests..st
deleted file mode 100644
index 43eadaf..0000000
--- a/SmartTest.package/SmTRelativeTestsCritique.class/class/for.by.tests..st
+++ /dev/null
@@ -1,5 +0,0 @@
-instance creation
-for: anEntity by: aRule tests: aTestList
-	^ self basicNew
-		initializeRule: aRule target: anEntity testsList: aTestList;
-		yourself
\ No newline at end of file
diff --git a/SmartTest.package/SmTRelativeTestsCritique.class/instance/actions.st b/SmartTest.package/SmTRelativeTestsCritique.class/instance/actions.st
deleted file mode 100644
index 883d9d8..0000000
--- a/SmartTest.package/SmTRelativeTestsCritique.class/instance/actions.st
+++ /dev/null
@@ -1,10 +0,0 @@
-actions
-actions
-	^ super actions
-		copyWith:
-			(RePropertyAction new
-				icon: #smallWindow asIcon;
-				description: 'Open Tests Selection';
-				action:
-						[ :crit :package | self openTestsWindowWith: tests ];
-				yourself)
\ No newline at end of file
diff --git a/SmartTest.package/SmTRelativeTestsCritique.class/instance/description.st b/SmartTest.package/SmTRelativeTestsCritique.class/instance/description.st
deleted file mode 100644
index f9cc81c..0000000
--- a/SmartTest.package/SmTRelativeTestsCritique.class/instance/description.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-description
-	self subclassResponsibility 
\ No newline at end of file
diff --git a/SmartTest.package/SmTRelativeTestsCritique.class/instance/hasModifications.st b/SmartTest.package/SmTRelativeTestsCritique.class/instance/hasModifications.st
deleted file mode 100644
index d631a05..0000000
--- a/SmartTest.package/SmTRelativeTestsCritique.class/instance/hasModifications.st
+++ /dev/null
@@ -1,3 +0,0 @@
-testing
-hasModifications
-	^entityModified
\ No newline at end of file
diff --git a/SmartTest.package/SmTRelativeTestsCritique.class/instance/icon.st b/SmartTest.package/SmTRelativeTestsCritique.class/instance/icon.st
deleted file mode 100644
index 55351b3..0000000
--- a/SmartTest.package/SmTRelativeTestsCritique.class/instance/icon.st
+++ /dev/null
@@ -1,4 +0,0 @@
-accessing
-icon
-
-	^#smallInfo asIcon
\ No newline at end of file
diff --git a/SmartTest.package/SmTRelativeTestsCritique.class/instance/iconicButtons.st b/SmartTest.package/SmTRelativeTestsCritique.class/instance/iconicButtons.st
deleted file mode 100644
index 1b8a590..0000000
--- a/SmartTest.package/SmTRelativeTestsCritique.class/instance/iconicButtons.st
+++ /dev/null
@@ -1,4 +0,0 @@
-accessing
-iconicButtons
-	self testButton: (SmTIconFabric createIconForMethods: self tests).
-	^ {self testButton}
\ No newline at end of file
diff --git a/SmartTest.package/SmTRelativeTestsCritique.class/instance/initializeRule.target.testsList..st b/SmartTest.package/SmTRelativeTestsCritique.class/instance/initializeRule.target.testsList..st
deleted file mode 100644
index 6d07cc2..0000000
--- a/SmartTest.package/SmTRelativeTestsCritique.class/instance/initializeRule.target.testsList..st
+++ /dev/null
@@ -1,5 +0,0 @@
-initialization
-initializeRule: aRule target: anEntity testsList: aTestList
-	self initializeRule: aRule target: anEntity.
-	tests := aTestList.
-	entityModified := (SmTOnModificationStrategy get: self sourceAnchor entity) isNotNil 
\ No newline at end of file
diff --git a/SmartTest.package/SmTRelativeTestsCritique.class/instance/openTestsWindowWith..st b/SmartTest.package/SmTRelativeTestsCritique.class/instance/openTestsWindowWith..st
deleted file mode 100644
index 6f45cca..0000000
--- a/SmartTest.package/SmTRelativeTestsCritique.class/instance/openTestsWindowWith..st
+++ /dev/null
@@ -1,6 +0,0 @@
-actions
-openTestsWindowWith: aTestList
-	| ui |
-	ui := SmTAutoTestsWindows new.
-	ui setList: aTestList.
-	ui openWithSpec.
\ No newline at end of file
diff --git a/SmartTest.package/SmTRelativeTestsCritique.class/instance/providesChange.st b/SmartTest.package/SmTRelativeTestsCritique.class/instance/providesChange.st
deleted file mode 100644
index 823c0e5..0000000
--- a/SmartTest.package/SmTRelativeTestsCritique.class/instance/providesChange.st
+++ /dev/null
@@ -1,3 +0,0 @@
-testing
-providesChange
-	^false
\ No newline at end of file
diff --git a/SmartTest.package/SmTRelativeTestsCritique.class/instance/testButton..st b/SmartTest.package/SmTRelativeTestsCritique.class/instance/testButton..st
deleted file mode 100644
index 112f67d..0000000
--- a/SmartTest.package/SmTRelativeTestsCritique.class/instance/testButton..st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-testButton: anObject
-	testButton := anObject 
\ No newline at end of file
diff --git a/SmartTest.package/SmTRelativeTestsCritique.class/instance/testButton.st b/SmartTest.package/SmTRelativeTestsCritique.class/instance/testButton.st
deleted file mode 100644
index e6c1b88..0000000
--- a/SmartTest.package/SmTRelativeTestsCritique.class/instance/testButton.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-testButton
-	^ testButton
\ No newline at end of file
diff --git a/SmartTest.package/SmTRelativeTestsCritique.class/instance/tests..st b/SmartTest.package/SmTRelativeTestsCritique.class/instance/tests..st
deleted file mode 100644
index 36f35ea..0000000
--- a/SmartTest.package/SmTRelativeTestsCritique.class/instance/tests..st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-tests: anObject
-	tests := anObject
\ No newline at end of file
diff --git a/SmartTest.package/SmTRelativeTestsCritique.class/instance/tests.st b/SmartTest.package/SmTRelativeTestsCritique.class/instance/tests.st
deleted file mode 100644
index a473a35..0000000
--- a/SmartTest.package/SmTRelativeTestsCritique.class/instance/tests.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-tests
-	^ tests
\ No newline at end of file
diff --git a/SmartTest.package/SmTRelativeTestsCritique.class/instance/title.st b/SmartTest.package/SmTRelativeTestsCritique.class/instance/title.st
deleted file mode 100644
index e531037..0000000
--- a/SmartTest.package/SmTRelativeTestsCritique.class/instance/title.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-title
-	self subclassResponsibility 
\ No newline at end of file
diff --git a/SmartTest.package/SmTRelativeTestsCritique.class/properties.json b/SmartTest.package/SmTRelativeTestsCritique.class/properties.json
deleted file mode 100644
index c6488c5..0000000
--- a/SmartTest.package/SmTRelativeTestsCritique.class/properties.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-	"commentStamp" : "BenoitVerhaeghe 7/4/2017 10:06",
-	"super" : "ReAbstractCritique",
-	"category" : "SmartTest-Critiques",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [
-		"tests",
-		"entityModified",
-		"testButton"
-	],
-	"name" : "SmTRelativeTestsCritique",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTRules.class/README.md b/SmartTest.package/SmTRules.class/README.md
deleted file mode 100644
index 6315e87..0000000
--- a/SmartTest.package/SmTRules.class/README.md
+++ /dev/null
@@ -1 +0,0 @@
-I represent a kind of CORA structure
\ No newline at end of file
diff --git a/SmartTest.package/SmTRules.class/class/activated..st b/SmartTest.package/SmTRules.class/class/activated..st
deleted file mode 100644
index 5c94b9e..0000000
--- a/SmartTest.package/SmTRules.class/class/activated..st
+++ /dev/null
@@ -1,3 +0,0 @@
-settings
-activated: aSelector
-	^ Activated := aSelector
\ No newline at end of file
diff --git a/SmartTest.package/SmTRules.class/class/activated.st b/SmartTest.package/SmTRules.class/class/activated.st
deleted file mode 100644
index 75af3dc..0000000
--- a/SmartTest.package/SmTRules.class/class/activated.st
+++ /dev/null
@@ -1,3 +0,0 @@
-settings
-activated
-	^ Activated ifNil: [ Activated := true ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTRules.class/class/cacheClass..st b/SmartTest.package/SmTRules.class/class/cacheClass..st
deleted file mode 100644
index 49c1648..0000000
--- a/SmartTest.package/SmTRules.class/class/cacheClass..st
+++ /dev/null
@@ -1,4 +0,0 @@
-settings
-cacheClass: aSelector
-	self testFinder cacheClass: aSelector new.
-	^ smTCache := aSelector
\ No newline at end of file
diff --git a/SmartTest.package/SmTRules.class/class/cacheClass.st b/SmartTest.package/SmTRules.class/class/cacheClass.st
deleted file mode 100644
index 66f212b..0000000
--- a/SmartTest.package/SmTRules.class/class/cacheClass.st
+++ /dev/null
@@ -1,3 +0,0 @@
-settings
-cacheClass
-	^ smTCache ifNil: [ smTCache := SmTBasicCacheStrategy ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTRules.class/class/fillCache.st b/SmartTest.package/SmTRules.class/class/fillCache.st
deleted file mode 100644
index 40e803d..0000000
--- a/SmartTest.package/SmTRules.class/class/fillCache.st
+++ /dev/null
@@ -1,5 +0,0 @@
-instance creation
-fillCache
-	SmTSelectPackageBrowser openWithSmartFinder: self testFinder
-
-	
\ No newline at end of file
diff --git a/SmartTest.package/SmTRules.class/class/filter..st b/SmartTest.package/SmTRules.class/class/filter..st
deleted file mode 100644
index 511cd13..0000000
--- a/SmartTest.package/SmTRules.class/class/filter..st
+++ /dev/null
@@ -1,4 +0,0 @@
-settings
-filter: aSelector
-	self testFinder filter: aSelector new.
-	^ smTFilter := aSelector
\ No newline at end of file
diff --git a/SmartTest.package/SmTRules.class/class/filter.st b/SmartTest.package/SmTRules.class/class/filter.st
deleted file mode 100644
index 9ea0a69..0000000
--- a/SmartTest.package/SmTRules.class/class/filter.st
+++ /dev/null
@@ -1,3 +0,0 @@
-settings
-filter
-	^ smTFilter ifNil: [ smTFilter := SmTDefaultClassPackagesFilter ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTRules.class/class/finder..st b/SmartTest.package/SmTRules.class/class/finder..st
deleted file mode 100644
index b8c687d..0000000
--- a/SmartTest.package/SmTRules.class/class/finder..st
+++ /dev/null
@@ -1,5 +0,0 @@
-settings
-finder: aSelector
-	smTFinder := aSelector.
-	self testFinder smtFinder: aSelector new.
-	^ smTFinder
\ No newline at end of file
diff --git a/SmartTest.package/SmTRules.class/class/finder.st b/SmartTest.package/SmTRules.class/class/finder.st
deleted file mode 100644
index 4aadb8a..0000000
--- a/SmartTest.package/SmTRules.class/class/finder.st
+++ /dev/null
@@ -1,3 +0,0 @@
-settings
-finder
-	^ smTFinder ifNil: [ smTFinder := SmTSenderTestFinderStrategy ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTRules.class/class/runner..st b/SmartTest.package/SmTRules.class/class/runner..st
deleted file mode 100644
index 9336ee1..0000000
--- a/SmartTest.package/SmTRules.class/class/runner..st
+++ /dev/null
@@ -1,4 +0,0 @@
-settings
-runner: aSelector
-	smTTestRunner := aSelector.
-	self testFinder testRunner: aSelector
\ No newline at end of file
diff --git a/SmartTest.package/SmTRules.class/class/runner.st b/SmartTest.package/SmTRules.class/class/runner.st
deleted file mode 100644
index 1705755..0000000
--- a/SmartTest.package/SmTRules.class/class/runner.st
+++ /dev/null
@@ -1,3 +0,0 @@
-settings
-runner
-	^ smTTestRunner ifNil: [ smTTestRunner := SmTRunnerStrategySmart ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTRules.class/class/settingsOn..st b/SmartTest.package/SmTRules.class/class/settingsOn..st
deleted file mode 100644
index 5e9d623..0000000
--- a/SmartTest.package/SmTRules.class/class/settingsOn..st
+++ /dev/null
@@ -1,62 +0,0 @@
-settings
-settingsOn: aBuilder
-	<systemsettings>
-	(aBuilder group: #SmartTest)
-		with: [ (aBuilder group: #SmartFinder)
-				with: [ (aBuilder pickOne: #finder)
-						label: 'SmartTest finder';
-						target: self;
-						parent: #SmartFinder;
-						domainValues: (SmTTestFinderStrategy allSubclasses select: #isConcreteFinder);
-						description: 'The finder defines how CORA searchs the relative test of a method'.
-					(aBuilder pickOne: #cacheClass)
-						label: 'SmartTest Cache';
-						target: self;
-						parent: #SmartFinder;
-						domainValues: SmTCacheStrategy allSubclasses;
-						description:
-							'To visualize the current cache
-				SmTCacheSettings cache new currentCache'.
-					(aBuilder pickOne: #runner)
-						label: 'SmartTest test runner';
-						target: self;
-						parent: #SmartFinder;
-						domainValues: SmTRunnerStrategy allSubclasses;
-						description: 'The test runner defines if the tests are run in a debug way or not'.
-					(aBuilder pickOne: #strategy)
-						label: 'SmartTest testing strategy';
-						target: self;
-						parent: #SmartFinder;
-						domainValues: SmTTestingStrategy allSubclasses;
-						description: 'The testing strategy defines when SmartTest will run the test it has found.'.
-					(aBuilder pickOne: #filter)
-						label: 'SmartTest filter';
-						target: self;
-						parent: #SmartFinder;
-						domainValues: SmTDefaultPackagesFilter withAllSubclasses;
-						description: 'The testing strategy defines when SmartTest will run the test it has found.' ].
-			(aBuilder group: #SmTActivationRenrakuOption)
-				with: [ (aBuilder setting: #activated)
-						target: self;
-						order: 0.01;
-						label: 'SmartTest Reneraku Integration Activated';
-						description: 'Toogle to activate/disable the reneraku integration of the plugin' ].
-			(aBuilder setting: #shouldTryToFindTestForDynamic)
-				parent: 'SmartTest';
-				target: self;
-				order: 0.04;
-				label: 'Try to find for Dynamic ';
-				description:
-					'When you click in a method, and have selected a Dynamix finder, we''''are updating the cache for it execution
-	(BETA)'.
-			(aBuilder group: #reset)
-				label: 'Fill cache';
-				target: self;
-				parent: #SmartTest;
-				dialog: [ SimpleButtonMorph new
-						target: self;
-						label: 'Fill cache';
-						actionSelector: #fillCache;
-						themeChanged;
-						yourself ];
-				description: 'Fill the cache with selected package' ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTRules.class/class/shouldTryToFindTestForDynamic..st b/SmartTest.package/SmTRules.class/class/shouldTryToFindTestForDynamic..st
deleted file mode 100644
index 20e024b..0000000
--- a/SmartTest.package/SmTRules.class/class/shouldTryToFindTestForDynamic..st
+++ /dev/null
@@ -1,4 +0,0 @@
-instance creation
-shouldTryToFindTestForDynamic: aBoolean
-	shouldTryToFindTestForDynamic := aBoolean.
-	self testFinder shouldTryToFindTestForDynamic: aBoolean.
\ No newline at end of file
diff --git a/SmartTest.package/SmTRules.class/class/shouldTryToFindTestForDynamic.st b/SmartTest.package/SmTRules.class/class/shouldTryToFindTestForDynamic.st
deleted file mode 100644
index 468604a..0000000
--- a/SmartTest.package/SmTRules.class/class/shouldTryToFindTestForDynamic.st
+++ /dev/null
@@ -1,3 +0,0 @@
-instance creation
-shouldTryToFindTestForDynamic
-	^ shouldTryToFindTestForDynamic ifNil: [ shouldTryToFindTestForDynamic := true ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTRules.class/class/strategy..st b/SmartTest.package/SmTRules.class/class/strategy..st
deleted file mode 100644
index 1f475be..0000000
--- a/SmartTest.package/SmTRules.class/class/strategy..st
+++ /dev/null
@@ -1,6 +0,0 @@
-settings
-strategy: aSelector
-	smTClassTestingStrategy disable.
-	aSelector enable.
-	smTClassTestingStrategy := aSelector.
-	self testFinder testingStrategy: aSelector new.
\ No newline at end of file
diff --git a/SmartTest.package/SmTRules.class/class/strategy.st b/SmartTest.package/SmTRules.class/class/strategy.st
deleted file mode 100644
index 6f9d9dd..0000000
--- a/SmartTest.package/SmTRules.class/class/strategy.st
+++ /dev/null
@@ -1,3 +0,0 @@
-settings
-strategy
-	^ smTClassTestingStrategy ifNil: [ smTClassTestingStrategy := SmTTestingStrategyEachModification ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTRules.class/class/testFinder.st b/SmartTest.package/SmTRules.class/class/testFinder.st
deleted file mode 100644
index 97132ee..0000000
--- a/SmartTest.package/SmTRules.class/class/testFinder.st
+++ /dev/null
@@ -1,9 +0,0 @@
-instance creation
-testFinder
-	^ SmTSmartFinder ifNil: [ SmTSmartFinder := SmartFinder new
-		cacheClass: self cacheClass new;
-		filter: self filter new;
-		testRunner: self runner;
-		smtFinder: self finder new;
-		testingStrategy: self strategy new;
-		shouldTryToFindTestForDynamic: self shouldTryToFindTestForDynamic ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTRules.class/instance/activated.st b/SmartTest.package/SmTRules.class/instance/activated.st
deleted file mode 100644
index 4863674..0000000
--- a/SmartTest.package/SmTRules.class/instance/activated.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-activated
-	^ Activated
\ No newline at end of file
diff --git a/SmartTest.package/SmTRules.class/instance/basicCheck..st b/SmartTest.package/SmTRules.class/instance/basicCheck..st
deleted file mode 100644
index 1957c26..0000000
--- a/SmartTest.package/SmTRules.class/instance/basicCheck..st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-basicCheck: anEntity
-	^ self activated and: [ self isOnNautilusOrCalypso ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTRules.class/instance/findTestsForMethod..st b/SmartTest.package/SmTRules.class/instance/findTestsForMethod..st
deleted file mode 100644
index 2a81bcf..0000000
--- a/SmartTest.package/SmTRules.class/instance/findTestsForMethod..st
+++ /dev/null
@@ -1,3 +0,0 @@
-initialize-release
-findTestsForMethod: aCompiledMethod
-	^ tests := self class testFinder findTestsForMethod: aCompiledMethod
\ No newline at end of file
diff --git a/SmartTest.package/SmTRules.class/instance/isOnNautilusOrCalypso.st b/SmartTest.package/SmTRules.class/instance/isOnNautilusOrCalypso.st
deleted file mode 100644
index e95d88f..0000000
--- a/SmartTest.package/SmTRules.class/instance/isOnNautilusOrCalypso.st
+++ /dev/null
@@ -1,4 +0,0 @@
-testing
-isOnNautilusOrCalypso
-	"20 items means at least Nautilus"
-	^thisContext contextStack size < 30.
\ No newline at end of file
diff --git a/SmartTest.package/SmTRules.class/instance/isVisible.st b/SmartTest.package/SmTRules.class/instance/isVisible.st
deleted file mode 100644
index d343d46..0000000
--- a/SmartTest.package/SmTRules.class/instance/isVisible.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-isVisible
-	^ false
\ No newline at end of file
diff --git a/SmartTest.package/SmTRules.class/instance/severity.st b/SmartTest.package/SmTRules.class/instance/severity.st
deleted file mode 100644
index 77a1f44..0000000
--- a/SmartTest.package/SmTRules.class/instance/severity.st
+++ /dev/null
@@ -1,4 +0,0 @@
-accessing
-severity
-
-	^ #information
\ No newline at end of file
diff --git a/SmartTest.package/SmTRules.class/instance/tests.st b/SmartTest.package/SmTRules.class/instance/tests.st
deleted file mode 100644
index a473a35..0000000
--- a/SmartTest.package/SmTRules.class/instance/tests.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-tests
-	^ tests
\ No newline at end of file
diff --git a/SmartTest.package/SmTRules.class/properties.json b/SmartTest.package/SmTRules.class/properties.json
deleted file mode 100644
index 93adb5f..0000000
--- a/SmartTest.package/SmTRules.class/properties.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-	"commentStamp" : "BenoitVerhaeghe 7/13/2017 14:21",
-	"super" : "ReAbstractRule",
-	"category" : "SmartTest-Rules",
-	"classinstvars" : [
-		"shouldTryToFindTestForDynamic",
-		"activated",
-		"smTCache",
-		"smTClassTestingStrategy",
-		"smTFilter",
-		"smTFinder",
-		"smTTestRunner"
-	],
-	"pools" : [ ],
-	"classvars" : [
-		"Activated",
-		"SmTSmartFinder"
-	],
-	"instvars" : [
-		"tests"
-	],
-	"name" : "SmTRules",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTRunnerStrategy.class/README.md b/SmartTest.package/SmTRunnerStrategy.class/README.md
deleted file mode 100644
index 06f2095..0000000
--- a/SmartTest.package/SmTRunnerStrategy.class/README.md
+++ /dev/null
@@ -1 +0,0 @@
-I'm a tool which help the plugin to run tests and return the result of them
\ No newline at end of file
diff --git a/SmartTest.package/SmTRunnerStrategy.class/class/colorForTestResultOf..st b/SmartTest.package/SmTRunnerStrategy.class/class/colorForTestResultOf..st
deleted file mode 100644
index e1be221..0000000
--- a/SmartTest.package/SmTRunnerStrategy.class/class/colorForTestResultOf..st
+++ /dev/null
@@ -1,9 +0,0 @@
-accessing
-colorForTestResultOf: aTestResult
-	aTestResult hasErrors 
-		ifTrue: [ ^ Color red ].
-	aTestResult hasFailures 
-		ifTrue: [ ^ Color yellow].
-	aTestResult hasPassed
-		ifTrue: [ ^ Color green ].
-	^ Color gray
\ No newline at end of file
diff --git a/SmartTest.package/SmTRunnerStrategy.class/class/iconForTestFromTestCaseHistory..st b/SmartTest.package/SmTRunnerStrategy.class/class/iconForTestFromTestCaseHistory..st
deleted file mode 100644
index 08b9e26..0000000
--- a/SmartTest.package/SmTRunnerStrategy.class/class/iconForTestFromTestCaseHistory..st
+++ /dev/null
@@ -1,9 +0,0 @@
-accessing
-iconForTestFromTestCaseHistory: aTestCase
-	(aTestCase class methodRaisedError: aTestCase selector)
-		ifTrue: [ ^ #testRedIcon ].
-	(aTestCase class methodFailed: aTestCase selector)
-		ifTrue: [ ^ #testYellowIcon ].
-	(aTestCase class methodPassed: aTestCase selector)
-		ifTrue: [ ^ #testGreenIcon ].
-	^ #testNotRunIcon
\ No newline at end of file
diff --git a/SmartTest.package/SmTRunnerStrategy.class/class/iconForTestFromTestsCasesHistory..st b/SmartTest.package/SmTRunnerStrategy.class/class/iconForTestFromTestsCasesHistory..st
deleted file mode 100644
index 08e427d..0000000
--- a/SmartTest.package/SmTRunnerStrategy.class/class/iconForTestFromTestsCasesHistory..st
+++ /dev/null
@@ -1,15 +0,0 @@
-accessing
-iconForTestFromTestsCasesHistory: aCollectionOfTestCase
-	| iconType tempColor |
-	iconType := #testNotRunIcon.
-	aCollectionOfTestCase
-		do: [ :aTestCase | 
-			tempColor := self iconForTestFromTestCaseHistory: aTestCase.
-			(tempColor = #testNotRunIcon)
-				ifTrue: [ ^ #testNotRunIcon ].
-			(tempColor = #testRedIcon)
-				ifTrue: [ iconType := #testRedIcon ].
-			(iconType = #testRedIcon)
-				ifFalse: [ (tempColor = #testYellowIcon)
-						ifTrue: [ iconType := #testYellowIcon ] ifFalse: [ iconType := tempColor  ] ] ].
-				^ iconType 
\ No newline at end of file
diff --git a/SmartTest.package/SmTRunnerStrategy.class/class/iconForTestResultOf..st b/SmartTest.package/SmTRunnerStrategy.class/class/iconForTestResultOf..st
deleted file mode 100644
index 27f03fc..0000000
--- a/SmartTest.package/SmTRunnerStrategy.class/class/iconForTestResultOf..st
+++ /dev/null
@@ -1,9 +0,0 @@
-accessing
-iconForTestResultOf: aTestResult
-	aTestResult hasErrors 
-		ifTrue: [ ^ self iconNamed: #testRedIcon ].
-	aTestResult hasFailures 
-		ifTrue: [ ^ self iconNamed: #testYellowIcon ].
-	aTestResult hasPassed
-		ifTrue: [ ^ self iconNamed: #testGreenIcon ].
-	^ self iconNamed: #testNotRunIcon.
\ No newline at end of file
diff --git a/SmartTest.package/SmTRunnerStrategy.class/class/notifyTitle.contents..st b/SmartTest.package/SmTRunnerStrategy.class/class/notifyTitle.contents..st
deleted file mode 100644
index a3e37b5..0000000
--- a/SmartTest.package/SmTRunnerStrategy.class/class/notifyTitle.contents..st
+++ /dev/null
@@ -1,19 +0,0 @@
-action
-notifyTitle: title contents: aTestResult
-
-	 | contents |
-	contents := aTestResult tests size > 3
-		ifTrue: [ String streamContents: [ :aStream | 
-				aStream 
-					<< aTestResult tests size
-					<< ' tests in: '.
-				(aTestResult tests collect: #class as: Set) 
-					do: [ :eachClass | aStream << eachClass name ]
-					separatedBy: [ aStream << ', ' ] ] ]
-		ifFalse: [ aTestResult  ].
-
-	 GrowlMorph 
-		openWithLabel: title
-		contents: contents
-		backgroundColor: (self colorForTestResultOf: aTestResult )
-		labelColor: Color black
\ No newline at end of file
diff --git a/SmartTest.package/SmTRunnerStrategy.class/class/runCase.notifyIcon..st b/SmartTest.package/SmTRunnerStrategy.class/class/runCase.notifyIcon..st
deleted file mode 100644
index 9b31600..0000000
--- a/SmartTest.package/SmTRunnerStrategy.class/class/runCase.notifyIcon..st
+++ /dev/null
@@ -1,10 +0,0 @@
-action
-runCase: aTestMethod notifyIcon: anIcon
-	| aTestResult |
-	aTestResult := TestResult new.
-	[ aTestResult runCaseForDebug: aTestMethod ]
-		ensure: [ anIcon labelGraphic: (self iconForTestResultOf: aTestResult) ].
-	anIcon labelGraphic: (self iconForTestResultOf: aTestResult).
-	aTestResult updateResultsInHistory.
-	self notifyTitle: 'SmartTest Execution' contents: aTestResult.
-	^aTestResult.
\ No newline at end of file
diff --git a/SmartTest.package/SmTRunnerStrategy.class/class/runCases..st b/SmartTest.package/SmTRunnerStrategy.class/class/runCases..st
deleted file mode 100644
index d19e09c..0000000
--- a/SmartTest.package/SmTRunnerStrategy.class/class/runCases..st
+++ /dev/null
@@ -1,8 +0,0 @@
-action
-runCases: aTestCollection
-	| aTestResult |
-	aTestResult := TestResult new.
-	aTestCollection do: [ :aTest |aTestResult runCase: aTest ].
-	aTestResult updateResultsInHistory.
-	self notifyTitle: 'SmartTest Execution' contents: aTestResult.
-	^aTestResult
\ No newline at end of file
diff --git a/SmartTest.package/SmTRunnerStrategy.class/class/runCases.notifyIcon..st b/SmartTest.package/SmTRunnerStrategy.class/class/runCases.notifyIcon..st
deleted file mode 100644
index c03828d..0000000
--- a/SmartTest.package/SmTRunnerStrategy.class/class/runCases.notifyIcon..st
+++ /dev/null
@@ -1,6 +0,0 @@
-action
-runCases: aTestCollection notifyIcon: anIcon
-	| aTestResult |
-	aTestResult := self runCases: aTestCollection.
-	anIcon labelGraphic: (self iconForTestResultOf: aTestResult ) .
-	^aTestResult
\ No newline at end of file
diff --git a/SmartTest.package/SmTRunnerStrategy.class/properties.json b/SmartTest.package/SmTRunnerStrategy.class/properties.json
deleted file mode 100644
index 989708f..0000000
--- a/SmartTest.package/SmTRunnerStrategy.class/properties.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-	"commentStamp" : "BenoitVerhaeghe 6/28/2017 15:44",
-	"super" : "Object",
-	"category" : "SmartTest-Runner",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [ ],
-	"name" : "SmTRunnerStrategy",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTRunnerStrategyDebug.class/README.md b/SmartTest.package/SmTRunnerStrategyDebug.class/README.md
deleted file mode 100644
index af06d62..0000000
--- a/SmartTest.package/SmTRunnerStrategyDebug.class/README.md
+++ /dev/null
@@ -1 +0,0 @@
-When a test is run by CORA. If it failled, the debugger will open.
\ No newline at end of file
diff --git a/SmartTest.package/SmTRunnerStrategyDebug.class/class/runCases..st b/SmartTest.package/SmTRunnerStrategyDebug.class/class/runCases..st
deleted file mode 100644
index 3d79efc..0000000
--- a/SmartTest.package/SmTRunnerStrategyDebug.class/class/runCases..st
+++ /dev/null
@@ -1,8 +0,0 @@
-action
-runCases: aTestCollection
-	| aTestResult |
-	aTestResult := TestResult new.
-	aTestCollection do: [ :aTest |aTestResult runCaseForDebug: aTest ].
-	aTestResult updateResultsInHistory.
-	self notifyTitle: 'SmartTest Execution' contents: aTestResult.
-	^aTestResult 
\ No newline at end of file
diff --git a/SmartTest.package/SmTRunnerStrategyDebug.class/properties.json b/SmartTest.package/SmTRunnerStrategyDebug.class/properties.json
deleted file mode 100644
index 2a8af7a..0000000
--- a/SmartTest.package/SmTRunnerStrategyDebug.class/properties.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-	"commentStamp" : "BenoitVerhaeghe 7/13/2017 14:20",
-	"super" : "SmTRunnerStrategy",
-	"category" : "SmartTest-Runner",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [ ],
-	"name" : "SmTRunnerStrategyDebug",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTRunnerStrategyNotice.class/README.md b/SmartTest.package/SmTRunnerStrategyNotice.class/README.md
deleted file mode 100644
index 32f3aaa..0000000
--- a/SmartTest.package/SmTRunnerStrategyNotice.class/README.md
+++ /dev/null
@@ -1 +0,0 @@
-When a test is run by CORA. If it failled, nothing happen
\ No newline at end of file
diff --git a/SmartTest.package/SmTRunnerStrategyNotice.class/properties.json b/SmartTest.package/SmTRunnerStrategyNotice.class/properties.json
deleted file mode 100644
index 9b65280..0000000
--- a/SmartTest.package/SmTRunnerStrategyNotice.class/properties.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-	"commentStamp" : "BenoitVerhaeghe 7/13/2017 14:20",
-	"super" : "SmTRunnerStrategy",
-	"category" : "SmartTest-Runner",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [ ],
-	"name" : "SmTRunnerStrategyNotice",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTRunnerStrategySmart.class/README.md b/SmartTest.package/SmTRunnerStrategySmart.class/README.md
deleted file mode 100644
index d31f6db..0000000
--- a/SmartTest.package/SmTRunnerStrategySmart.class/README.md
+++ /dev/null
@@ -1 +0,0 @@
-When a test is run by CORA. If it failled and it was run from the test selection windows, the debugger will open. Nothing else
\ No newline at end of file
diff --git a/SmartTest.package/SmTRunnerStrategySmart.class/properties.json b/SmartTest.package/SmTRunnerStrategySmart.class/properties.json
deleted file mode 100644
index bb8c246..0000000
--- a/SmartTest.package/SmTRunnerStrategySmart.class/properties.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-	"commentStamp" : "BenoitVerhaeghe 7/13/2017 14:21",
-	"super" : "SmTRunnerStrategy",
-	"category" : "SmartTest-Runner",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [ ],
-	"name" : "SmTRunnerStrategySmart",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTRunnerTest.class/README.md b/SmartTest.package/SmTRunnerTest.class/README.md
deleted file mode 100644
index 33f22f9..0000000
--- a/SmartTest.package/SmTRunnerTest.class/README.md
+++ /dev/null
@@ -1 +0,0 @@
-I test the behavior of the runner
\ No newline at end of file
diff --git a/SmartTest.package/SmTRunnerTest.class/instance/noop.st b/SmartTest.package/SmTRunnerTest.class/instance/noop.st
deleted file mode 100644
index 222948f..0000000
--- a/SmartTest.package/SmTRunnerTest.class/instance/noop.st
+++ /dev/null
@@ -1,3 +0,0 @@
-private
-noop
-	
\ No newline at end of file
diff --git a/SmartTest.package/SmTRunnerTest.class/instance/setUp.st b/SmartTest.package/SmTRunnerTest.class/instance/setUp.st
deleted file mode 100644
index 6b316b8..0000000
--- a/SmartTest.package/SmTRunnerTest.class/instance/setUp.st
+++ /dev/null
@@ -1,3 +0,0 @@
-tests
-setUp
-	runner := SmTRunnerStrategySmart.
\ No newline at end of file
diff --git a/SmartTest.package/SmTRunnerTest.class/instance/testIconForTestResultGreen.st b/SmartTest.package/SmTRunnerTest.class/instance/testIconForTestResultGreen.st
deleted file mode 100644
index 5aef646..0000000
--- a/SmartTest.package/SmTRunnerTest.class/instance/testIconForTestResultGreen.st
+++ /dev/null
@@ -1,6 +0,0 @@
-tests
-testIconForTestResultGreen 
-	| case result  |
-	case := self class selector: #noop.
-	result := case run.
-	self assert: (runner iconForTestResultOf: result) equals: (self iconNamed: #testGreenIcon)
\ No newline at end of file
diff --git a/SmartTest.package/SmTRunnerTest.class/instance/testIconForTestResultRed.st b/SmartTest.package/SmTRunnerTest.class/instance/testIconForTestResultRed.st
deleted file mode 100644
index 40a2137..0000000
--- a/SmartTest.package/SmTRunnerTest.class/instance/testIconForTestResultRed.st
+++ /dev/null
@@ -1,7 +0,0 @@
-tests
-testIconForTestResultRed
-	| case result |
-	case := self class selector: #error.
-	result := case run.
-	self assert: (runner iconForTestResultOf: result) equals: (self iconNamed: #testRedIcon)
-	
\ No newline at end of file
diff --git a/SmartTest.package/SmTRunnerTest.class/instance/testIconForTestResultWhite.st b/SmartTest.package/SmTRunnerTest.class/instance/testIconForTestResultWhite.st
deleted file mode 100644
index b9f76b0..0000000
--- a/SmartTest.package/SmTRunnerTest.class/instance/testIconForTestResultWhite.st
+++ /dev/null
@@ -1,7 +0,0 @@
-tests
-testIconForTestResultWhite
-	| result | 
-	result := TestResult new.
-	self
-		assert: (runner iconForTestResultOf: result)
-		equals: (self iconNamed: #testGreenIcon)
\ No newline at end of file
diff --git a/SmartTest.package/SmTRunnerTest.class/instance/testIconForTestResultYellow.st b/SmartTest.package/SmTRunnerTest.class/instance/testIconForTestResultYellow.st
deleted file mode 100644
index 1835e13..0000000
--- a/SmartTest.package/SmTRunnerTest.class/instance/testIconForTestResultYellow.st
+++ /dev/null
@@ -1,8 +0,0 @@
-tests
-testIconForTestResultYellow
-	| case result |
-	case := self class selector: #fail.
-	result := case run.
-	self
-		assert: (runner iconForTestResultOf: result)
-		equals: (self iconNamed: #testYellowIcon)
\ No newline at end of file
diff --git a/SmartTest.package/SmTRunnerTest.class/instance/testRunCaseNotifyIconGreen.st b/SmartTest.package/SmTRunnerTest.class/instance/testRunCaseNotifyIconGreen.st
deleted file mode 100644
index d143b27..0000000
--- a/SmartTest.package/SmTRunnerTest.class/instance/testRunCaseNotifyIconGreen.st
+++ /dev/null
@@ -1,10 +0,0 @@
-tests
-testRunCaseNotifyIconGreen
-	| case result anIcon |
-	case := self class selector: #noop. 
-	anIcon := IconicButton new. 
-	result := runner runCase: case notifyIcon: anIcon.
-	self assert: result passed size equals: 1.
-	self assert: result errors size equals: 0.
-	self assert: result failures size equals: 0.
-	self assert: anIcon labelGraphic equals: #testGreenIcon asIcon
\ No newline at end of file
diff --git a/SmartTest.package/SmTRunnerTest.class/instance/testRunCaseNotifyIconRed.st b/SmartTest.package/SmTRunnerTest.class/instance/testRunCaseNotifyIconRed.st
deleted file mode 100644
index 3c16bfa..0000000
--- a/SmartTest.package/SmTRunnerTest.class/instance/testRunCaseNotifyIconRed.st
+++ /dev/null
@@ -1,7 +0,0 @@
-tests
-testRunCaseNotifyIconRed
-	| case anIcon |
-	case := self class selector: #error.
-	anIcon := IconicButton new.
-	self should: [runner runCase: case notifyIcon: anIcon] raise: Error .
-	self assert: anIcon labelGraphic equals: (self iconNamed: #testRedIcon)
\ No newline at end of file
diff --git a/SmartTest.package/SmTRunnerTest.class/instance/testRunCaseNotifyIconYellow.st b/SmartTest.package/SmTRunnerTest.class/instance/testRunCaseNotifyIconYellow.st
deleted file mode 100644
index 3355e1c..0000000
--- a/SmartTest.package/SmTRunnerTest.class/instance/testRunCaseNotifyIconYellow.st
+++ /dev/null
@@ -1,7 +0,0 @@
-tests
-testRunCaseNotifyIconYellow
-	| case anIcon |
-	case := self class selector: #fail.
-	anIcon := IconicButton new.
-	self should: [runner runCase: case notifyIcon: anIcon] raise: TestFailure.
-	self assert: anIcon labelGraphic equals: (self iconNamed: #testYellowIcon)
\ No newline at end of file
diff --git a/SmartTest.package/SmTRunnerTest.class/instance/testRunCasesNotifyIconGreen.st b/SmartTest.package/SmTRunnerTest.class/instance/testRunCasesNotifyIconGreen.st
deleted file mode 100644
index cc1832c..0000000
--- a/SmartTest.package/SmTRunnerTest.class/instance/testRunCasesNotifyIconGreen.st
+++ /dev/null
@@ -1,12 +0,0 @@
-tests
-testRunCasesNotifyIconGreen
-	| case1 case2 case3 anIcon result |
-	case1 := self class selector: #noop.
-	case2 := self class selector: #noop.
-	case3 := self class selector: #noop.
-	anIcon := IconicButton new.
-	result := runner runCases: {case1.case2.case3} notifyIcon: anIcon.
-	self assert: result passed size equals: 3.
-	self assert: result errors size equals: 0.
-	self assert: result failures size equals: 0.
-	self assert: anIcon labelGraphic equals: (self iconNamed: #testGreenIcon)
\ No newline at end of file
diff --git a/SmartTest.package/SmTRunnerTest.class/instance/testRunCasesNotifyIconRed.st b/SmartTest.package/SmTRunnerTest.class/instance/testRunCasesNotifyIconRed.st
deleted file mode 100644
index 13d8e48..0000000
--- a/SmartTest.package/SmTRunnerTest.class/instance/testRunCasesNotifyIconRed.st
+++ /dev/null
@@ -1,9 +0,0 @@
-tests
-testRunCasesNotifyIconRed
-	| case1 case2 case3 anIcon |
-	case1 := self class selector: #error.
-	case2 := self class selector: #fail.
-	case3 := self class selector: #error.
-	anIcon := IconicButton new.
-	runner runCases: {case1.case2.case3} notifyIcon: anIcon.
-	self assert: anIcon labelGraphic equals: (self iconNamed: #testRedIcon)
\ No newline at end of file
diff --git a/SmartTest.package/SmTRunnerTest.class/instance/testRunCasesNotifyIconYellow.st b/SmartTest.package/SmTRunnerTest.class/instance/testRunCasesNotifyIconYellow.st
deleted file mode 100644
index 1b3187f..0000000
--- a/SmartTest.package/SmTRunnerTest.class/instance/testRunCasesNotifyIconYellow.st
+++ /dev/null
@@ -1,9 +0,0 @@
-tests
-testRunCasesNotifyIconYellow
-	| case1 case2 case3 anIcon |
-	case1 := self class selector: #noop.
-	case2 := self class selector: #fail.
-	case3 := self class selector: #noop.
-	anIcon := IconicButton new.
-	runner runCases: {case1.case2.case3} notifyIcon: anIcon.
-	self assert: anIcon labelGraphic equals: (self iconNamed: #testYellowIcon)
\ No newline at end of file
diff --git a/SmartTest.package/SmTRunnerTest.class/properties.json b/SmartTest.package/SmTRunnerTest.class/properties.json
deleted file mode 100644
index 02ef695..0000000
--- a/SmartTest.package/SmTRunnerTest.class/properties.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-	"commentStamp" : "BenoitVerhaeghe 6/30/2017 14:48",
-	"super" : "TestCase",
-	"category" : "SmartTest-Tests",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [
-		"runner"
-	],
-	"name" : "SmTRunnerTest",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTSelectPackageBrowser.class/README.md b/SmartTest.package/SmTSelectPackageBrowser.class/README.md
deleted file mode 100644
index e69de29..0000000
diff --git a/SmartTest.package/SmTSelectPackageBrowser.class/class/openWithSmartFinder..st b/SmartTest.package/SmTSelectPackageBrowser.class/class/openWithSmartFinder..st
deleted file mode 100644
index b027377..0000000
--- a/SmartTest.package/SmTSelectPackageBrowser.class/class/openWithSmartFinder..st
+++ /dev/null
@@ -1,6 +0,0 @@
-as yet unclassified
-openWithSmartFinder: aSmartFinder
-	self new
-		smartFinder: aSmartFinder;
-		items: RPackageOrganizer default packages;
-		openWithSpec
\ No newline at end of file
diff --git a/SmartTest.package/SmTSelectPackageBrowser.class/instance/addAllItems.st b/SmartTest.package/SmTSelectPackageBrowser.class/instance/addAllItems.st
deleted file mode 100644
index d442fcb..0000000
--- a/SmartTest.package/SmTSelectPackageBrowser.class/instance/addAllItems.st
+++ /dev/null
@@ -1,8 +0,0 @@
-api
-addAllItems
-	| tmp |
-	tmp := self sort: selectedModel listItems withAll: toSelectModel listItems.
-	selectedModel items: tmp.
-	toSelectModel items: #().
-	toSelectModel updateList.
-	selectedModel updateList
\ No newline at end of file
diff --git a/SmartTest.package/SmTSelectPackageBrowser.class/instance/addItems.st b/SmartTest.package/SmTSelectPackageBrowser.class/instance/addItems.st
deleted file mode 100644
index 9130793..0000000
--- a/SmartTest.package/SmTSelectPackageBrowser.class/instance/addItems.st
+++ /dev/null
@@ -1,8 +0,0 @@
-accessing
-addItems
-	toSelectModel selectedItems
-		ifNotNil: [ :items | 
-			selectedModel items: (self sort: selectedModel listItems withAll: items).
-			toSelectModel items: (self sort: toSelectModel listItems withoutAll: items) ].
-	toSelectModel updateList.
-	selectedModel updateList
\ No newline at end of file
diff --git a/SmartTest.package/SmTSelectPackageBrowser.class/instance/createTestSuiteFrom..st b/SmartTest.package/SmTSelectPackageBrowser.class/instance/createTestSuiteFrom..st
deleted file mode 100644
index e000a0f..0000000
--- a/SmartTest.package/SmTSelectPackageBrowser.class/instance/createTestSuiteFrom..st
+++ /dev/null
@@ -1,6 +0,0 @@
-api
-createTestSuiteFrom: listItem
-	| testSuite |
-	testSuite := TestSuite new.
-	testSuite addTests: ((listItem flatCollect: #methods) select: #isTestMethod thenCollect: #asTestCase).
-	^ testSuite
\ No newline at end of file
diff --git a/SmartTest.package/SmTSelectPackageBrowser.class/instance/initialize.st b/SmartTest.package/SmTSelectPackageBrowser.class/instance/initialize.st
deleted file mode 100644
index f9cc3f2..0000000
--- a/SmartTest.package/SmTSelectPackageBrowser.class/instance/initialize.st
+++ /dev/null
@@ -1,13 +0,0 @@
-initialization
-initialize
-	| wrappingBlock testPackage |
-	super initialize.
-	toSelectModel := self instantiate: ListPresenter.
-	selectedModel := self instantiate: ListPresenter.
-	selectedModel beMultipleSelection.
-	toSelectModel beMultipleSelection.
-	wrappingBlock := [ :package | package packageName ].
-	toSelectModel displayBlock: wrappingBlock.
-	selectedModel displayBlock: wrappingBlock.
-	testPackage := MCWorkingCopy allManagers reject: [ :package | '*Test*' match:  package packageName ].
-	toSelectModel items: (self sort: (toSelectModel  listItems \ testPackage))
\ No newline at end of file
diff --git a/SmartTest.package/SmTSelectPackageBrowser.class/instance/nextAction.st b/SmartTest.package/SmTSelectPackageBrowser.class/instance/nextAction.st
deleted file mode 100644
index 8f8278d..0000000
--- a/SmartTest.package/SmTSelectPackageBrowser.class/instance/nextAction.st
+++ /dev/null
@@ -1,9 +0,0 @@
-api
-nextAction
-	| past testSuite |
-	testSuite := self createTestSuiteFrom: selectedModel listItems.
-	past := smartFinder smtFinder.
-	smartFinder smtFinder: SmTReflectivityTestFinderStrategy new.
-	smartFinder buildCacheFromTestSuite: testSuite.
-	smartFinder smtFinder: past.
-	self delete
\ No newline at end of file
diff --git a/SmartTest.package/SmTSelectPackageBrowser.class/instance/removeAllItems.st b/SmartTest.package/SmTSelectPackageBrowser.class/instance/removeAllItems.st
deleted file mode 100644
index b063120..0000000
--- a/SmartTest.package/SmTSelectPackageBrowser.class/instance/removeAllItems.st
+++ /dev/null
@@ -1,8 +0,0 @@
-accessing
-removeAllItems
-	| tmp |
-	tmp := self sort: toSelectModel listItems withAll: selectedModel listItems.
-	toSelectModel items: tmp.
-	selectedModel items: #().
-	toSelectModel updateList.
-	selectedModel updateList
\ No newline at end of file
diff --git a/SmartTest.package/SmTSelectPackageBrowser.class/instance/removeItems.st b/SmartTest.package/SmTSelectPackageBrowser.class/instance/removeItems.st
deleted file mode 100644
index 98920fc..0000000
--- a/SmartTest.package/SmTSelectPackageBrowser.class/instance/removeItems.st
+++ /dev/null
@@ -1,8 +0,0 @@
-accessing
-removeItems
-	selectedModel selectedItems
-		ifNotNil: [ :items | 
-			toSelectModel items: (self sort: toSelectModel listItems withAll: items).
-			selectedModel items: (self sort: selectedModel listItems withoutAll: items) ].
-	toSelectModel updateList.
-	selectedModel updateList
\ No newline at end of file
diff --git a/SmartTest.package/SmTSelectPackageBrowser.class/instance/smartFinder..st b/SmartTest.package/SmTSelectPackageBrowser.class/instance/smartFinder..st
deleted file mode 100644
index 344b9d2..0000000
--- a/SmartTest.package/SmTSelectPackageBrowser.class/instance/smartFinder..st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-smartFinder: anObject
-	smartFinder := anObject
\ No newline at end of file
diff --git a/SmartTest.package/SmTSelectPackageBrowser.class/instance/smartFinder.st b/SmartTest.package/SmTSelectPackageBrowser.class/instance/smartFinder.st
deleted file mode 100644
index c5302f3..0000000
--- a/SmartTest.package/SmTSelectPackageBrowser.class/instance/smartFinder.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-smartFinder
-	^ smartFinder
\ No newline at end of file
diff --git a/SmartTest.package/SmTSelectPackageBrowser.class/instance/sort..st b/SmartTest.package/SmTSelectPackageBrowser.class/instance/sort..st
deleted file mode 100644
index 1208739..0000000
--- a/SmartTest.package/SmTSelectPackageBrowser.class/instance/sort..st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-sort: aCollection
-	^ aCollection asOrderedCollection sort: [:e1 :e2 | (e1 asString) < (e2 asString)].
\ No newline at end of file
diff --git a/SmartTest.package/SmTSelectPackageBrowser.class/instance/sort.withAll..st b/SmartTest.package/SmTSelectPackageBrowser.class/instance/sort.withAll..st
deleted file mode 100644
index 6690419..0000000
--- a/SmartTest.package/SmTSelectPackageBrowser.class/instance/sort.withAll..st
+++ /dev/null
@@ -1,7 +0,0 @@
-accessing
-sort: aCollection withAll: anotherCollection
-	^ self
-		sort:
-			(aCollection asOrderedCollection
-				addAll: anotherCollection;
-				yourself)
\ No newline at end of file
diff --git a/SmartTest.package/SmTSelectPackageBrowser.class/instance/sort.withoutAll..st b/SmartTest.package/SmTSelectPackageBrowser.class/instance/sort.withoutAll..st
deleted file mode 100644
index 560a365..0000000
--- a/SmartTest.package/SmTSelectPackageBrowser.class/instance/sort.withoutAll..st
+++ /dev/null
@@ -1,7 +0,0 @@
-accessing
-sort: aCollection withoutAll: anotherCollection
-	^ self
-		sort:
-			(aCollection asOrderedCollection
-				removeAll: anotherCollection;
-				yourself)
\ No newline at end of file
diff --git a/SmartTest.package/SmTSelectPackageBrowser.class/properties.json b/SmartTest.package/SmTSelectPackageBrowser.class/properties.json
deleted file mode 100644
index 6565fd6..0000000
--- a/SmartTest.package/SmTSelectPackageBrowser.class/properties.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-	"commentStamp" : "",
-	"super" : "SelectBrowser",
-	"category" : "SmartTest-Tools",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [
-		"smartFinder"
-	],
-	"name" : "SmTSelectPackageBrowser",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTSenderTestFinderStrategy.class/README.md b/SmartTest.package/SmTSenderTestFinderStrategy.class/README.md
deleted file mode 100644
index e673479..0000000
--- a/SmartTest.package/SmTSenderTestFinderStrategy.class/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-I work as ChangeImpact.
-I'm looking for sender of sender etc.
-I'm not well tested, but I'm fast and can help you for quick testing.
\ No newline at end of file
diff --git a/SmartTest.package/SmTSenderTestFinderStrategy.class/class/isConcreteFinder.st b/SmartTest.package/SmTSenderTestFinderStrategy.class/class/isConcreteFinder.st
deleted file mode 100644
index 37fb41d..0000000
--- a/SmartTest.package/SmTSenderTestFinderStrategy.class/class/isConcreteFinder.st
+++ /dev/null
@@ -1,3 +0,0 @@
-testing
-isConcreteFinder
-	^ true
\ No newline at end of file
diff --git a/SmartTest.package/SmTSenderTestFinderStrategy.class/instance/collectSenderOfRGMethodeDefintion..st b/SmartTest.package/SmTSenderTestFinderStrategy.class/instance/collectSenderOfRGMethodeDefintion..st
deleted file mode 100644
index c9067f8..0000000
--- a/SmartTest.package/SmTSenderTestFinderStrategy.class/instance/collectSenderOfRGMethodeDefintion..st
+++ /dev/null
@@ -1,6 +0,0 @@
-private - search
-collectSenderOfRGMethodeDefintion: aRGMethodDefinition
-	^ aRGMethodDefinition isInitializer
-		ifTrue: [ { SystemNavigation default allReferencesTo: aRGMethodDefinition methodClass binding.
-			aRGMethodDefinition senders} asSet flattened  ]
-		ifFalse: [ aRGMethodDefinition senders ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTSenderTestFinderStrategy.class/instance/recursiveSearchForAStandardMethod.withFilter.foundMethods..st b/SmartTest.package/SmTSenderTestFinderStrategy.class/instance/recursiveSearchForAStandardMethod.withFilter.foundMethods..st
deleted file mode 100644
index 39aab00..0000000
--- a/SmartTest.package/SmTSenderTestFinderStrategy.class/instance/recursiveSearchForAStandardMethod.withFilter.foundMethods..st
+++ /dev/null
@@ -1,7 +0,0 @@
-private - search
-recursiveSearchForAStandardMethod: aRGMethodDefinition withFilter: aFilter foundMethods: aCollection
-	(self collectSenderOfRGMethodeDefintion: 	aRGMethodDefinition)
-		reject: [ :aSenderMethod | (aFilter shouldEntityBeFiltered: aSenderMethod) or: [ aCollection includes: aSenderMethod ] ]
-		thenDo: [ :aSenderRGMethodDefinition | 
-			aCollection add: aSenderRGMethodDefinition.
-			self recursiveSearchForAStandardMethod: aSenderRGMethodDefinition withFilter: aFilter foundMethods: aCollection ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTSenderTestFinderStrategy.class/instance/testsForAStandardMethod..st b/SmartTest.package/SmTSenderTestFinderStrategy.class/instance/testsForAStandardMethod..st
deleted file mode 100644
index 8d0360f..0000000
--- a/SmartTest.package/SmTSenderTestFinderStrategy.class/instance/testsForAStandardMethod..st
+++ /dev/null
@@ -1,7 +0,0 @@
-API
-testsForAStandardMethod: aCompiledMethod
-	| dependencies |
-	filter := self filter extractPackagesFrom: {aCompiledMethod}.
-	dependencies := Set new.
-	self recursiveSearchForAStandardMethod: aCompiledMethod methodReference withFilter: filter foundMethods: dependencies.
-	^ dependencies select: #isTestMethod
\ No newline at end of file
diff --git a/SmartTest.package/SmTSenderTestFinderStrategy.class/properties.json b/SmartTest.package/SmTSenderTestFinderStrategy.class/properties.json
deleted file mode 100644
index 5a65ea6..0000000
--- a/SmartTest.package/SmTSenderTestFinderStrategy.class/properties.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-	"commentStamp" : "BenoitVerhaeghe 7/13/2017 14:22",
-	"super" : "SmTTestFinderStrategy",
-	"category" : "SmartTest-Finder",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [ ],
-	"name" : "SmTSenderTestFinderStrategy",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTSendersFinderTest.class/README.md b/SmartTest.package/SmTSendersFinderTest.class/README.md
deleted file mode 100644
index e69de29..0000000
diff --git a/SmartTest.package/SmTSendersFinderTest.class/instance/setUp.st b/SmartTest.package/SmTSendersFinderTest.class/instance/setUp.st
deleted file mode 100644
index 5000521..0000000
--- a/SmartTest.package/SmTSendersFinderTest.class/instance/setUp.st
+++ /dev/null
@@ -1,4 +0,0 @@
-initialization
-setUp
-	super setUp.
-	smartFinder resetCache.
\ No newline at end of file
diff --git a/SmartTest.package/SmTSendersFinderTest.class/instance/testStandardMethodSecondLevelSenders.st b/SmartTest.package/SmTSendersFinderTest.class/instance/testStandardMethodSecondLevelSenders.st
deleted file mode 100644
index 3039fef..0000000
--- a/SmartTest.package/SmTSendersFinderTest.class/instance/testStandardMethodSecondLevelSenders.st
+++ /dev/null
@@ -1,10 +0,0 @@
-initialization
-testStandardMethodSecondLevelSenders
-	<CORATestBlacklisted>
-	| testsFound |
-	testsFound := self searchTestMethodsFor: SmTClass >> #method1.
-	
-	self assert: (testsFound includes: testMethod1).
-	self assert: (testsFound includes: testMethod2).
-	self deny: (testsFound includes: testMethod3).
-	self deny: (testsFound includes: testMethod4).
\ No newline at end of file
diff --git a/SmartTest.package/SmTSendersFinderTest.class/properties.json b/SmartTest.package/SmTSendersFinderTest.class/properties.json
deleted file mode 100644
index 055b0ad..0000000
--- a/SmartTest.package/SmTSendersFinderTest.class/properties.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-	"commentStamp" : "",
-	"super" : "SmTFinderAbstractTest",
-	"category" : "SmartTest-Tests",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [ ],
-	"name" : "SmTSendersFinderTest",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTSendersFinderTestWithRestrictedPackage.class/README.md b/SmartTest.package/SmTSendersFinderTestWithRestrictedPackage.class/README.md
deleted file mode 100644
index 0aba988..0000000
--- a/SmartTest.package/SmTSendersFinderTestWithRestrictedPackage.class/README.md
+++ /dev/null
@@ -1 +0,0 @@
-In class, the research is limited to the SmartTest-Tests-Data package andthe research  is static.
\ No newline at end of file
diff --git a/SmartTest.package/SmTSendersFinderTestWithRestrictedPackage.class/instance/setUp.st b/SmartTest.package/SmTSendersFinderTestWithRestrictedPackage.class/instance/setUp.st
deleted file mode 100644
index 822d4a5..0000000
--- a/SmartTest.package/SmTSendersFinderTestWithRestrictedPackage.class/instance/setUp.st
+++ /dev/null
@@ -1,4 +0,0 @@
-initialization
-setUp
-	super setUp.
-	smartFinder filter: (SmTSpecifyPackageNameFilter packagesRegEx: 'SmartTest-Tests-Data') new
\ No newline at end of file
diff --git a/SmartTest.package/SmTSendersFinderTestWithRestrictedPackage.class/instance/testModificationOnInitialize.st b/SmartTest.package/SmTSendersFinderTestWithRestrictedPackage.class/instance/testModificationOnInitialize.st
deleted file mode 100644
index 33d1560..0000000
--- a/SmartTest.package/SmTSendersFinderTestWithRestrictedPackage.class/instance/testModificationOnInitialize.st
+++ /dev/null
@@ -1,11 +0,0 @@
-initialization
-testModificationOnInitialize
-	<CORATestBlacklisted>
-	| testsFound |
-	testsFound := self searchTestMethodsFor: SmTClass2 >> #initialize.
-
-	self deny: (testsFound includes: testMethod1).
-	self deny: (testsFound includes: testMethod2).
-	self deny: (testsFound includes: testMethod3).
-	self deny: (testsFound includes: testMethod4).
-	self assert: (testsFound includes: testMethod5).
\ No newline at end of file
diff --git a/SmartTest.package/SmTSendersFinderTestWithRestrictedPackage.class/instance/testStandardMethodFirstLevelSenders.st b/SmartTest.package/SmTSendersFinderTestWithRestrictedPackage.class/instance/testStandardMethodFirstLevelSenders.st
deleted file mode 100644
index 9610085..0000000
--- a/SmartTest.package/SmTSendersFinderTestWithRestrictedPackage.class/instance/testStandardMethodFirstLevelSenders.st
+++ /dev/null
@@ -1,12 +0,0 @@
-initialization
-testStandardMethodFirstLevelSenders
-	"In class, the research is limited to the SmartTest-Tests-Data package and is static. So the assertions are different. There should be only one test found that call the method2 message"
-
-	<CORATestBlacklisted>
-	| testsFound |
-	testsFound := self searchTestMethodsFor: SmTClass >> #method2.
-	self assert: testsFound size equals: 1.
-	self assert: testsFound equals: {(RGMethodDefinition className: 'SmTClassTest' selector: #testMethod2 isMetaSide: false)} asSet.
-	self deny: (testsFound includes: (RGMethodDefinition className: 'SmTClassTest' selector: #testMethod1 isMetaSide: false)).
-	self deny: (testsFound includes: (RGMethodDefinition className: 'SmTClassTest' selector: #testMethod3 isMetaSide: false)).
-	self deny: (testsFound includes: (RGMethodDefinition className: 'SmTClassTest' selector: #testMethod4 isMetaSide: false))
\ No newline at end of file
diff --git a/SmartTest.package/SmTSendersFinderTestWithRestrictedPackage.class/instance/testStandardMethodSecondLevelSenders.st b/SmartTest.package/SmTSendersFinderTestWithRestrictedPackage.class/instance/testStandardMethodSecondLevelSenders.st
deleted file mode 100644
index eccf737..0000000
--- a/SmartTest.package/SmTSendersFinderTestWithRestrictedPackage.class/instance/testStandardMethodSecondLevelSenders.st
+++ /dev/null
@@ -1,13 +0,0 @@
-initialization
-testStandardMethodSecondLevelSenders
-	"In class, the research is limited to the SmartTest-Tests-Data package and is static. So the assertions are different. There should be only one test found that call the method2 message"
-
-	<CORATestBlacklisted>
-	| testsFound |
-	testsFound := self searchTestMethodsFor: SmTClass >> #method1.
-	self assert: testsFound size equals: 3.
-	self assert: (testsFound includes: testMethod1).
-	self assert: (testsFound includes: testMethod2).
-	self assert: (testsFound includes: testInheritedMethod1).
-	self deny: (testsFound includes: testMethod3).
-	self deny: (testsFound includes: testMethod4)
\ No newline at end of file
diff --git a/SmartTest.package/SmTSendersFinderTestWithRestrictedPackage.class/instance/testStandardMethodThirdLevelSenders.st b/SmartTest.package/SmTSendersFinderTestWithRestrictedPackage.class/instance/testStandardMethodThirdLevelSenders.st
deleted file mode 100644
index a22bcb6..0000000
--- a/SmartTest.package/SmTSendersFinderTestWithRestrictedPackage.class/instance/testStandardMethodThirdLevelSenders.st
+++ /dev/null
@@ -1,10 +0,0 @@
-initialization
-testStandardMethodThirdLevelSenders
-	<CORATestBlacklisted>
-	| testsFound | 
-	testsFound := self searchTestMethodsFor: SmTClass >> #method4.
-	self assert: testsFound size equals: 3.
-	self deny: (testsFound includes: (RGMethodDefinition className: 'SmTClassTest'  selector: #testMethod1 isMetaSide: false )).
-	self assert: (testsFound includes: (RGMethodDefinition className: 'SmTClassTest'  selector: #testMethod2 isMetaSide: false )).
-	self assert: (testsFound includes: (RGMethodDefinition className: 'SmTClassTest'  selector: #testMethod3 isMetaSide: false )).
-	self assert: (testsFound includes: (RGMethodDefinition className: 'SmTClassTest'  selector: #testMethod4 isMetaSide: false )).
\ No newline at end of file
diff --git a/SmartTest.package/SmTSendersFinderTestWithRestrictedPackage.class/properties.json b/SmartTest.package/SmTSendersFinderTestWithRestrictedPackage.class/properties.json
deleted file mode 100644
index 1550a26..0000000
--- a/SmartTest.package/SmTSendersFinderTestWithRestrictedPackage.class/properties.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-	"commentStamp" : "AnneEtien 3/2/2018 14:02",
-	"super" : "SmTFinderAbstractTest",
-	"category" : "SmartTest-Tests",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [ ],
-	"name" : "SmTSendersFinderTestWithRestrictedPackage",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTSendersFinderTestWithoutCache.class/README.md b/SmartTest.package/SmTSendersFinderTestWithoutCache.class/README.md
deleted file mode 100644
index e69de29..0000000
diff --git a/SmartTest.package/SmTSendersFinderTestWithoutCache.class/instance/setUp.st b/SmartTest.package/SmTSendersFinderTestWithoutCache.class/instance/setUp.st
deleted file mode 100644
index 82d485e..0000000
--- a/SmartTest.package/SmTSendersFinderTestWithoutCache.class/instance/setUp.st
+++ /dev/null
@@ -1,5 +0,0 @@
-initialization
-setUp
-	super setUp.
-	smartFinder cacheClass: SmTNoCacheStrategy new.
-	cache := SmTNoCacheStrategy new
\ No newline at end of file
diff --git a/SmartTest.package/SmTSendersFinderTestWithoutCache.class/instance/tearDown.st b/SmartTest.package/SmTSendersFinderTestWithoutCache.class/instance/tearDown.st
deleted file mode 100644
index 9d91f52..0000000
--- a/SmartTest.package/SmTSendersFinderTestWithoutCache.class/instance/tearDown.st
+++ /dev/null
@@ -1,4 +0,0 @@
-initialization
-tearDown
-	super tearDown.
-	smartFinder resetCache
\ No newline at end of file
diff --git a/SmartTest.package/SmTSendersFinderTestWithoutCache.class/properties.json b/SmartTest.package/SmTSendersFinderTestWithoutCache.class/properties.json
deleted file mode 100644
index 6b5cd8f..0000000
--- a/SmartTest.package/SmTSendersFinderTestWithoutCache.class/properties.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-	"commentStamp" : "",
-	"super" : "SmTFinderAbstractTest",
-	"category" : "SmartTest-Tests",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [ ],
-	"name" : "SmTSendersFinderTestWithoutCache",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTSpecifyPackageNameFilter.class/README.md b/SmartTest.package/SmTSpecifyPackageNameFilter.class/README.md
deleted file mode 100644
index e69de29..0000000
diff --git a/SmartTest.package/SmTSpecifyPackageNameFilter.class/class/packagesRegEx..st b/SmartTest.package/SmTSpecifyPackageNameFilter.class/class/packagesRegEx..st
deleted file mode 100644
index 5e5af8c..0000000
--- a/SmartTest.package/SmTSpecifyPackageNameFilter.class/class/packagesRegEx..st
+++ /dev/null
@@ -1,3 +0,0 @@
-settings-definition
-packagesRegEx: aRegexStringCollection
-	collectionOfRegex := aRegexStringCollection
\ No newline at end of file
diff --git a/SmartTest.package/SmTSpecifyPackageNameFilter.class/class/packagesRegEx.st b/SmartTest.package/SmTSpecifyPackageNameFilter.class/class/packagesRegEx.st
deleted file mode 100644
index a0b12d7..0000000
--- a/SmartTest.package/SmTSpecifyPackageNameFilter.class/class/packagesRegEx.st
+++ /dev/null
@@ -1,3 +0,0 @@
-settings-definition
-packagesRegEx
-	^ collectionOfRegex ifNil: [ collectionOfRegex := '' ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTSpecifyPackageNameFilter.class/class/selectedPackage.st b/SmartTest.package/SmTSpecifyPackageNameFilter.class/class/selectedPackage.st
deleted file mode 100644
index 5537c4f..0000000
--- a/SmartTest.package/SmTSpecifyPackageNameFilter.class/class/selectedPackage.st
+++ /dev/null
@@ -1,8 +0,0 @@
-accessing
-selectedPackage
-	^ ((self packagesRegEx substrings: ',')
-		flatCollect: [ :packageRegex | 
-			RPackageOrganizer default packages
-				flatCollect: [ :package | 
-					package classTags 
-						select: [ :classTag |packageRegex match: classTag categoryName ] thenCollect: #categoryName ] ]) asSet
\ No newline at end of file
diff --git a/SmartTest.package/SmTSpecifyPackageNameFilter.class/class/settingsOn..st b/SmartTest.package/SmTSpecifyPackageNameFilter.class/class/settingsOn..st
deleted file mode 100644
index 19ce2d7..0000000
--- a/SmartTest.package/SmTSpecifyPackageNameFilter.class/class/settingsOn..st
+++ /dev/null
@@ -1,14 +0,0 @@
-settings
-settingsOn: aBuilder
-	<systemsettings>
-	(aBuilder setting: #packagesRegEx)
-		label: 'SmartTest filter RegEx configuration';
-		target: self;
-		parent: #SmTFilter;
-		ghostHelp: 'SmartTe,Start*Wars';
-		notInStyle;
-		default: '';
-		description:
-			'Change the value to scope the package you want to explore.
-If you want to check the packages are well detected,run 
-	SmTFilterSpecifyPackageSettings selectedPackage'
\ No newline at end of file
diff --git a/SmartTest.package/SmTSpecifyPackageNameFilter.class/instance/packages.st b/SmartTest.package/SmTSpecifyPackageNameFilter.class/instance/packages.st
deleted file mode 100644
index 98cf0a4..0000000
--- a/SmartTest.package/SmTSpecifyPackageNameFilter.class/instance/packages.st
+++ /dev/null
@@ -1,5 +0,0 @@
-accessing
-packages
-	"Return the collection of package that was find from the settings"
-
-	^ self class selectedPackage
\ No newline at end of file
diff --git a/SmartTest.package/SmTSpecifyPackageNameFilter.class/instance/shouldEntityBeFiltered..st b/SmartTest.package/SmTSpecifyPackageNameFilter.class/instance/shouldEntityBeFiltered..st
deleted file mode 100644
index 2f8052a..0000000
--- a/SmartTest.package/SmTSpecifyPackageNameFilter.class/instance/shouldEntityBeFiltered..st
+++ /dev/null
@@ -1,4 +0,0 @@
-accessing
-shouldEntityBeFiltered: anEntity
- "(anEntity methodClass allCallsOn collect: #ciPackage) not."
-	^ (self packages includes: anEntity methodClass category) not
\ No newline at end of file
diff --git a/SmartTest.package/SmTSpecifyPackageNameFilter.class/properties.json b/SmartTest.package/SmTSpecifyPackageNameFilter.class/properties.json
deleted file mode 100644
index 193780f..0000000
--- a/SmartTest.package/SmTSpecifyPackageNameFilter.class/properties.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-	"commentStamp" : "",
-	"super" : "SmTDefaultPackagesFilter",
-	"category" : "SmartTest-Filter",
-	"classinstvars" : [
-		"collectionOfRegex"
-	],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [ ],
-	"name" : "SmTSpecifyPackageNameFilter",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTSuperClassTest.class/README.md b/SmartTest.package/SmTSuperClassTest.class/README.md
deleted file mode 100644
index e69de29..0000000
diff --git a/SmartTest.package/SmTSuperClassTest.class/class/isAbstract.st b/SmartTest.package/SmTSuperClassTest.class/class/isAbstract.st
deleted file mode 100644
index 2abee4c..0000000
--- a/SmartTest.package/SmTSuperClassTest.class/class/isAbstract.st
+++ /dev/null
@@ -1,4 +0,0 @@
-testing
-isAbstract
-
-	^ self  == SmTSuperClassTest 
\ No newline at end of file
diff --git a/SmartTest.package/SmTSuperClassTest.class/instance/testMethod1.st b/SmartTest.package/SmTSuperClassTest.class/instance/testMethod1.st
deleted file mode 100644
index 75af50c..0000000
--- a/SmartTest.package/SmTSuperClassTest.class/instance/testMethod1.st
+++ /dev/null
@@ -1,4 +0,0 @@
-tests
-testMethod1
-	^ smTtestClass method1
-	
\ No newline at end of file
diff --git a/SmartTest.package/SmTSuperClassTest.class/properties.json b/SmartTest.package/SmTSuperClassTest.class/properties.json
deleted file mode 100644
index 64a0d59..0000000
--- a/SmartTest.package/SmTSuperClassTest.class/properties.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-	"commentStamp" : "",
-	"super" : "TestCase",
-	"category" : "SmartTest-Tests-Data",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [
-		"smTtestClass"
-	],
-	"name" : "SmTSuperClassTest",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverage.class/README.md b/SmartTest.package/SmTTestCoverage.class/README.md
deleted file mode 100644
index e69de29..0000000
diff --git a/SmartTest.package/SmTTestCoverage.class/instance/finder..st b/SmartTest.package/SmTTestCoverage.class/instance/finder..st
deleted file mode 100644
index 18735bb..0000000
--- a/SmartTest.package/SmTTestCoverage.class/instance/finder..st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-finder: aSmTFinder
-	finder := aSmTFinder
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverage.class/instance/finder.st b/SmartTest.package/SmTTestCoverage.class/instance/finder.st
deleted file mode 100644
index a435954..0000000
--- a/SmartTest.package/SmTTestCoverage.class/instance/finder.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-finder
-	^ finder
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverage.class/instance/mark.st b/SmartTest.package/SmTTestCoverage.class/instance/mark.st
deleted file mode 100644
index 68c9ce0..0000000
--- a/SmartTest.package/SmTTestCoverage.class/instance/mark.st
+++ /dev/null
@@ -1,6 +0,0 @@
-accessing
-mark
-	hasRun
-		ifFalse: [ hasRun := true.
-			 self finder
-				addToCurrentExecutionMethodReference: reference ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverage.class/instance/run.with.in..st b/SmartTest.package/SmTTestCoverage.class/instance/run.with.in..st
deleted file mode 100644
index 7ce6723..0000000
--- a/SmartTest.package/SmTTestCoverage.class/instance/run.with.in..st
+++ /dev/null
@@ -1,4 +0,0 @@
-accessing
-run: aSelector with: anArray in: aReceiver
-	self mark.
-	^ aReceiver withArgs: anArray executeMethod: method
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverage.class/properties.json b/SmartTest.package/SmTTestCoverage.class/properties.json
deleted file mode 100644
index 765446c..0000000
--- a/SmartTest.package/SmTTestCoverage.class/properties.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-	"commentStamp" : "",
-	"super" : "HDTestCoverage",
-	"category" : "SmartTest-Tools",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [
-		"finder"
-	],
-	"name" : "SmTTestCoverage",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverageFinderTest.class/README.md b/SmartTest.package/SmTTestCoverageFinderTest.class/README.md
deleted file mode 100644
index e69de29..0000000
diff --git a/SmartTest.package/SmTTestCoverageFinderTest.class/instance/initCache.st b/SmartTest.package/SmTTestCoverageFinderTest.class/instance/initCache.st
deleted file mode 100644
index a452c98..0000000
--- a/SmartTest.package/SmTTestCoverageFinderTest.class/instance/initCache.st
+++ /dev/null
@@ -1,23 +0,0 @@
-helpers
-initCache
-	^ {((RGMethodDefinition className: 'SmTClass' selector: #method1 isMetaSide: false)
-		->
-			{(RGMethodDefinition className: 'SmTClassTest' selector: #testMethod1 isMetaSide: false).
-			(RGMethodDefinition className: 'SmTClassTest' selector: #testMethod2 isMetaSide: false).
-			(RGMethodDefinition className: 'SmTInheritClassTest' selector: #testMethod1 isMetaSide: false)} asSet).
-	((RGMethodDefinition className: 'SmTClass' selector: #method2 isMetaSide: false)
-		-> {(RGMethodDefinition className: 'SmTClassTest' selector: #testMethod2 isMetaSide: false)} asSet).
-	((RGMethodDefinition className: 'SmTClass' selector: #method3: isMetaSide: false)
-		->
-			{(RGMethodDefinition className: 'SmTClassTest' selector: #testMethod1 isMetaSide: false).
-			(RGMethodDefinition className: 'SmTClassTest' selector: #testMethod2 isMetaSide: false).
-			(RGMethodDefinition className: 'SmTClassTest' selector: #testMethod3 isMetaSide: false)} asSet).
-	((RGMethodDefinition className: 'SmTClass' selector: #method4 isMetaSide: false)
-		->
-			{(RGMethodDefinition className: 'SmTClassTest' selector: #testMethod2 isMetaSide: false).
-			(RGMethodDefinition className: 'SmTClassTest' selector: #testMethod3 isMetaSide: false).
-			(RGMethodDefinition className: 'SmTClassTest' selector: #testMethod4 isMetaSide: false)} asSet).
-	((RGMethodDefinition className: 'SmTClass2' selector: #initialize isMetaSide: false)
-		-> {(RGMethodDefinition className: 'SmTClassTest' selector: #testMethod5 isMetaSide: false)} asSet).
-	((RGMethodDefinition className: 'SmTClassTest' selector: #testMethod4 isMetaSide: false)
-		-> {(RGMethodDefinition className: 'SmTClassTest' selector: #testMethod4 isMetaSide: false)} asSet)} asDictionary
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverageFinderTest.class/instance/setUp.st b/SmartTest.package/SmTTestCoverageFinderTest.class/instance/setUp.st
deleted file mode 100644
index c0be323..0000000
--- a/SmartTest.package/SmTTestCoverageFinderTest.class/instance/setUp.st
+++ /dev/null
@@ -1,10 +0,0 @@
-helpers
-setUp
-	"fill in the cache"
-
-	| initialCache |
-	super setUp.
-	initialCache := self initCache.
-	smartFinder cacheClass: (SmTBasicCacheStrategy new).
-	smartFinder setCacheValues: initialCache.
-	smartFinder smtFinder: SmTTestCoverageTestFinderStrategy new
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverageFinderTest.class/instance/tearDown.st b/SmartTest.package/SmTTestCoverageFinderTest.class/instance/tearDown.st
deleted file mode 100644
index 6df396a..0000000
--- a/SmartTest.package/SmTTestCoverageFinderTest.class/instance/tearDown.st
+++ /dev/null
@@ -1,3 +0,0 @@
-helpers
-tearDown
-	smartFinder resetCache.
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverageFinderTest.class/instance/testModificationOnTest.st b/SmartTest.package/SmTTestCoverageFinderTest.class/instance/testModificationOnTest.st
deleted file mode 100644
index 601aa23..0000000
--- a/SmartTest.package/SmTTestCoverageFinderTest.class/instance/testModificationOnTest.st
+++ /dev/null
@@ -1,9 +0,0 @@
-helpers
-testModificationOnTest
-	<CORATestBlacklisted>
-	| testsFound |
-	testsFound := self searchTestMethodsFor: SmTClassTest >> #testMethod4.
-	self deny: (testsFound includes: testMethod1).
-	self deny: (testsFound includes: testMethod2).
-	self deny: (testsFound includes: testMethod3).
-	self assert: (testsFound includes: testMethod4)
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverageFinderTest.class/instance/testTestSelfSelected.st b/SmartTest.package/SmTTestCoverageFinderTest.class/instance/testTestSelfSelected.st
deleted file mode 100644
index 505bf7b..0000000
--- a/SmartTest.package/SmTTestCoverageFinderTest.class/instance/testTestSelfSelected.st
+++ /dev/null
@@ -1,9 +0,0 @@
-helpers
-testTestSelfSelected
-	<CORATestBlacklisted>
-	| testsFound |
-	testsFound := self testsForATestMethod: SmTClassTest >> #testMethod1.
-	self assert: (testsFound includes: testMethod1).
-	self deny: (testsFound includes: testMethod2).
-	self deny: (testsFound includes: testMethod3).
-	self deny: (testsFound includes: testMethod4)
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverageFinderTest.class/properties.json b/SmartTest.package/SmTTestCoverageFinderTest.class/properties.json
deleted file mode 100644
index 45a1f98..0000000
--- a/SmartTest.package/SmTTestCoverageFinderTest.class/properties.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-	"commentStamp" : "",
-	"super" : "SmTFinderAbstractTest",
-	"category" : "SmartTest-Tests",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [ ],
-	"name" : "SmTTestCoverageFinderTest",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/README.md b/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/README.md
deleted file mode 100644
index df51272..0000000
--- a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/README.md
+++ /dev/null
@@ -1,13 +0,0 @@
-The Wrapper strategy is a dynamic test regression finder.
-
-It only does the reseach for method one by one.
-
-  ts := TestSuite new.
-ts addTest: (SmTClassTest selector: #testMethod1).
-ts addTest: (SmTClassTest selector: #testMethod2).
-ts addTest: (SmTClassTest selector: #testMethod3).
-ts addTest: (SmTClassTest selector: #testMethod4).
-sf := SmartFinder new.
-sf smtFinder: SmTTestCoverageTestFinderStrategy new.
-sf buildCacheFromTestSuite: ts.
-sf cacheValues 
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/class/collectPackageWithBaseName..st b/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/class/collectPackageWithBaseName..st
deleted file mode 100644
index 53b1a66..0000000
--- a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/class/collectPackageWithBaseName..st
+++ /dev/null
@@ -1,3 +0,0 @@
-protocol
-collectPackageWithBaseName: aBaseNamePackage
-	^ RPackageOrganizer default packages select: [ :p | aBaseNamePackage,'*' match: p packageName ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/class/collectPackagesFromName..st b/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/class/collectPackagesFromName..st
deleted file mode 100644
index 92f10fc..0000000
--- a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/class/collectPackagesFromName..st
+++ /dev/null
@@ -1,3 +0,0 @@
-protocol
-collectPackagesFromName: aPackageName
-	^ self collectPackageWithBaseName: (self extractPackageBaseName: aPackageName) 
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/class/extractPackageBaseName..st b/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/class/extractPackageBaseName..st
deleted file mode 100644
index 8480e2f..0000000
--- a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/class/extractPackageBaseName..st
+++ /dev/null
@@ -1,3 +0,0 @@
-protocol
-extractPackageBaseName: aPackageName
-	^(aPackageName substrings: '-') at: 1
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/class/isConcreteFinder.st b/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/class/isConcreteFinder.st
deleted file mode 100644
index 32dcc3d..0000000
--- a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/class/isConcreteFinder.st
+++ /dev/null
@@ -1,3 +0,0 @@
-protocol
-isConcreteFinder
-	^ true
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/addATest.toACollectionOfMethod..st b/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/addATest.toACollectionOfMethod..st
deleted file mode 100644
index bfcc81d..0000000
--- a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/addATest.toACollectionOfMethod..st
+++ /dev/null
@@ -1,4 +0,0 @@
-adding
-addATest: aTestCase toACollectionOfMethod: aCollectionOfCompiledMethod
-	aCollectionOfCompiledMethod
-		do: [ :aCompiledMethod | self addATest: aTestCase toMethod: aCompiledMethod ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/addATest.toMethodReference..st b/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/addATest.toMethodReference..st
deleted file mode 100644
index 32bc102..0000000
--- a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/addATest.toMethodReference..st
+++ /dev/null
@@ -1,4 +0,0 @@
-adding
-addATest: aTestCase toMethodReference: aMethodReference
-	(self testsForMethodReference: aMethodReference)
-		add: aTestCase methodReference
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/addImpactedTestFromWrapper.theTestMethod..st b/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/addImpactedTestFromWrapper.theTestMethod..st
deleted file mode 100644
index c19cbf2..0000000
--- a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/addImpactedTestFromWrapper.theTestMethod..st
+++ /dev/null
@@ -1,8 +0,0 @@
-adding
-addImpactedTestFromWrapper: aTestMethod theTestMethod: wrappers
-	|  suite testRunner |
-	testRunner := TestRunner new.
-	suite := TestSuite new.
-	suite addTest: aTestMethod.
-	testRunner runSuite: suite.
-	self updateCacheAndUnmarkFrom: wrappers forMethod: aTestMethod.
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/addRelevantTest.fromMarkedWrappers..st b/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/addRelevantTest.fromMarkedWrappers..st
deleted file mode 100644
index 58a6c1b..0000000
--- a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/addRelevantTest.fromMarkedWrappers..st
+++ /dev/null
@@ -1,8 +0,0 @@
-jenkins
-addRelevantTest: aTestMethod fromMarkedWrappers: wrappers
-	| suite testRunner |
-	testRunner := TestRunner new.
-	suite := TestSuite new.
-	suite addTest: aTestMethod.
-	testRunner runSuite: suite.
-	self updateCacheAndUnmarkFrom: wrappers forMethod: aTestMethod .
diff --git a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/addToCurrentExecutionMethodReference..st b/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/addToCurrentExecutionMethodReference..st
deleted file mode 100644
index 87f382b..0000000
--- a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/addToCurrentExecutionMethodReference..st
+++ /dev/null
@@ -1,6 +0,0 @@
-adding
-addToCurrentExecutionMethodReference: aMethodReference
-	| he |
-	he := thisContext contextStack reject: [ :c | c selector = #DoIt ] thenCollect: [ :a | a method methodReference ].
-	((he includes: self currentTestExecution methodReference) or: [(he collect: #selector) includes: #buildCacheFromTestSuite:])
-		ifTrue: [ self addATest: self currentTestExecution toMethodReference: aMethodReference ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/analyseAndRemoveProxyFor..st b/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/analyseAndRemoveProxyFor..st
deleted file mode 100644
index e53f58a..0000000
--- a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/analyseAndRemoveProxyFor..st
+++ /dev/null
@@ -1,3 +0,0 @@
-api
-analyseAndRemoveProxyFor: aTestCase
-	(wrappers at: aTestCase) do: [ :each | each uninstall ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/availableMethods.st b/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/availableMethods.st
deleted file mode 100644
index 681ec64..0000000
--- a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/availableMethods.st
+++ /dev/null
@@ -1,9 +0,0 @@
-as yet unclassified
-availableMethods
-	"Collect the methods that can be used with the wrapper to fill completely the methodToTest dictionnary"
-	^ (self availablePackages flatCollect: [ :aPackage | aPackage methods ])
-		reject: [ :method | 
-			method methodClass = SmTTestCoverage
-				or: [ method methodClass = SmTTestCoverageTestFinderStrategy
-						or: [ method methodClass = SmTTestFinderStrategy
-								or: [ method methodClass = SmTBasicCacheStrategy or: [ method methodClass = HDTestCoverage or: [ method methodClass = SmTTestFinderDynamicStrategy] ] ] ] ] ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/availablePackages.st b/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/availablePackages.st
deleted file mode 100644
index 59b883a..0000000
--- a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/availablePackages.st
+++ /dev/null
@@ -1,17 +0,0 @@
-as yet unclassified
-availablePackages
-	"Collect the packages that can be used with the wrapper to fill completely the methodToTest dictionnary"
-	| availablePackages |
-	(availablePackages := RPackageOrganizer default packages
-		reject: [ :package | 
-			(package packageName beginsWith: 'Kernel')
-				or: [ (package packageName beginsWith: 'Collections')
-						or: [ (package packageName beginsWith: 'GT')
-or: [ (package packageName beginsWith: 'Ring')
-								or: [ (package packageName beginsWith: 'Regex')
-										or: [ (package packageName beginsWith: 'Exceptions')
-												or: [ (package packageName beginsWith: 'SUnit')
-														or: [ (package packageName beginsWith: 'System') or: [ (package packageName includesSubstring: 'Tests' caseSensitive: false )
-																or: [ package packageName includesSubstring: 'HudsonBuildTools20' caseSensitive: false ] ] ] ] ] ] ] ] ] ])
-		sort: [ :a :b | a packageName < b packageName ].
-	^ availablePackages
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/availableTestMethods.st b/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/availableTestMethods.st
deleted file mode 100644
index e22f094..0000000
--- a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/availableTestMethods.st
+++ /dev/null
@@ -1,4 +0,0 @@
-as yet unclassified
-availableTestMethods
-	"Collect the test methods that can be used with the wrapper to fill completely the methodToTest dictionnary"
-	^ (self availableTestPackages flatCollect: [ :aPackage | aPackage methods ])  reject: [ :method | method methodClass = SmTTestCoverage ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/availableTestPackages.st b/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/availableTestPackages.st
deleted file mode 100644
index c73d77b..0000000
--- a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/availableTestPackages.st
+++ /dev/null
@@ -1,19 +0,0 @@
-accessing
-availableTestPackages
-	"Collect the test packages that can be used with the wrapper to fill completely the methodToTest dictionnary"
-	| availablePackages |
-	(availablePackages := RPackageOrganizer default packages
-		reject: [ :package | 
-			(package packageName beginsWith: 'Kernel')
-				or: [ (package packageName beginsWith: 'Collections')
-						or: [ (package packageName beginsWith: 'GT')
-							or: [ (package packageName beginsWith: 'AST')
-								or: [ (package packageName beginsWith: 'Athens')
-								or: [ (package packageName beginsWith: 'Ring')
-									or: [ (package packageName beginsWith: 'Alien')
-									or: [ (package packageName beginsWith: 'Announcements')
-										or: [ (package packageName beginsWith: 'Regex')
-												or: [ (package packageName beginsWith: 'Exceptions')
-														or: [ (package packageName beginsWith: 'SUnit') or: [ (package packageName beginsWith: 'System') or: [ package packageName includesSubstring: 'HudsonBuildTools20' caseSensitive: false ] ] ] ] ] ] ] ] ] ] ] ] ])
-		sort: [ :a :b | a packageName < b packageName ].
-	^ availablePackages
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/buildCacheFromTestSuite..st b/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/buildCacheFromTestSuite..st
deleted file mode 100644
index 7b2adf3..0000000
--- a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/buildCacheFromTestSuite..st
+++ /dev/null
@@ -1,27 +0,0 @@
-api
-buildCacheFromTestSuite: aTestSuite
-"tr := TestRunner new.
-tr open.
-testSuites := tr allSelectedTestSuites.
-ts := TestSuite new.
-(testSuites flatCollect: [ :ts | ts tests ]) do: [ :atest | ts addTest: atest ].
-[sf := SmartFinder new.
-sf smtFinder: SmTTestCoverageTestFinderStrategy new.
-sf buildCacheFromTestSuite: ts.
-sf cacheValues ] timeToRun 
-"
-	| listOfPackage methodToWrap |
-	listOfPackage := (aTestSuite flatCollectTests flatCollect: [ :aTestCase | self class collectPackagesFromName: aTestCase class package name ]) asSet collect: #packageName.
-	methodToWrap := Set new.
-	methodToWrap addAll: (self collectMethodToTestForPackagesNamed: listOfPackage).
-	"methodToWrap addAll: (self collectClassToTestForPackagesNamed: listOfPackage)."
-	methodToWrap := methodToWrap intersection: self availableMethods.
-	wrappers at: aTestSuite put: (methodToWrap asOrderedCollection collect: [ :each | (SmTTestCoverage on: each methodReference) finder: self ]).
-	(wrappers at: aTestSuite) do: [ :each | each install ] "displayingProgress: [ :aClass | 'Installing ' , aClass asString ] every: 1".
-	aTestSuite flatCollectTests
-		do: [ :aTestCase | 
-			self currentTestExecution: aTestCase.
-			self addATest: aTestCase toMethodReference: aTestCase methodReference.
-			aTestCase run.
-			(wrappers at: aTestSuite) do: [ :each | each unmark ] ].
-	(wrappers at: aTestSuite) do: [ :each | each uninstall ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/collectAllRelativePackages..st b/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/collectAllRelativePackages..st
deleted file mode 100644
index bf5670c..0000000
--- a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/collectAllRelativePackages..st
+++ /dev/null
@@ -1,3 +0,0 @@
-as yet unclassified
-collectAllRelativePackages: aByteString
-	^ RPackageOrganizer default packages select: [ :a | (self filter extractPackageBaseName: a packageName) = aByteString ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/collectClassToTestForPackage..st b/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/collectClassToTestForPackage..st
deleted file mode 100644
index 63169fc..0000000
--- a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/collectClassToTestForPackage..st
+++ /dev/null
@@ -1,6 +0,0 @@
-jenkins
-collectClassToTestForPackage: aPackage
-	(self availablePackages includes: aPackage)
-		ifTrue: [ ^ (aPackage classes reject: #isTrait)
-				flatCollect: [ :aClass | SmTClassTestedRule new methodUsingVariablesOfClass: aClass ] ].
-	^ OrderedCollection new
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/collectClassToTestForPackagesNamed..st b/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/collectClassToTestForPackagesNamed..st
deleted file mode 100644
index 76f8199..0000000
--- a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/collectClassToTestForPackagesNamed..st
+++ /dev/null
@@ -1,3 +0,0 @@
-jenkins
-collectClassToTestForPackagesNamed: aCollectionOfPackagesNamed
-	^ aCollectionOfPackagesNamed flatCollect: [ :aPackageName | self collectClassToTestForPackage: (self getPackageFromName: aPackageName) ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/collectMethodToTestForPackage..st b/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/collectMethodToTestForPackage..st
deleted file mode 100644
index 7689e16..0000000
--- a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/collectMethodToTestForPackage..st
+++ /dev/null
@@ -1,3 +0,0 @@
-jenkins
-collectMethodToTestForPackage: aPackage
-	^ aPackage methods
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/collectMethodToTestForPackages..st b/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/collectMethodToTestForPackages..st
deleted file mode 100644
index 1c71ebd..0000000
--- a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/collectMethodToTestForPackages..st
+++ /dev/null
@@ -1,3 +0,0 @@
-jenkins
-collectMethodToTestForPackages: aCollectionOfPackage
-	^ aCollectionOfPackage flatCollect: [ :aPackage | self collectMethodToTestForPackage: aPackage ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/collectMethodToTestForPackagesNamed..st b/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/collectMethodToTestForPackagesNamed..st
deleted file mode 100644
index cbbc40c..0000000
--- a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/collectMethodToTestForPackagesNamed..st
+++ /dev/null
@@ -1,3 +0,0 @@
-jenkins
-collectMethodToTestForPackagesNamed: aCollectionOfPackagesName
-	^ aCollectionOfPackagesName flatCollect: [ :aPackageName | self collectMethodToTestForPackage: (self getPackageFromName: aPackageName ) ]	
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/collectRelativeTestMethodOfMethods..st b/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/collectRelativeTestMethodOfMethods..st
deleted file mode 100644
index 5cf0eca..0000000
--- a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/collectRelativeTestMethodOfMethods..st
+++ /dev/null
@@ -1,7 +0,0 @@
-as yet unclassified
-collectRelativeTestMethodOfMethods: methods
-	^ (self availableTestMethods
-		intersection:
-			((methods collect: [ :aMethod | aMethod asTestMethod ])
-				select: [ :aTestMethod | aTestMethod isNotNil ]) asSet)
-		collect: [ :method | method methodClass selector: method selector ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/getPackageFromName..st b/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/getPackageFromName..st
deleted file mode 100644
index 5806b06..0000000
--- a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/getPackageFromName..st
+++ /dev/null
@@ -1,3 +0,0 @@
-as yet unclassified
-getPackageFromName: aPackageName
-	^ RPackage organizer packageNamed: aPackageName.
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/initialize.st b/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/initialize.st
deleted file mode 100644
index e2caed1..0000000
--- a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/initialize.st
+++ /dev/null
@@ -1,3 +0,0 @@
-initialization
-initialize
-	wrappers := Dictionary new
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/installProxyFor..st b/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/installProxyFor..st
deleted file mode 100644
index 38a29eb..0000000
--- a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/installProxyFor..st
+++ /dev/null
@@ -1,20 +0,0 @@
-api
-installProxyFor: aTestCase
-	| methodToWrap listOfPackage |
-	self currentTestExecution: aTestCase.
-	self addATest: aTestCase toMethodReference: aTestCase methodReference.
-	listOfPackage := OrderedCollection new.
-	listOfPackage add: aTestCase methodReference compiledMethod package name.
-	methodToWrap := Set new.
-	methodToWrap addAll: (self collectMethodToTestForPackagesNamed: listOfPackage).
-	"methodToWrap addAll: (self collectClassToTestForPackagesNamed: listOfPackage)."
-	methodToWrap := methodToWrap intersection: self availableMethods.
-	wrappers
-		at: aTestCase
-		put:
-			(methodToWrap asOrderedCollection
-				collect: [ :each | (SmTTestCoverage on: each methodReference) finder: self ]).
-	((wrappers at: aTestCase) sort: [ :a :b | a name < b name ])
-		do: [ :each | each install ]
-		displayingProgress: [ :aClass | 'Installing ' , aClass asString ]
-		every: 1
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/methodsInSimilarPackageAs..st b/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/methodsInSimilarPackageAs..st
deleted file mode 100644
index 99e7bf9..0000000
--- a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/methodsInSimilarPackageAs..st
+++ /dev/null
@@ -1,8 +0,0 @@
-as yet unclassified
-methodsInSimilarPackageAs: aCompiledMethod
-		
-	| packageBaseName packages |
-	packageBaseName := self filter extractCompiledMethodPackageBaseName: aCompiledMethod.
-	packages := self collectAllRelativePackages: packageBaseName.
-	^ packages
-		flatCollect: [ :aPackage | aPackage methods ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/searchRelativeTestForMethod..st b/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/searchRelativeTestForMethod..st
deleted file mode 100644
index 2c91fe1..0000000
--- a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/searchRelativeTestForMethod..st
+++ /dev/null
@@ -1,16 +0,0 @@
-search
-searchRelativeTestForMethod: aCompiledMethod
-	"Search for only one package and NOT relative others method"
-	| methods |
-	methods := self methodsInSimilarPackageAs: aCompiledMethod.
-	
-	wrappers := {(HDTestCoverage on: aCompiledMethod methodReference)} asOrderedCollection.
-	wrappers do: [ :each | each install ].
-	[
-	 
-		(self collectRelativeTestMethodOfMethods: methods)
-			do: [ :aTestMethod | self addImpactedTestFromWrapper: aTestMethod theTestMethod: wrappers ]
-			displayingProgress: [ :aClass | 'Processing ' , aClass asString ]
-			every: 1
-		
-	] ensure: [ wrappers do: [ :each | each uninstall ] ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/testsForAStandardMethod..st b/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/testsForAStandardMethod..st
deleted file mode 100644
index 9b787ed..0000000
--- a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/testsForAStandardMethod..st
+++ /dev/null
@@ -1,4 +0,0 @@
-api
-testsForAStandardMethod: aCompiledMethod
-	self searchRelativeTestForMethod: aCompiledMethod.
-	^ self testsForMethod: aCompiledMethod
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/testsForClass..st b/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/testsForClass..st
deleted file mode 100644
index fbe3729..0000000
--- a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/testsForClass..st
+++ /dev/null
@@ -1,13 +0,0 @@
-as yet unclassified
-testsForClass: aClass
-	"Find all tests in related packages that reference the method's class"
-	| allSendersClass allTests |
-	allSendersClass := (aClass allCallsOn 
-							collect: [:aReference| 
-									 aReference actualClass]) asSet
-							select: [:aColectedClass| 
-									(aColectedClass isKindOf: TestCase class) ].
-	
-	allTests := OrderedCollection new.
-	allSendersClass do: [:aSenderClass|  allTests addAll: aSenderClass allTestMethods].
-	^ allTests.
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/updateCacheAndUnmarkFrom.forMethod..st b/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/updateCacheAndUnmarkFrom.forMethod..st
deleted file mode 100644
index ae36939..0000000
--- a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/instance/updateCacheAndUnmarkFrom.forMethod..st
+++ /dev/null
@@ -1,6 +0,0 @@
-jenkins
-updateCacheAndUnmarkFrom: wrappers forMethod: aTestMethod
-	| aToResetAfterMarkCollection |
-	aToResetAfterMarkCollection := wrappers select: [ :each | each hasRun ].
-	self addATest: aTestMethod toACollectionOfMethod: aToResetAfterMarkCollection.
-	aToResetAfterMarkCollection do: [ :each | each unmark ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/properties.json b/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/properties.json
deleted file mode 100644
index 60c1e2b..0000000
--- a/SmartTest.package/SmTTestCoverageTestFinderStrategy.class/properties.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-	"commentStamp" : "BenoitVerhaeghe 3/15/2018 23:38",
-	"super" : "SmTTestFinderDynamicStrategy",
-	"category" : "SmartTest-Finder",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [
-		"wrappers"
-	],
-	"name" : "SmTTestCoverageTestFinderStrategy",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestFinderDynamicStrategy.class/README.md b/SmartTest.package/SmTTestFinderDynamicStrategy.class/README.md
deleted file mode 100644
index 1180292..0000000
--- a/SmartTest.package/SmTTestFinderDynamicStrategy.class/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-Represent a dynamic strategy
-
-self todo: #AddDetails
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestFinderDynamicStrategy.class/class/isConcreteFinder.st b/SmartTest.package/SmTTestFinderDynamicStrategy.class/class/isConcreteFinder.st
deleted file mode 100644
index e5c4805..0000000
--- a/SmartTest.package/SmTTestFinderDynamicStrategy.class/class/isConcreteFinder.st
+++ /dev/null
@@ -1,3 +0,0 @@
-testing
-isConcreteFinder
-	^ false
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestFinderDynamicStrategy.class/instance/addATest.toMethod..st b/SmartTest.package/SmTTestFinderDynamicStrategy.class/instance/addATest.toMethod..st
deleted file mode 100644
index 3fbfe84..0000000
--- a/SmartTest.package/SmTTestFinderDynamicStrategy.class/instance/addATest.toMethod..st
+++ /dev/null
@@ -1,4 +0,0 @@
-api
-addATest: aTestCase toMethod: aCompiledMethod
-	(self testsForMethod: aCompiledMethod)
-		add: aTestCase methodReference
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestFinderDynamicStrategy.class/instance/analyseAndRemoveProxyFor..st b/SmartTest.package/SmTTestFinderDynamicStrategy.class/instance/analyseAndRemoveProxyFor..st
deleted file mode 100644
index 760e20a..0000000
--- a/SmartTest.package/SmTTestFinderDynamicStrategy.class/instance/analyseAndRemoveProxyFor..st
+++ /dev/null
@@ -1,3 +0,0 @@
-api
-analyseAndRemoveProxyFor: aTestCase
-	self subclassResponsibility
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestFinderDynamicStrategy.class/instance/buildCacheFromTestSuite..st b/SmartTest.package/SmTTestFinderDynamicStrategy.class/instance/buildCacheFromTestSuite..st
deleted file mode 100644
index d9db133..0000000
--- a/SmartTest.package/SmTTestFinderDynamicStrategy.class/instance/buildCacheFromTestSuite..st
+++ /dev/null
@@ -1,3 +0,0 @@
-api
-buildCacheFromTestSuite: aTestSuite
-	self subclassResponsibility
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestFinderDynamicStrategy.class/instance/currentTestExecution..st b/SmartTest.package/SmTTestFinderDynamicStrategy.class/instance/currentTestExecution..st
deleted file mode 100644
index 11fd07c..0000000
--- a/SmartTest.package/SmTTestFinderDynamicStrategy.class/instance/currentTestExecution..st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-currentTestExecution: anObject
-	currentTestExecution := anObject
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestFinderDynamicStrategy.class/instance/currentTestExecution.st b/SmartTest.package/SmTTestFinderDynamicStrategy.class/instance/currentTestExecution.st
deleted file mode 100644
index 7112214..0000000
--- a/SmartTest.package/SmTTestFinderDynamicStrategy.class/instance/currentTestExecution.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-currentTestExecution
-	^ currentTestExecution
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestFinderDynamicStrategy.class/instance/installProxyFor..st b/SmartTest.package/SmTTestFinderDynamicStrategy.class/instance/installProxyFor..st
deleted file mode 100644
index 211b385..0000000
--- a/SmartTest.package/SmTTestFinderDynamicStrategy.class/instance/installProxyFor..st
+++ /dev/null
@@ -1,3 +0,0 @@
-api
-installProxyFor: aTestCase
-	self subclassResponsibility
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestFinderDynamicStrategy.class/instance/methodsFor..st b/SmartTest.package/SmTTestFinderDynamicStrategy.class/instance/methodsFor..st
deleted file mode 100644
index a630547..0000000
--- a/SmartTest.package/SmTTestFinderDynamicStrategy.class/instance/methodsFor..st
+++ /dev/null
@@ -1,19 +0,0 @@
-api
-methodsFor: aCompiledMethod
-	| finalFoundMethod |
-	^ self cache
-		at: aCompiledMethod methodReference
-		ifAbsent: [  (self shouldTryToFindTestForDynamic not )
-				ifTrue: [ ^ {} ].
-			#(testsForATestMethod: testsForASetUpMethod: testsForATearDownMethod: testsForAStandardMethod:)
-				do: [ :heuristic | 
-					| methods |
-					methods := [ self perform: heuristic with: aCompiledMethod ]
-						on: MessageNotUnderstood
-						do: [ #() ].
-					methods isEmpty
-						ifFalse: [ finalFoundMethod := self testsForMethod: aCompiledMethod.
-							finalFoundMethod addAll: (self computeInheritedTestFromDiscoveredTest: methods) asOrderedCollection.
-							^ finalFoundMethod ] ].
-			self cache at: aCompiledMethod methodReference put: Set new.
-			^ {} ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestFinderDynamicStrategy.class/properties.json b/SmartTest.package/SmTTestFinderDynamicStrategy.class/properties.json
deleted file mode 100644
index 57bf357..0000000
--- a/SmartTest.package/SmTTestFinderDynamicStrategy.class/properties.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-	"commentStamp" : "BenoitVerhaeghe 3/14/2018 21:59",
-	"super" : "SmTTestFinderStrategy",
-	"category" : "SmartTest-Finder",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [
-		"currentTestExecution"
-	],
-	"name" : "SmTTestFinderDynamicStrategy",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestFinderStrategy.class/README.md b/SmartTest.package/SmTTestFinderStrategy.class/README.md
deleted file mode 100644
index 5fb39bf..0000000
--- a/SmartTest.package/SmTTestFinderStrategy.class/README.md
+++ /dev/null
@@ -1 +0,0 @@
-I represent the strategy used by the soft
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestFinderStrategy.class/class/isConcreteFinder.st b/SmartTest.package/SmTTestFinderStrategy.class/class/isConcreteFinder.st
deleted file mode 100644
index 6fa7dbe..0000000
--- a/SmartTest.package/SmTTestFinderStrategy.class/class/isConcreteFinder.st
+++ /dev/null
@@ -1,3 +0,0 @@
-protocol
-isConcreteFinder
-	^ false
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestFinderStrategy.class/instance/cache..st b/SmartTest.package/SmTTestFinderStrategy.class/instance/cache..st
deleted file mode 100644
index 2c80aae..0000000
--- a/SmartTest.package/SmTTestFinderStrategy.class/instance/cache..st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-cache: aSmTCache
-	cache := aSmTCache 
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestFinderStrategy.class/instance/cache.st b/SmartTest.package/SmTTestFinderStrategy.class/instance/cache.st
deleted file mode 100644
index ad8319d..0000000
--- a/SmartTest.package/SmTTestFinderStrategy.class/instance/cache.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-cache
-	^ cache
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestFinderStrategy.class/instance/computeInheritedTestFromDiscoveredTest..st b/SmartTest.package/SmTTestFinderStrategy.class/instance/computeInheritedTestFromDiscoveredTest..st
deleted file mode 100644
index ceee394..0000000
--- a/SmartTest.package/SmTTestFinderStrategy.class/instance/computeInheritedTestFromDiscoveredTest..st
+++ /dev/null
@@ -1,10 +0,0 @@
-accessing
-computeInheritedTestFromDiscoveredTest: aCollectionOfRGDefinitionOfTest
-	| testList |
-	testList := OrderedCollection new.
-	aCollectionOfRGDefinitionOfTest
-		do: [ :anRGDefinition | 
-			anRGDefinition methodClass isAbstract
-				ifTrue: [ testList addAll: (self subTestFromRGDefinition: anRGDefinition) ]
-				ifFalse: [ testList add: anRGDefinition ] ].
-	^ testList asSet 
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestFinderStrategy.class/instance/filter..st b/SmartTest.package/SmTTestFinderStrategy.class/instance/filter..st
deleted file mode 100644
index b9c3f76..0000000
--- a/SmartTest.package/SmTTestFinderStrategy.class/instance/filter..st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-filter: aSmTFilter
-	filter := aSmTFilter 
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestFinderStrategy.class/instance/filter.st b/SmartTest.package/SmTTestFinderStrategy.class/instance/filter.st
deleted file mode 100644
index b39a756..0000000
--- a/SmartTest.package/SmTTestFinderStrategy.class/instance/filter.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-filter
-	^ filter
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestFinderStrategy.class/instance/initialize.st b/SmartTest.package/SmTTestFinderStrategy.class/instance/initialize.st
deleted file mode 100644
index 96cbef9..0000000
--- a/SmartTest.package/SmTTestFinderStrategy.class/instance/initialize.st
+++ /dev/null
@@ -1,3 +0,0 @@
-initialization
-initialize
-	self shouldTryToFindTestForDynamic: false
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestFinderStrategy.class/instance/methodToTest..st b/SmartTest.package/SmTTestFinderStrategy.class/instance/methodToTest..st
deleted file mode 100644
index 7d8b26b..0000000
--- a/SmartTest.package/SmTTestFinderStrategy.class/instance/methodToTest..st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-methodToTest: anObject
-	cache methodToTest: anObject
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestFinderStrategy.class/instance/methodsFor..st b/SmartTest.package/SmTTestFinderStrategy.class/instance/methodsFor..st
deleted file mode 100644
index 42cd86f..0000000
--- a/SmartTest.package/SmTTestFinderStrategy.class/instance/methodsFor..st
+++ /dev/null
@@ -1,17 +0,0 @@
-api
-methodsFor: aCompiledMethod
-	| finalFoundMethod |
-	^ self cache
-		at: aCompiledMethod methodReference
-		ifAbsent: [ #(testsForATestMethod: testsForASetUpMethod: testsForATearDownMethod: testsForAStandardMethod:)
-				do: [ :heuristic | 
-					| methods |
-					methods := [ self perform: heuristic with: aCompiledMethod ]
-						on: MessageNotUnderstood
-						do: [ #() ].
-					methods isEmpty
-						ifFalse: [ finalFoundMethod := self testsForMethod: aCompiledMethod.
-							finalFoundMethod addAll: (self computeInheritedTestFromDiscoveredTest: methods) asOrderedCollection.
-							^ finalFoundMethod ] ].
-			self cache at: aCompiledMethod methodReference put: Set new.
-			^ {} ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestFinderStrategy.class/instance/shouldTryToFindTestForDynamic..st b/SmartTest.package/SmTTestFinderStrategy.class/instance/shouldTryToFindTestForDynamic..st
deleted file mode 100644
index d0dbe63..0000000
--- a/SmartTest.package/SmTTestFinderStrategy.class/instance/shouldTryToFindTestForDynamic..st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-shouldTryToFindTestForDynamic: aBoolean
-	shouldTryToFindTestForDynamic := aBoolean
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestFinderStrategy.class/instance/shouldTryToFindTestForDynamic.st b/SmartTest.package/SmTTestFinderStrategy.class/instance/shouldTryToFindTestForDynamic.st
deleted file mode 100644
index ce10b33..0000000
--- a/SmartTest.package/SmTTestFinderStrategy.class/instance/shouldTryToFindTestForDynamic.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-shouldTryToFindTestForDynamic
-	^ shouldTryToFindTestForDynamic
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestFinderStrategy.class/instance/subTestFromRGDefinition..st b/SmartTest.package/SmTTestFinderStrategy.class/instance/subTestFromRGDefinition..st
deleted file mode 100644
index 5d67d1e..0000000
--- a/SmartTest.package/SmTTestFinderStrategy.class/instance/subTestFromRGDefinition..st
+++ /dev/null
@@ -1,6 +0,0 @@
-accessing
-subTestFromRGDefinition: anRGDefinition
-	^ self
-		computeInheritedTestFromDiscoveredTest:
-			((anRGDefinition methodClass suite tests flatCollect: #tests)
-				collect: [ :each | RGMethodDefinition class: each class selector: each selector ])
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestFinderStrategy.class/instance/testsForASetUpMethod..st b/SmartTest.package/SmTTestFinderStrategy.class/instance/testsForASetUpMethod..st
deleted file mode 100644
index 831aab8..0000000
--- a/SmartTest.package/SmTTestFinderStrategy.class/instance/testsForASetUpMethod..st
+++ /dev/null
@@ -1,10 +0,0 @@
-private
-testsForASetUpMethod: aCompiledMethod
-	"If the method is a TestCase setUp, returns all the tests of this TestCase and its subclasses"
-	^ (aCompiledMethod isTestSetUpMethod) 
-				ifTrue: [|result|
-					result := OrderedCollection new. 
-					result addAll: aCompiledMethod methodClass allTestMethods.
-					(aCompiledMethod methodClass subclasses do:[:aSubClass | result addAll: aSubClass allTestMethods]). 
-					result collect: #methodReference]
-				ifFalse: [{}].
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestFinderStrategy.class/instance/testsForAStandardMethod..st b/SmartTest.package/SmTTestFinderStrategy.class/instance/testsForAStandardMethod..st
deleted file mode 100644
index 297750f..0000000
--- a/SmartTest.package/SmTTestFinderStrategy.class/instance/testsForAStandardMethod..st
+++ /dev/null
@@ -1,5 +0,0 @@
-private
-testsForAStandardMethod: aCompiledMethod
-	"Should return a Collection of #methodReference"
-	
-	self subclassResponsibility 
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestFinderStrategy.class/instance/testsForATearDownMethod..st b/SmartTest.package/SmTTestFinderStrategy.class/instance/testsForATearDownMethod..st
deleted file mode 100644
index 764f6cb..0000000
--- a/SmartTest.package/SmTTestFinderStrategy.class/instance/testsForATearDownMethod..st
+++ /dev/null
@@ -1,11 +0,0 @@
-private
-testsForATearDownMethod: aCompiledMethod
-	"If the method is a TestCase tearDown, returns all the tests of this TestCase"
-	^ (aCompiledMethod isTestTearDownMethod) 
-				ifTrue: [
-					|result|
-					result := OrderedCollection new. 
-					result addAll: aCompiledMethod methodClass allTestMethods.
-					(aCompiledMethod methodClass subclasses do:[:aSubClass | result addAll: aSubClass allTestMethods]).
-					result collect: #methodReference]
-				ifFalse: [{}].
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestFinderStrategy.class/instance/testsForATestMethod..st b/SmartTest.package/SmTTestFinderStrategy.class/instance/testsForATestMethod..st
deleted file mode 100644
index 7a83ef3..0000000
--- a/SmartTest.package/SmTTestFinderStrategy.class/instance/testsForATestMethod..st
+++ /dev/null
@@ -1,5 +0,0 @@
-private
-testsForATestMethod: aCompiledMethod
-	^ aCompiledMethod isTestMethod
-				ifTrue: [{aCompiledMethod methodReference}]
-				ifFalse: [{}].
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestFinderStrategy.class/instance/testsForClassReferenceOf..st b/SmartTest.package/SmTTestFinderStrategy.class/instance/testsForClassReferenceOf..st
deleted file mode 100644
index b89905c..0000000
--- a/SmartTest.package/SmTTestFinderStrategy.class/instance/testsForClassReferenceOf..st
+++ /dev/null
@@ -1,13 +0,0 @@
-private
-testsForClassReferenceOf: aCompiledMethod
-	"Find all tests in related packages that reference the method's class"
-	| allSendersClass allTests |
-	allSendersClass := (aCompiledMethod methodClass allCallsOn 
-							collect: [:aReference| 
-									 aReference actualClass]) asSet
-							select: [:aClass| 
-									(aClass isKindOf: TestCase class) ].
-	
-	allTests := OrderedCollection new.
-	allSendersClass do: [:aClass|  allTests addAll: aClass allTestMethods].
-	^ allTests collect: #methodReference.
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestFinderStrategy.class/instance/testsForMethod..st b/SmartTest.package/SmTTestFinderStrategy.class/instance/testsForMethod..st
deleted file mode 100644
index ebdc7f1..0000000
--- a/SmartTest.package/SmTTestFinderStrategy.class/instance/testsForMethod..st
+++ /dev/null
@@ -1,5 +0,0 @@
-accessing
-testsForMethod: aCompiledMethod
-	^ self cache relevantTestsFor: aCompiledMethod 
-		"at: aCompiledMethod methodReference
-		ifAbsentPut: [ Set new ]"
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestFinderStrategy.class/instance/testsForMethodReference..st b/SmartTest.package/SmTTestFinderStrategy.class/instance/testsForMethodReference..st
deleted file mode 100644
index 648d70b..0000000
--- a/SmartTest.package/SmTTestFinderStrategy.class/instance/testsForMethodReference..st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-testsForMethodReference: aMethodReference
-	^ self cache testsForMethodReference: aMethodReference 
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestFinderStrategy.class/properties.json b/SmartTest.package/SmTTestFinderStrategy.class/properties.json
deleted file mode 100644
index b13a9e4..0000000
--- a/SmartTest.package/SmTTestFinderStrategy.class/properties.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-	"commentStamp" : "BenoitVerhaeghe 6/30/2017 08:44",
-	"super" : "Object",
-	"category" : "SmartTest-Finder",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [
-		"filter",
-		"cache",
-		"shouldTryToFindTestForDynamic"
-	],
-	"name" : "SmTTestFinderStrategy",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestGenerator.class/README.md b/SmartTest.package/SmTTestGenerator.class/README.md
deleted file mode 100644
index 864ae0b..0000000
--- a/SmartTest.package/SmTTestGenerator.class/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Tool easy to use by everyone to generate test from a Compiled Method
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestGenerator.class/instance/buildTestClassDefinitionFrom..st b/SmartTest.package/SmTTestGenerator.class/instance/buildTestClassDefinitionFrom..st
deleted file mode 100644
index 2990d9e..0000000
--- a/SmartTest.package/SmTTestGenerator.class/instance/buildTestClassDefinitionFrom..st
+++ /dev/null
@@ -1,8 +0,0 @@
-widget method
-buildTestClassDefinitionFrom: aClass
-
-	^ 'TestCase subclass: ', (self buildTestClassNameFrom: aClass) printString, '
-	instanceVariableNames: ''''
-	classVariableNames: ''''
-	poolDictionaries: ''''
-	package: ''',(self buildTestPackageNameFrom:aClass),''''
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestGenerator.class/instance/buildTestClassNameFrom..st b/SmartTest.package/SmTTestGenerator.class/instance/buildTestClassNameFrom..st
deleted file mode 100644
index 8321241..0000000
--- a/SmartTest.package/SmTTestGenerator.class/instance/buildTestClassNameFrom..st
+++ /dev/null
@@ -1,4 +0,0 @@
-widget method
-buildTestClassNameFrom: aClass
-	
-	^ (aClass name asString,'Test') asSymbol
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestGenerator.class/instance/buildTestPackageNameFrom..st b/SmartTest.package/SmTTestGenerator.class/instance/buildTestPackageNameFrom..st
deleted file mode 100644
index 22e9d73..0000000
--- a/SmartTest.package/SmTTestGenerator.class/instance/buildTestPackageNameFrom..st
+++ /dev/null
@@ -1,4 +0,0 @@
-widget method
-buildTestPackageNameFrom:aClass
-
-	^ aClass package name asString, '-Tests' 
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestGenerator.class/instance/buildTestSelectorFor..st b/SmartTest.package/SmTTestGenerator.class/instance/buildTestSelectorFor..st
deleted file mode 100644
index 9fb1dd1..0000000
--- a/SmartTest.package/SmTTestGenerator.class/instance/buildTestSelectorFor..st
+++ /dev/null
@@ -1,15 +0,0 @@
-widget method
-buildTestSelectorFor: aMethod
-
-	^ String streamContents: [:s || capitalize |
-		capitalize := true.
-		s << 'test'.
-		aMethod selector do: [:c |
-			c = $:
-				ifTrue: [ capitalize := true ]
-				ifFalse: [ capitalize
-							ifTrue: [ 
-								capitalize := false.
-								s << c asUppercase. ]
-							ifFalse:[ s << c ]]]]
-			
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestGenerator.class/instance/createTestForClass..st b/SmartTest.package/SmTTestGenerator.class/instance/createTestForClass..st
deleted file mode 100644
index 59c0c1e..0000000
--- a/SmartTest.package/SmTTestGenerator.class/instance/createTestForClass..st
+++ /dev/null
@@ -1,20 +0,0 @@
-widget method
-createTestForClass: aClass
-	| testClass className |
-	aClass ifNil: [ ^ nil ].
-	aClass isTestCase
-		ifTrue: [ ^ nil ].
-	aClass isMeta
-		ifTrue: [ ^ nil ].
-	className := self buildTestClassNameFrom: aClass.
-	testClass := self class environment
-		at: className
-		ifPresent: [ :class | class ]
-		ifAbsent: [ testClass := TestCase
-				subclass: className
-				instanceVariableNames: ''
-				classVariableNames: ''
-				package: (self buildTestPackageNameFrom: aClass).
-			self class environment at: className.
-			testClass comment: (self generateCommentForTestClass: testClass from: aClass) ].
-	^ testClass
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestGenerator.class/instance/generateCommentForTestClass.from..st b/SmartTest.package/SmTTestGenerator.class/instance/generateCommentForTestClass.from..st
deleted file mode 100644
index 783ab03..0000000
--- a/SmartTest.package/SmTTestGenerator.class/instance/generateCommentForTestClass.from..st
+++ /dev/null
@@ -1,9 +0,0 @@
-widget method
-generateCommentForTestClass: testClass from: aClass
-
-	^ String streamContents: [:stream || name |
-			name := testClass name. 
-			name first isVowel
-				ifTrue: [ stream << 'An ']
-				ifFalse:[ stream <<'A '].
-			stream << name << ' is a test class for testing the behavior of '<< aClass name ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestGenerator.class/instance/generateSourceCodeForTestFrom..st b/SmartTest.package/SmTTestGenerator.class/instance/generateSourceCodeForTestFrom..st
deleted file mode 100644
index 4dab780..0000000
--- a/SmartTest.package/SmTTestGenerator.class/instance/generateSourceCodeForTestFrom..st
+++ /dev/null
@@ -1,3 +0,0 @@
-widget method
-generateSourceCodeForTestFrom: aMethod
-	^ (self buildTestSelectorFor: aMethod), String crlf,'	self shouldBeImplemented'
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestGenerator.class/instance/generateTestMethodFor..st b/SmartTest.package/SmTTestGenerator.class/instance/generateTestMethodFor..st
deleted file mode 100644
index 49e43b3..0000000
--- a/SmartTest.package/SmTTestGenerator.class/instance/generateTestMethodFor..st
+++ /dev/null
@@ -1,15 +0,0 @@
-widget method
-generateTestMethodFor: aMethod
-	"generate a test method for aMethod and return the generated method"
-
-	| class testMethodName |
-	testMethodName := aMethod methodClass name , 'Test'.
-	class := Smalltalk allClasses
-		detect: [ :e | e name = testMethodName ]
-		ifNone: [ self createTestForClass: aMethod methodClass ].
-	class
-		ifNotNil: [ class
-				compile: (self generateSourceCodeForTestFrom: aMethod)
-				classified: 'tests-' , aMethod category.
-			^ class >> (self buildTestSelectorFor: aMethod) asSymbol ].
-	^ nil
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestGenerator.class/properties.json b/SmartTest.package/SmTTestGenerator.class/properties.json
deleted file mode 100644
index 70f7b30..0000000
--- a/SmartTest.package/SmTTestGenerator.class/properties.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-	"commentStamp" : "BenoitVerhaeghe 7/7/2017 16:25",
-	"super" : "Object",
-	"category" : "SmartTest-Tools",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [ ],
-	"name" : "SmTTestGenerator",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestListener.class/README.md b/SmartTest.package/SmTTestListener.class/README.md
deleted file mode 100644
index e69de29..0000000
diff --git a/SmartTest.package/SmTTestListener.class/class/activated..st b/SmartTest.package/SmTTestListener.class/class/activated..st
deleted file mode 100644
index 16dbb4b..0000000
--- a/SmartTest.package/SmTTestListener.class/class/activated..st
+++ /dev/null
@@ -1,4 +0,0 @@
-accessing
-activated: aSelector
-	activated := aSelector.
-	self uniqueInstance activated: aSelector
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestListener.class/class/activated.st b/SmartTest.package/SmTTestListener.class/class/activated.st
deleted file mode 100644
index 7f03b2d..0000000
--- a/SmartTest.package/SmTTestListener.class/class/activated.st
+++ /dev/null
@@ -1,5 +0,0 @@
-accessing
-activated
-	^ activated
-		ifNil: [ activated := false.
-			self uniqueInstance activated: false ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestListener.class/class/settingsOn..st b/SmartTest.package/SmTTestListener.class/class/settingsOn..st
deleted file mode 100644
index 57fcf6c..0000000
--- a/SmartTest.package/SmTTestListener.class/class/settingsOn..st
+++ /dev/null
@@ -1,11 +0,0 @@
-initialization
-settingsOn: aBuilder
-	<systemsettings>
-	(aBuilder setting: #activated)
-		parent: 'SmartTest';
-		target: self;
-		order: 0.04;
-		label: 'AutoUpdate Cache';
-		description:
-			'When you execute a test, we''''are updating the cache for it execution
-	(BETA)'
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestListener.class/class/uniqueInstance.st b/SmartTest.package/SmTTestListener.class/class/uniqueInstance.st
deleted file mode 100644
index 7d34d72..0000000
--- a/SmartTest.package/SmTTestListener.class/class/uniqueInstance.st
+++ /dev/null
@@ -1,3 +0,0 @@
-initialization
-uniqueInstance
-	^ uniqueInstance ifNil: [ uniqueInstance := self new ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestListener.class/instance/activated..st b/SmartTest.package/SmTTestListener.class/instance/activated..st
deleted file mode 100644
index 3cc0774..0000000
--- a/SmartTest.package/SmTTestListener.class/instance/activated..st
+++ /dev/null
@@ -1,6 +0,0 @@
-announcement handling
-activated: aSelector
-	aSelector
-		ifTrue: [ self disableListenerTestCase.
-			self enableListenerTestCase ]
-		ifFalse: [ self disableListenerTestCase ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestListener.class/instance/cacheClass..st b/SmartTest.package/SmTTestListener.class/instance/cacheClass..st
deleted file mode 100644
index 8e111ec..0000000
--- a/SmartTest.package/SmTTestListener.class/instance/cacheClass..st
+++ /dev/null
@@ -1,3 +0,0 @@
-announcement handling
-cacheClass: aCacheClass
-	cacheClass := aCacheClass 
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestListener.class/instance/cacheClass.st b/SmartTest.package/SmTTestListener.class/instance/cacheClass.st
deleted file mode 100644
index dfddbb4..0000000
--- a/SmartTest.package/SmTTestListener.class/instance/cacheClass.st
+++ /dev/null
@@ -1,3 +0,0 @@
-announcement handling
-cacheClass
-	^ cacheClass
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestListener.class/instance/disableListenerTestCase.st b/SmartTest.package/SmTTestListener.class/instance/disableListenerTestCase.st
deleted file mode 100644
index 52f24e1..0000000
--- a/SmartTest.package/SmTTestListener.class/instance/disableListenerTestCase.st
+++ /dev/null
@@ -1,4 +0,0 @@
-protocol
-disableListenerTestCase
-	SmTAnnouncer announcer unsubscribe: self.
-		SmTAnnouncer announcer unsubscribe: self
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestListener.class/instance/enableListenerTestCase.st b/SmartTest.package/SmTTestListener.class/instance/enableListenerTestCase.st
deleted file mode 100644
index 9ed9c5d..0000000
--- a/SmartTest.package/SmTTestListener.class/instance/enableListenerTestCase.st
+++ /dev/null
@@ -1,4 +0,0 @@
-protocol
-enableListenerTestCase
-	SmTAnnouncer announcer weak when: TestCaseStarted send: #testCaseStarted: to: self.
-	SmTAnnouncer announcer weak when: TestCaseEnded send: #testCaseEnded: to: self
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestListener.class/instance/smtDynamicFinder..st b/SmartTest.package/SmTTestListener.class/instance/smtDynamicFinder..st
deleted file mode 100644
index 5d84b60..0000000
--- a/SmartTest.package/SmTTestListener.class/instance/smtDynamicFinder..st
+++ /dev/null
@@ -1,3 +0,0 @@
-announcement handling
-smtDynamicFinder: aSmTTestFinderStrategy
-	smtDynamicFinder := aSmTTestFinderStrategy
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestListener.class/instance/smtDynamicFinder.st b/SmartTest.package/SmTTestListener.class/instance/smtDynamicFinder.st
deleted file mode 100644
index a88a39f..0000000
--- a/SmartTest.package/SmTTestListener.class/instance/smtDynamicFinder.st
+++ /dev/null
@@ -1,3 +0,0 @@
-announcement handling
-smtDynamicFinder
-	^ smtDynamicFinder
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestListener.class/instance/testCaseEnded..st b/SmartTest.package/SmTTestListener.class/instance/testCaseEnded..st
deleted file mode 100644
index ea8a75a..0000000
--- a/SmartTest.package/SmTTestListener.class/instance/testCaseEnded..st
+++ /dev/null
@@ -1,3 +0,0 @@
-protocol
-testCaseEnded: aTestAnnouncement
-	self smtDynamicFinder analyseAndRemoveProxyFor: aTestAnnouncement testCase
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestListener.class/instance/testCaseStarted..st b/SmartTest.package/SmTTestListener.class/instance/testCaseStarted..st
deleted file mode 100644
index 9fc4460..0000000
--- a/SmartTest.package/SmTTestListener.class/instance/testCaseStarted..st
+++ /dev/null
@@ -1,3 +0,0 @@
-protocol
-testCaseStarted: aTestAnnouncement
-	self smtDynamicFinder installProxyFor: aTestAnnouncement testCase 
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestListener.class/properties.json b/SmartTest.package/SmTTestListener.class/properties.json
deleted file mode 100644
index cc35a04..0000000
--- a/SmartTest.package/SmTTestListener.class/properties.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-	"commentStamp" : "",
-	"super" : "Object",
-	"category" : "SmartTest-Listener",
-	"classinstvars" : [
-		"uniqueInstance",
-		"activated"
-	],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [
-		"cacheClass",
-		"smtDynamicFinder"
-	],
-	"name" : "SmTTestListener",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestingStrategy.class/README.md b/SmartTest.package/SmTTestingStrategy.class/README.md
deleted file mode 100644
index 119b946..0000000
--- a/SmartTest.package/SmTTestingStrategy.class/README.md
+++ /dev/null
@@ -1 +0,0 @@
-The testing strategy defines when the tests we've found will be run.
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestingStrategy.class/class/addABlockClosureThatSearchForACompiledMethod..st b/SmartTest.package/SmTTestingStrategy.class/class/addABlockClosureThatSearchForACompiledMethod..st
deleted file mode 100644
index bf83de6..0000000
--- a/SmartTest.package/SmTTestingStrategy.class/class/addABlockClosureThatSearchForACompiledMethod..st
+++ /dev/null
@@ -1,7 +0,0 @@
-protocol
-addABlockClosureThatSearchForACompiledMethod: aBlockClosure
-	self queue size >= self defaultSizeOfResearchQueue
-		ifTrue: [ self queue next value: true ].
-	self queue nextPut: aBlockClosure.
-	self researchProcess isTerminated
-		ifTrue: [ self initializeResearchProcess ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestingStrategy.class/class/defaultSizeOfResearchQueue..st b/SmartTest.package/SmTTestingStrategy.class/class/defaultSizeOfResearchQueue..st
deleted file mode 100644
index a5de557..0000000
--- a/SmartTest.package/SmTTestingStrategy.class/class/defaultSizeOfResearchQueue..st
+++ /dev/null
@@ -1,5 +0,0 @@
-protocol
-defaultSizeOfResearchQueue: anInteger
-	defaultSize := anInteger asInteger.
-	[ self queue size > defaultSize ]
-		whileTrue: [ self queue next ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestingStrategy.class/class/defaultSizeOfResearchQueue.st b/SmartTest.package/SmTTestingStrategy.class/class/defaultSizeOfResearchQueue.st
deleted file mode 100644
index 714bc91..0000000
--- a/SmartTest.package/SmTTestingStrategy.class/class/defaultSizeOfResearchQueue.st
+++ /dev/null
@@ -1,3 +0,0 @@
-protocol
-defaultSizeOfResearchQueue
-	^ defaultSize ifNil: [ defaultSize := 1 ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestingStrategy.class/class/disable.st b/SmartTest.package/SmTTestingStrategy.class/class/disable.st
deleted file mode 100644
index 9e13ac0..0000000
--- a/SmartTest.package/SmTTestingStrategy.class/class/disable.st
+++ /dev/null
@@ -1,3 +0,0 @@
-protocol
-disable
-	self queue flush.
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestingStrategy.class/class/enable.st b/SmartTest.package/SmTTestingStrategy.class/class/enable.st
deleted file mode 100644
index 367529b..0000000
--- a/SmartTest.package/SmTTestingStrategy.class/class/enable.st
+++ /dev/null
@@ -1,2 +0,0 @@
-protocol
-enable
diff --git a/SmartTest.package/SmTTestingStrategy.class/class/initialize.st b/SmartTest.package/SmTTestingStrategy.class/class/initialize.st
deleted file mode 100644
index 934c04e..0000000
--- a/SmartTest.package/SmTTestingStrategy.class/class/initialize.st
+++ /dev/null
@@ -1,4 +0,0 @@
-protocol
-initialize
-	queue := SharedQueue new.
-	self initializeResearchProcess
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestingStrategy.class/class/initializeResearchProcess.st b/SmartTest.package/SmTTestingStrategy.class/class/initializeResearchProcess.st
deleted file mode 100644
index 1334fff..0000000
--- a/SmartTest.package/SmTTestingStrategy.class/class/initializeResearchProcess.st
+++ /dev/null
@@ -1,6 +0,0 @@
-protocol
-initializeResearchProcess
-	researchProcess := [ [ true ]
-		whileTrue: [ | aBlock |
-			aBlock := self queue next.
-			aBlock value: false ] ] forkAt: Processor userSchedulingPriority
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestingStrategy.class/class/queue.st b/SmartTest.package/SmTTestingStrategy.class/class/queue.st
deleted file mode 100644
index 7523301..0000000
--- a/SmartTest.package/SmTTestingStrategy.class/class/queue.st
+++ /dev/null
@@ -1,3 +0,0 @@
-protocol
-queue
-	^ queue ifNil: [ queue := SharedQueue new. ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestingStrategy.class/class/researchProcess.st b/SmartTest.package/SmTTestingStrategy.class/class/researchProcess.st
deleted file mode 100644
index 9525496..0000000
--- a/SmartTest.package/SmTTestingStrategy.class/class/researchProcess.st
+++ /dev/null
@@ -1,3 +0,0 @@
-protocol
-researchProcess
-	^ researchProcess ifNil: [ self initializeResearchProcess. ^ researchProcess   ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestingStrategy.class/class/settingsOn..st b/SmartTest.package/SmTTestingStrategy.class/class/settingsOn..st
deleted file mode 100644
index a8a5140..0000000
--- a/SmartTest.package/SmTTestingStrategy.class/class/settingsOn..st
+++ /dev/null
@@ -1,10 +0,0 @@
-protocol
-settingsOn: aBuilder
-	<systemsettings>
-	(aBuilder group: #TestingStrategy)
-	parent: #SmartTest;
-		with: [ (aBuilder setting: #defaultSizeOfResearchQueue)
-				target: self;
-				parent: #TestingStrategy;
-				label: 'Size of the queue for the research of element';
-				description: 'Size of the queue for the research of element.' ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestingStrategy.class/instance/doFindTestsForMethod..st b/SmartTest.package/SmTTestingStrategy.class/instance/doFindTestsForMethod..st
deleted file mode 100644
index d21859b..0000000
--- a/SmartTest.package/SmTTestingStrategy.class/instance/doFindTestsForMethod..st
+++ /dev/null
@@ -1,4 +0,0 @@
-instance creation
-doFindTestsForMethod: aMethod
-
-	self subclassResponsibility
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestingStrategy.class/instance/findTestsForMethod..st b/SmartTest.package/SmTTestingStrategy.class/instance/findTestsForMethod..st
deleted file mode 100644
index 8a31725..0000000
--- a/SmartTest.package/SmTTestingStrategy.class/instance/findTestsForMethod..st
+++ /dev/null
@@ -1,3 +0,0 @@
-instance creation
-findTestsForMethod: aCompiledMethod
-	self subclassResponsibility 
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestingStrategy.class/instance/finder..st b/SmartTest.package/SmTTestingStrategy.class/instance/finder..st
deleted file mode 100644
index 7ca23c0..0000000
--- a/SmartTest.package/SmTTestingStrategy.class/instance/finder..st
+++ /dev/null
@@ -1,3 +0,0 @@
-instance creation
-finder: aSmTFinder
-	finder := aSmTFinder
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestingStrategy.class/instance/finder.st b/SmartTest.package/SmTTestingStrategy.class/instance/finder.st
deleted file mode 100644
index 532fa51..0000000
--- a/SmartTest.package/SmTTestingStrategy.class/instance/finder.st
+++ /dev/null
@@ -1,4 +0,0 @@
-instance creation
-finder
-	^ finder
-	
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestingStrategy.class/instance/getMethodsFor..st b/SmartTest.package/SmTTestingStrategy.class/instance/getMethodsFor..st
deleted file mode 100644
index f6a113c..0000000
--- a/SmartTest.package/SmTTestingStrategy.class/instance/getMethodsFor..st
+++ /dev/null
@@ -1,3 +0,0 @@
-instance creation
-getMethodsFor: aCompiledMethod
-	^ self getTestMethodFromCompiledTestMethod: (self finder methodsFor: aCompiledMethod)
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestingStrategy.class/instance/getTestMethodFromCompiledTestMethod..st b/SmartTest.package/SmTTestingStrategy.class/instance/getTestMethodFromCompiledTestMethod..st
deleted file mode 100644
index 315d7b5..0000000
--- a/SmartTest.package/SmTTestingStrategy.class/instance/getTestMethodFromCompiledTestMethod..st
+++ /dev/null
@@ -1,4 +0,0 @@
-instance creation
-getTestMethodFromCompiledTestMethod: aCollectionOfCompiledMethod
-	^ aCollectionOfCompiledMethod
-		collect: [ :aCompiledMethod | aCompiledMethod methodClass selector: aCompiledMethod selector ]
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestingStrategy.class/instance/runner..st b/SmartTest.package/SmTTestingStrategy.class/instance/runner..st
deleted file mode 100644
index 4fd89d5..0000000
--- a/SmartTest.package/SmTTestingStrategy.class/instance/runner..st
+++ /dev/null
@@ -1,3 +0,0 @@
-instance creation
-runner: aSmTRunner
-	runner := aSmTRunner
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestingStrategy.class/instance/runner.st b/SmartTest.package/SmTTestingStrategy.class/instance/runner.st
deleted file mode 100644
index 205cb7c..0000000
--- a/SmartTest.package/SmTTestingStrategy.class/instance/runner.st
+++ /dev/null
@@ -1,3 +0,0 @@
-instance creation
-runner
-	^ runner
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestingStrategy.class/properties.json b/SmartTest.package/SmTTestingStrategy.class/properties.json
deleted file mode 100644
index 4b6d04d..0000000
--- a/SmartTest.package/SmTTestingStrategy.class/properties.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-	"commentStamp" : "BenoitVerhaeghe 7/13/2017 14:17",
-	"super" : "Object",
-	"category" : "SmartTest-Testing",
-	"classinstvars" : [
-		"queue",
-		"researchProcess",
-		"defaultSize"
-	],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [
-		"finder",
-		"runner"
-	],
-	"name" : "SmTTestingStrategy",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestingStrategyAlways.class/README.md b/SmartTest.package/SmTTestingStrategyAlways.class/README.md
deleted file mode 100644
index 7eb54d8..0000000
--- a/SmartTest.package/SmTTestingStrategyAlways.class/README.md
+++ /dev/null
@@ -1 +0,0 @@
-As soon as the tests are found. CORA run the test suite
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestingStrategyAlways.class/instance/doFindTestsForMethod..st b/SmartTest.package/SmTTestingStrategyAlways.class/instance/doFindTestsForMethod..st
deleted file mode 100644
index 86392c2..0000000
--- a/SmartTest.package/SmTTestingStrategyAlways.class/instance/doFindTestsForMethod..st
+++ /dev/null
@@ -1,7 +0,0 @@
-instance creation
-doFindTestsForMethod: aCompiledMethod
-
-	| tests |
-	tests := self getMethodsFor: aCompiledMethod.
-	self runner runCases: tests.
-	^ self getTestMethodFromCompiledTestMethod: tests
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestingStrategyAlways.class/instance/findTestsForMethod..st b/SmartTest.package/SmTTestingStrategyAlways.class/instance/findTestsForMethod..st
deleted file mode 100644
index f40a2c1..0000000
--- a/SmartTest.package/SmTTestingStrategyAlways.class/instance/findTestsForMethod..st
+++ /dev/null
@@ -1,12 +0,0 @@
-instance creation
-findTestsForMethod: aCompiledMethod
-	| tests ended |
-	ended := false.
-	SmTTestingStrategy
-		addABlockClosureThatSearchForACompiledMethod: [ :skip | 
-			skip
-				ifFalse: [ tests := self getMethodsFor: aCompiledMethod.
-					self runner runCases: tests ].
-			ended := true ].
-	[ ended ] whileFalse.
-	^ self getTestMethodFromCompiledTestMethod: tests
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestingStrategyAlways.class/properties.json b/SmartTest.package/SmTTestingStrategyAlways.class/properties.json
deleted file mode 100644
index 48b1326..0000000
--- a/SmartTest.package/SmTTestingStrategyAlways.class/properties.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-	"commentStamp" : "BenoitVerhaeghe 7/13/2017 14:18",
-	"super" : "SmTTestingStrategy",
-	"category" : "SmartTest-Testing",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [ ],
-	"name" : "SmTTestingStrategyAlways",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestingStrategyEachModification.class/README.md b/SmartTest.package/SmTTestingStrategyEachModification.class/README.md
deleted file mode 100644
index 8ad2251..0000000
--- a/SmartTest.package/SmTTestingStrategyEachModification.class/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Each time the developer does a modification, CORA run the test suite
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestingStrategyEachModification.class/instance/doFindTestsForMethod..st b/SmartTest.package/SmTTestingStrategyEachModification.class/instance/doFindTestsForMethod..st
deleted file mode 100644
index 58561c9..0000000
--- a/SmartTest.package/SmTTestingStrategyEachModification.class/instance/doFindTestsForMethod..st
+++ /dev/null
@@ -1,6 +0,0 @@
-instance creation
-doFindTestsForMethod: aCompiledMethod
-	| tests |
-	tests := self getMethodsFor: aCompiledMethod.
-	(SmTOnModificationStrategy get: aCompiledMethod) ifNotNil: [ self runner runCases: tests ].
-	^ tests
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestingStrategyEachModification.class/instance/findTestsForMethod..st b/SmartTest.package/SmTTestingStrategyEachModification.class/instance/findTestsForMethod..st
deleted file mode 100644
index 0f2c884..0000000
--- a/SmartTest.package/SmTTestingStrategyEachModification.class/instance/findTestsForMethod..st
+++ /dev/null
@@ -1,12 +0,0 @@
-instance creation
-findTestsForMethod: aCompiledMethod
-	| tests ended |
-	ended := false.
-	SmTTestingStrategy
-		addABlockClosureThatSearchForACompiledMethod: [ :skip | 
-			skip
-				ifFalse: [ tests := self getMethodsFor: aCompiledMethod.
-					(SmTOnModificationStrategy get: aCompiledMethod) ifNotNil: [ self runner runCases: tests ] ].
-			ended := true ].
-	[ ended ] whileFalse.
-	^ tests
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestingStrategyEachModification.class/properties.json b/SmartTest.package/SmTTestingStrategyEachModification.class/properties.json
deleted file mode 100644
index 7bdefd6..0000000
--- a/SmartTest.package/SmTTestingStrategyEachModification.class/properties.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-	"commentStamp" : "BenoitVerhaeghe 7/13/2017 14:18",
-	"super" : "SmTTestingStrategy",
-	"category" : "SmartTest-Testing",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [ ],
-	"name" : "SmTTestingStrategyEachModification",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestingStrategyFiveMinutes.class/README.md b/SmartTest.package/SmTTestingStrategyFiveMinutes.class/README.md
deleted file mode 100644
index 90ffc7d..0000000
--- a/SmartTest.package/SmTTestingStrategyFiveMinutes.class/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Every 5 minutes, CORA run the tests which have been found in the last 5 minutes
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestingStrategyFiveMinutes.class/class/disable.st b/SmartTest.package/SmTTestingStrategyFiveMinutes.class/class/disable.st
deleted file mode 100644
index d23561b..0000000
--- a/SmartTest.package/SmTTestingStrategyFiveMinutes.class/class/disable.st
+++ /dev/null
@@ -1,4 +0,0 @@
-protocol
-disable
-	super disable.
-	SmTFivesMinutesCollector stop
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestingStrategyFiveMinutes.class/class/enable.st b/SmartTest.package/SmTTestingStrategyFiveMinutes.class/class/enable.st
deleted file mode 100644
index c38eae5..0000000
--- a/SmartTest.package/SmTTestingStrategyFiveMinutes.class/class/enable.st
+++ /dev/null
@@ -1,4 +0,0 @@
-protocol
-enable
-	SmTFivesMinutesCollector start.
-		super enable
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestingStrategyFiveMinutes.class/instance/doFindTestsForMethod..st b/SmartTest.package/SmTTestingStrategyFiveMinutes.class/instance/doFindTestsForMethod..st
deleted file mode 100644
index acf8143..0000000
--- a/SmartTest.package/SmTTestingStrategyFiveMinutes.class/instance/doFindTestsForMethod..st
+++ /dev/null
@@ -1,7 +0,0 @@
-instance creation
-doFindTestsForMethod: aCompiledMethod
-	
-	| tests|
-	tests := self getMethodsFor: aCompiledMethod.
-	SmTFivesMinutesCollector addTestMethods: tests.
-	^ self getTestMethodFromCompiledTestMethod: tests
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestingStrategyFiveMinutes.class/instance/findTestsForMethod..st b/SmartTest.package/SmTTestingStrategyFiveMinutes.class/instance/findTestsForMethod..st
deleted file mode 100644
index 9498179..0000000
--- a/SmartTest.package/SmTTestingStrategyFiveMinutes.class/instance/findTestsForMethod..st
+++ /dev/null
@@ -1,12 +0,0 @@
-instance creation
-findTestsForMethod: aCompiledMethod
-	| tests ended |
-	ended := false.
-	SmTTestingStrategy
-		addABlockClosureThatSearchForACompiledMethod: [ :skip | 
-			skip
-				ifFalse: [ tests := self getMethodsFor: aCompiledMethod.
-					SmTFivesMinutesCollector addTestMethods: tests ].
-			ended := true ].
-	[ ended ] whileFalse.
-	^ self getTestMethodFromCompiledTestMethod: tests
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestingStrategyFiveMinutes.class/properties.json b/SmartTest.package/SmTTestingStrategyFiveMinutes.class/properties.json
deleted file mode 100644
index 4889df8..0000000
--- a/SmartTest.package/SmTTestingStrategyFiveMinutes.class/properties.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-	"commentStamp" : "BenoitVerhaeghe 7/13/2017 14:19",
-	"super" : "SmTTestingStrategy",
-	"category" : "SmartTest-Testing",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [ ],
-	"name" : "SmTTestingStrategyFiveMinutes",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestingStrategyNever.class/README.md b/SmartTest.package/SmTTestingStrategyNever.class/README.md
deleted file mode 100644
index 694e63d..0000000
--- a/SmartTest.package/SmTTestingStrategyNever.class/README.md
+++ /dev/null
@@ -1 +0,0 @@
-CORA never run test automatically
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestingStrategyNever.class/instance/doFindTestsForMethod..st b/SmartTest.package/SmTTestingStrategyNever.class/instance/doFindTestsForMethod..st
deleted file mode 100644
index 3902a80..0000000
--- a/SmartTest.package/SmTTestingStrategyNever.class/instance/doFindTestsForMethod..st
+++ /dev/null
@@ -1,3 +0,0 @@
-instance creation
-doFindTestsForMethod: aCompiledMethod
-	^ self getMethodsFor: aCompiledMethod
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestingStrategyNever.class/instance/findTestsForMethod..st b/SmartTest.package/SmTTestingStrategyNever.class/instance/findTestsForMethod..st
deleted file mode 100644
index 24d2a3e..0000000
--- a/SmartTest.package/SmTTestingStrategyNever.class/instance/findTestsForMethod..st
+++ /dev/null
@@ -1,3 +0,0 @@
-instance creation
-findTestsForMethod: aCompiledMethod
-	^ self doFindTestsForMethod: aCompiledMethod
\ No newline at end of file
diff --git a/SmartTest.package/SmTTestingStrategyNever.class/properties.json b/SmartTest.package/SmTTestingStrategyNever.class/properties.json
deleted file mode 100644
index 5536709..0000000
--- a/SmartTest.package/SmTTestingStrategyNever.class/properties.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-	"commentStamp" : "BenoitVerhaeghe 7/13/2017 14:19",
-	"super" : "SmTTestingStrategy",
-	"category" : "SmartTest-Testing",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [ ],
-	"name" : "SmTTestingStrategyNever",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmalltalkImage.extension/instance/allMethods.st b/SmartTest.package/SmalltalkImage.extension/instance/allMethods.st
deleted file mode 100644
index 240d58f..0000000
--- a/SmartTest.package/SmalltalkImage.extension/instance/allMethods.st
+++ /dev/null
@@ -1,4 +0,0 @@
-*SmartTest
-allMethods
-
-	^ globals allClasses flatCollect: #methods 
\ No newline at end of file
diff --git a/SmartTest.package/SmalltalkImage.extension/instance/allTestMethods.st b/SmartTest.package/SmalltalkImage.extension/instance/allTestMethods.st
deleted file mode 100644
index 51b7173..0000000
--- a/SmartTest.package/SmalltalkImage.extension/instance/allTestMethods.st
+++ /dev/null
@@ -1,4 +0,0 @@
-*SmartTest
-allTestMethods
-
-	^(globals allClasses flatCollect: #methods) select: #isTestMethod 
\ No newline at end of file
diff --git a/SmartTest.package/SmalltalkImage.extension/properties.json b/SmartTest.package/SmalltalkImage.extension/properties.json
deleted file mode 100644
index f581b92..0000000
--- a/SmartTest.package/SmalltalkImage.extension/properties.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-	"name" : "SmalltalkImage"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmartFinder.class/README.md b/SmartTest.package/SmartFinder.class/README.md
deleted file mode 100644
index 2b8f365..0000000
--- a/SmartTest.package/SmartFinder.class/README.md
+++ /dev/null
@@ -1,13 +0,0 @@
-I'm the boss !!!
-
-I contain the instance of all the staff the user need.
-
-If you want to specify some strategy
-use this way
-
-SmartFinder new
-		cache: self cache new;
-		filter: self filter new;
-		testRunner: self runner;
-		smtFinder: self finder new;
-		testingStrategy: self strategy new
\ No newline at end of file
diff --git a/SmartTest.package/SmartFinder.class/instance/autoUpdateCache..st b/SmartTest.package/SmartFinder.class/instance/autoUpdateCache..st
deleted file mode 100644
index 52f863c..0000000
--- a/SmartTest.package/SmartFinder.class/instance/autoUpdateCache..st
+++ /dev/null
@@ -1,5 +0,0 @@
-accessing
-autoUpdateCache: aBoolean
-	self smtListener cacheClass: self cacheClass.
-	self smtListener smtDynamicFinder: self smtFinder.
-	self smtListener class activated: aBoolean
\ No newline at end of file
diff --git a/SmartTest.package/SmartFinder.class/instance/buildCacheFromTestSuite..st b/SmartTest.package/SmartFinder.class/instance/buildCacheFromTestSuite..st
deleted file mode 100644
index 4d07ca0..0000000
--- a/SmartTest.package/SmartFinder.class/instance/buildCacheFromTestSuite..st
+++ /dev/null
@@ -1,4 +0,0 @@
-api
-buildCacheFromTestSuite: aTestSuite
-	"Work only if you have selected a Dynamic strategy"
-	self smtFinder buildCacheFromTestSuite: aTestSuite 
\ No newline at end of file
diff --git a/SmartTest.package/SmartFinder.class/instance/cacheClass..st b/SmartTest.package/SmartFinder.class/instance/cacheClass..st
deleted file mode 100644
index e6d3c1c..0000000
--- a/SmartTest.package/SmartFinder.class/instance/cacheClass..st
+++ /dev/null
@@ -1,5 +0,0 @@
-accessing
-cacheClass: aSmTCacheStrategy
-	cacheClass := aSmTCacheStrategy.
-	cacheClass cache: cache.
-	self smtFinder cache: cacheClass
\ No newline at end of file
diff --git a/SmartTest.package/SmartFinder.class/instance/cacheClass.st b/SmartTest.package/SmartFinder.class/instance/cacheClass.st
deleted file mode 100644
index 6501899..0000000
--- a/SmartTest.package/SmartFinder.class/instance/cacheClass.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-cacheClass
-	^ cacheClass ifNil: [ cacheClass := SmTBasicCacheStrategy new cache: cache ]
\ No newline at end of file
diff --git a/SmartTest.package/SmartFinder.class/instance/cacheValues.st b/SmartTest.package/SmartFinder.class/instance/cacheValues.st
deleted file mode 100644
index ce3bc81..0000000
--- a/SmartTest.package/SmartFinder.class/instance/cacheValues.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-cacheValues
-	^ self cacheClass currentCache
\ No newline at end of file
diff --git a/SmartTest.package/SmartFinder.class/instance/currentCache.st b/SmartTest.package/SmartFinder.class/instance/currentCache.st
deleted file mode 100644
index db747fa..0000000
--- a/SmartTest.package/SmartFinder.class/instance/currentCache.st
+++ /dev/null
@@ -1,3 +0,0 @@
-api
-currentCache
-	^ self cacheClass currentCache 
\ No newline at end of file
diff --git a/SmartTest.package/SmartFinder.class/instance/doFindTestsForMethod..st b/SmartTest.package/SmartFinder.class/instance/doFindTestsForMethod..st
deleted file mode 100644
index 50a5f6e..0000000
--- a/SmartTest.package/SmartFinder.class/instance/doFindTestsForMethod..st
+++ /dev/null
@@ -1,4 +0,0 @@
-api
-doFindTestsForMethod: aCollection 
-	
-	^ self testingStrategy doFindTestsForMethod: aCollection
\ No newline at end of file
diff --git a/SmartTest.package/SmartFinder.class/instance/filter..st b/SmartTest.package/SmartFinder.class/instance/filter..st
deleted file mode 100644
index be3780f..0000000
--- a/SmartTest.package/SmartFinder.class/instance/filter..st
+++ /dev/null
@@ -1,4 +0,0 @@
-accessing
-filter: aSmTDefaultPackagesFilter
-	filter := aSmTDefaultPackagesFilter.
-		self smtFinder filter: aSmTDefaultPackagesFilter
\ No newline at end of file
diff --git a/SmartTest.package/SmartFinder.class/instance/filter.st b/SmartTest.package/SmartFinder.class/instance/filter.st
deleted file mode 100644
index 5bedb47..0000000
--- a/SmartTest.package/SmartFinder.class/instance/filter.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-filter
-	^ filter ifNil: [ filter := SmTDefaultPackagesFilter new ]
\ No newline at end of file
diff --git a/SmartTest.package/SmartFinder.class/instance/findTestsForMethod..st b/SmartTest.package/SmartFinder.class/instance/findTestsForMethod..st
deleted file mode 100644
index 80a087e..0000000
--- a/SmartTest.package/SmartFinder.class/instance/findTestsForMethod..st
+++ /dev/null
@@ -1,4 +0,0 @@
-api
-findTestsForMethod: aCompiledMethod
-
-	^ self testingStrategy findTestsForMethod: aCompiledMethod
\ No newline at end of file
diff --git a/SmartTest.package/SmartFinder.class/instance/hasEmptyCache.st b/SmartTest.package/SmartFinder.class/instance/hasEmptyCache.st
deleted file mode 100644
index e52a2f9..0000000
--- a/SmartTest.package/SmartFinder.class/instance/hasEmptyCache.st
+++ /dev/null
@@ -1,3 +0,0 @@
-testing
-hasEmptyCache
-	^ cacheClass isNil
\ No newline at end of file
diff --git a/SmartTest.package/SmartFinder.class/instance/initialize.st b/SmartTest.package/SmartFinder.class/instance/initialize.st
deleted file mode 100644
index 0e72793..0000000
--- a/SmartTest.package/SmartFinder.class/instance/initialize.st
+++ /dev/null
@@ -1,4 +0,0 @@
-initialization
-initialize
-	cache := Dictionary new.
-	 self shouldTryToFindTestForDynamic: false
\ No newline at end of file
diff --git a/SmartTest.package/SmartFinder.class/instance/resarchTestsForMethod..st b/SmartTest.package/SmartFinder.class/instance/resarchTestsForMethod..st
deleted file mode 100644
index 3078b17..0000000
--- a/SmartTest.package/SmartFinder.class/instance/resarchTestsForMethod..st
+++ /dev/null
@@ -1,4 +0,0 @@
-api
-resarchTestsForMethod: aCompiledMethod 
-
-	^ self smtFinder methodsFor: aCompiledMethod.
\ No newline at end of file
diff --git a/SmartTest.package/SmartFinder.class/instance/resetCache.st b/SmartTest.package/SmartFinder.class/instance/resetCache.st
deleted file mode 100644
index cbf29fd..0000000
--- a/SmartTest.package/SmartFinder.class/instance/resetCache.st
+++ /dev/null
@@ -1,3 +0,0 @@
-api
-resetCache
-	cache removeAll
\ No newline at end of file
diff --git a/SmartTest.package/SmartFinder.class/instance/setCacheValues..st b/SmartTest.package/SmartFinder.class/instance/setCacheValues..st
deleted file mode 100644
index 77ae2a4..0000000
--- a/SmartTest.package/SmartFinder.class/instance/setCacheValues..st
+++ /dev/null
@@ -1,4 +0,0 @@
-api
-setCacheValues: aDictionnary
-	cache := aDictionnary.
-	self cacheClass cache: cache.
\ No newline at end of file
diff --git a/SmartTest.package/SmartFinder.class/instance/shouldTryToFindTestForDynamic..st b/SmartTest.package/SmartFinder.class/instance/shouldTryToFindTestForDynamic..st
deleted file mode 100644
index a299c01..0000000
--- a/SmartTest.package/SmartFinder.class/instance/shouldTryToFindTestForDynamic..st
+++ /dev/null
@@ -1,4 +0,0 @@
-accessing
-shouldTryToFindTestForDynamic: aBoolean
-	shouldTryToFindTestForDynamic := aBoolean.
-	self smtFinder shouldTryToFindTestForDynamic: aBoolean
\ No newline at end of file
diff --git a/SmartTest.package/SmartFinder.class/instance/shouldTryToFindTestForDynamic.st b/SmartTest.package/SmartFinder.class/instance/shouldTryToFindTestForDynamic.st
deleted file mode 100644
index ce10b33..0000000
--- a/SmartTest.package/SmartFinder.class/instance/shouldTryToFindTestForDynamic.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-shouldTryToFindTestForDynamic
-	^ shouldTryToFindTestForDynamic
\ No newline at end of file
diff --git a/SmartTest.package/SmartFinder.class/instance/smtFinder..st b/SmartTest.package/SmartFinder.class/instance/smtFinder..st
deleted file mode 100644
index 43ad1a7..0000000
--- a/SmartTest.package/SmartFinder.class/instance/smtFinder..st
+++ /dev/null
@@ -1,8 +0,0 @@
-accessing
-smtFinder: aSmTTestFinderStrategy
-	smtFinder := aSmTTestFinderStrategy.
-	smtFinder
-		filter: self filter;
-		cache: self cacheClass;
-		shouldTryToFindTestForDynamic: self shouldTryToFindTestForDynamic.
-	self testingStrategy finder: aSmTTestFinderStrategy
\ No newline at end of file
diff --git a/SmartTest.package/SmartFinder.class/instance/smtFinder.st b/SmartTest.package/SmartFinder.class/instance/smtFinder.st
deleted file mode 100644
index 0b24bf6..0000000
--- a/SmartTest.package/SmartFinder.class/instance/smtFinder.st
+++ /dev/null
@@ -1,8 +0,0 @@
-accessing
-smtFinder
-	^ smtFinder
-		ifNil: [ smtFinder := SmTSenderTestFinderStrategy new
-				filter: self filter;
-				cache: self cacheClass;
-				shouldTryToFindTestForDynamic: self shouldTryToFindTestForDynamic;
-				yourself  ]
\ No newline at end of file
diff --git a/SmartTest.package/SmartFinder.class/instance/smtListener.st b/SmartTest.package/SmartFinder.class/instance/smtListener.st
deleted file mode 100644
index cff0bdf..0000000
--- a/SmartTest.package/SmartFinder.class/instance/smtListener.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-smtListener
-	^ SmTTestListener uniqueInstance 
\ No newline at end of file
diff --git a/SmartTest.package/SmartFinder.class/instance/testRunner..st b/SmartTest.package/SmartFinder.class/instance/testRunner..st
deleted file mode 100644
index a975cae..0000000
--- a/SmartTest.package/SmartFinder.class/instance/testRunner..st
+++ /dev/null
@@ -1,4 +0,0 @@
-accessing
-testRunner: aSmTRunnerStrategy
-	testRunner := aSmTRunnerStrategy.
-	self testingStrategy runner: aSmTRunnerStrategy
\ No newline at end of file
diff --git a/SmartTest.package/SmartFinder.class/instance/testRunner.st b/SmartTest.package/SmartFinder.class/instance/testRunner.st
deleted file mode 100644
index ecaa12a..0000000
--- a/SmartTest.package/SmartFinder.class/instance/testRunner.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-testRunner
-	^ testRunner ifNil: [ testRunner := SmTRunnerStrategySmart ]
\ No newline at end of file
diff --git a/SmartTest.package/SmartFinder.class/instance/testingStrategy..st b/SmartTest.package/SmartFinder.class/instance/testingStrategy..st
deleted file mode 100644
index a95a140..0000000
--- a/SmartTest.package/SmartFinder.class/instance/testingStrategy..st
+++ /dev/null
@@ -1,5 +0,0 @@
-accessing
-testingStrategy: aSmTTestingStrategy
-	testingStrategy := aSmTTestingStrategy.
-	testingStrategy runner: self testRunner;
-				finder: self smtFinder
\ No newline at end of file
diff --git a/SmartTest.package/SmartFinder.class/instance/testingStrategy.st b/SmartTest.package/SmartFinder.class/instance/testingStrategy.st
deleted file mode 100644
index b06a04e..0000000
--- a/SmartTest.package/SmartFinder.class/instance/testingStrategy.st
+++ /dev/null
@@ -1,3 +0,0 @@
-accessing
-testingStrategy
-	^ testingStrategy ifNil: [ testingStrategy :=  SmTTestingStrategyEachModification new runner: self testRunner; finder: self smtFinder ]
\ No newline at end of file
diff --git a/SmartTest.package/SmartFinder.class/instance/testsForASetUpMethod..st b/SmartTest.package/SmartFinder.class/instance/testsForASetUpMethod..st
deleted file mode 100644
index 368bab8..0000000
--- a/SmartTest.package/SmartFinder.class/instance/testsForASetUpMethod..st
+++ /dev/null
@@ -1,3 +0,0 @@
-api
-testsForASetUpMethod: aCompiledMethod 
-	^ self smtFinder testsForASetUpMethod: aCompiledMethod
\ No newline at end of file
diff --git a/SmartTest.package/SmartFinder.class/instance/testsForATearDownMethod..st b/SmartTest.package/SmartFinder.class/instance/testsForATearDownMethod..st
deleted file mode 100644
index 7c8e8dc..0000000
--- a/SmartTest.package/SmartFinder.class/instance/testsForATearDownMethod..st
+++ /dev/null
@@ -1,3 +0,0 @@
-api
-testsForATearDownMethod: aCompiledMethod 
-	^ self smtFinder testsForATearDownMethod: aCompiledMethod
\ No newline at end of file
diff --git a/SmartTest.package/SmartFinder.class/instance/testsForATestMethod..st b/SmartTest.package/SmartFinder.class/instance/testsForATestMethod..st
deleted file mode 100644
index 82f154f..0000000
--- a/SmartTest.package/SmartFinder.class/instance/testsForATestMethod..st
+++ /dev/null
@@ -1,3 +0,0 @@
-api
-testsForATestMethod: aCompiledMethod 
-	^ self smtFinder testsForATestMethod: aCompiledMethod
\ No newline at end of file
diff --git a/SmartTest.package/SmartFinder.class/properties.json b/SmartTest.package/SmartFinder.class/properties.json
deleted file mode 100644
index b5f5d7d..0000000
--- a/SmartTest.package/SmartFinder.class/properties.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-	"commentStamp" : "BenoitVerhaeghe 2/28/2018 22:42",
-	"super" : "Object",
-	"category" : "SmartTest",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [
-		"filter",
-		"testRunner",
-		"testingStrategy",
-		"smtFinder",
-		"cacheClass",
-		"shouldTryToFindTestForDynamic",
-		"autoUpdateCache",
-		"smtListener",
-		"cache"
-	],
-	"name" : "SmartFinder",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/SmartFinderTest.class/README.md b/SmartTest.package/SmartFinderTest.class/README.md
deleted file mode 100644
index 9351dc1..0000000
--- a/SmartTest.package/SmartFinderTest.class/README.md
+++ /dev/null
@@ -1 +0,0 @@
-A SmartFinderTest is a test class for testing the behavior of SmartFinder
\ No newline at end of file
diff --git a/SmartTest.package/SmartFinderTest.class/instance/setUp.st b/SmartTest.package/SmartFinderTest.class/instance/setUp.st
deleted file mode 100644
index 88c7644..0000000
--- a/SmartTest.package/SmartFinderTest.class/instance/setUp.st
+++ /dev/null
@@ -1,9 +0,0 @@
-initialization
-setUp
-	smartFinder := SmartFinder new
-		cacheClass: SmTBasicCacheStrategy new;
-		filter: SmTDefaultNullPackagesFilter new;
-		testRunner: SmTRunnerStrategyDebug;
-		smtFinder: SmTSenderTestFinderStrategy new;
-		testingStrategy: SmTTestingStrategyEachModification new;
-		shouldTryToFindTestForDynamic: false
\ No newline at end of file
diff --git a/SmartTest.package/SmartFinderTest.class/instance/testChangeCacheClassFinder.st b/SmartTest.package/SmartFinderTest.class/instance/testChangeCacheClassFinder.st
deleted file mode 100644
index f03b107..0000000
--- a/SmartTest.package/SmartFinderTest.class/instance/testChangeCacheClassFinder.st
+++ /dev/null
@@ -1,7 +0,0 @@
-initialization
-testChangeCacheClassFinder
-	| cacheTmp |
-	smartFinder smtFinder.
-	cacheTmp := SmTBasicCacheStrategy new.
-	smartFinder cacheClass: cacheTmp.
-	self assert: smartFinder smtFinder cache equals: cacheTmp
\ No newline at end of file
diff --git a/SmartTest.package/SmartFinderTest.class/instance/testChangeFilterFinder.st b/SmartTest.package/SmartFinderTest.class/instance/testChangeFilterFinder.st
deleted file mode 100644
index 633c1b0..0000000
--- a/SmartTest.package/SmartFinderTest.class/instance/testChangeFilterFinder.st
+++ /dev/null
@@ -1,7 +0,0 @@
-initialization
-testChangeFilterFinder
-	| filterTmp |
-	smartFinder smtFinder.
-	filterTmp := SmTDefaultPackagesFilter new.
-	smartFinder filter: filterTmp.
-	self assert: smartFinder smtFinder filter equals: filterTmp
\ No newline at end of file
diff --git a/SmartTest.package/SmartFinderTest.class/instance/testChangeFilterTryFindTestFinder.st b/SmartTest.package/SmartFinderTest.class/instance/testChangeFilterTryFindTestFinder.st
deleted file mode 100644
index 9ac4a08..0000000
--- a/SmartTest.package/SmartFinderTest.class/instance/testChangeFilterTryFindTestFinder.st
+++ /dev/null
@@ -1,7 +0,0 @@
-initialization
-testChangeFilterTryFindTestFinder
-	smartFinder smtFinder.
-	smartFinder shouldTryToFindTestForDynamic: true. 
-	self assert: smartFinder smtFinder shouldTryToFindTestForDynamic.
-	smartFinder shouldTryToFindTestForDynamic: false.
-	self deny: smartFinder smtFinder shouldTryToFindTestForDynamic
\ No newline at end of file
diff --git a/SmartTest.package/SmartFinderTest.class/instance/testChangeFinderTestingStrategy.st b/SmartTest.package/SmartFinderTest.class/instance/testChangeFinderTestingStrategy.st
deleted file mode 100644
index c6d0063..0000000
--- a/SmartTest.package/SmartFinderTest.class/instance/testChangeFinderTestingStrategy.st
+++ /dev/null
@@ -1,7 +0,0 @@
-initialization
-testChangeFinderTestingStrategy
-	| finderTmp |
-	smartFinder testingStrategy.
-	finderTmp := SmTSenderTestFinderStrategy new.
-	smartFinder smtFinder: finderTmp.
-	self assert: smartFinder testingStrategy finder equals: finderTmp
\ No newline at end of file
diff --git a/SmartTest.package/SmartFinderTest.class/instance/testChangeRunnerTestingStrategy.st b/SmartTest.package/SmartFinderTest.class/instance/testChangeRunnerTestingStrategy.st
deleted file mode 100644
index a9aa534..0000000
--- a/SmartTest.package/SmartFinderTest.class/instance/testChangeRunnerTestingStrategy.st
+++ /dev/null
@@ -1,7 +0,0 @@
-initialization
-testChangeRunnerTestingStrategy
-	smartFinder testingStrategy.
-	smartFinder testRunner: SmTRunnerStrategyDebug.
-	self assert: smartFinder testingStrategy runner equals: SmTRunnerStrategyDebug.
-	smartFinder testRunner: SmTRunnerStrategyNotice.
-	self assert: smartFinder testingStrategy runner equals: SmTRunnerStrategyNotice
\ No newline at end of file
diff --git a/SmartTest.package/SmartFinderTest.class/instance/testTwoSmartFinderhaveTwoDifferentCache.st b/SmartTest.package/SmartFinderTest.class/instance/testTwoSmartFinderhaveTwoDifferentCache.st
deleted file mode 100644
index 1e36332..0000000
--- a/SmartTest.package/SmartFinderTest.class/instance/testTwoSmartFinderhaveTwoDifferentCache.st
+++ /dev/null
@@ -1,5 +0,0 @@
-initialization
-testTwoSmartFinderhaveTwoDifferentCache
-	| smartFinder2 |
-	smartFinder2 := SmartFinder new.
-	self deny: smartFinder currentCache == smartFinder2 currentCache
\ No newline at end of file
diff --git a/SmartTest.package/SmartFinderTest.class/properties.json b/SmartTest.package/SmartFinderTest.class/properties.json
deleted file mode 100644
index f5cc478..0000000
--- a/SmartTest.package/SmartFinderTest.class/properties.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-	"commentStamp" : "<historical>",
-	"super" : "TestCase",
-	"category" : "SmartTest-Tests",
-	"classinstvars" : [ ],
-	"pools" : [ ],
-	"classvars" : [ ],
-	"instvars" : [
-		"smartFinder"
-	],
-	"name" : "SmartFinderTest",
-	"type" : "normal"
-}
\ No newline at end of file
diff --git a/SmartTest.package/TestAsserter.extension/instance/isTestSuite.st b/SmartTest.package/TestAsserter.extension/instance/isTestSuite.st
deleted file mode 100644
index a3f60f7..0000000
--- a/SmartTest.package/TestAsserter.extension/instance/isTestSuite.st
+++ /dev/null
@@ -1,3 +0,0 @@
-*SmartTest
-isTestSuite
-	^ false
\ No newline at end of file
diff --git a/SmartTest.package/TestAsserter.extension/properties.json b/SmartTest.package/TestAsserter.extension/properties.json
deleted file mode 100644
index 1ee87cb..0000000
--- a/SmartTest.package/TestAsserter.extension/properties.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-	"name" : "TestAsserter"
-}
\ No newline at end of file
diff --git a/SmartTest.package/TestCase.extension/class/allTestMethods.st b/SmartTest.package/TestCase.extension/class/allTestMethods.st
deleted file mode 100644
index 2f67a65..0000000
--- a/SmartTest.package/TestCase.extension/class/allTestMethods.st
+++ /dev/null
@@ -1,4 +0,0 @@
-*SmartTest
-allTestMethods
-	^ self  methods select: [:aCompiledMethod| 
-							   aCompiledMethod isTestMethod].
\ No newline at end of file
diff --git a/SmartTest.package/TestCase.extension/class/generalAnnouncer.st b/SmartTest.package/TestCase.extension/class/generalAnnouncer.st
deleted file mode 100644
index c048a0e..0000000
--- a/SmartTest.package/TestCase.extension/class/generalAnnouncer.st
+++ /dev/null
@@ -1,3 +0,0 @@
-*SmartTest
-generalAnnouncer
-	^ SmTAnnouncer announcer
\ No newline at end of file
diff --git a/SmartTest.package/TestCase.extension/class/shouldAnnounce.st b/SmartTest.package/TestCase.extension/class/shouldAnnounce.st
deleted file mode 100644
index 5d9bebe..0000000
--- a/SmartTest.package/TestCase.extension/class/shouldAnnounce.st
+++ /dev/null
@@ -1,3 +0,0 @@
-*SmartTest
-shouldAnnounce
-	^ SmTAnnouncer shouldAnnounce 
\ No newline at end of file
diff --git a/SmartTest.package/TestCase.extension/instance/announce.withResult..st b/SmartTest.package/TestCase.extension/instance/announce.withResult..st
deleted file mode 100644
index 320f818..0000000
--- a/SmartTest.package/TestCase.extension/instance/announce.withResult..st
+++ /dev/null
@@ -1,11 +0,0 @@
-*SmartTest
-announce: anAnnouncementClass withResult: result
-	| event |
-	self shouldAnnounce
-		ifFalse: [ ^ self ].
-		
-	event := anAnnouncementClass asAnnouncement.
-	event testCase: self.
-	event testSelector: testSelector.
-	event testResult: result.
-	self generalAnnouncer announce: event
\ No newline at end of file
diff --git a/SmartTest.package/TestCase.extension/instance/generalAnnouncer.st b/SmartTest.package/TestCase.extension/instance/generalAnnouncer.st
deleted file mode 100644
index 29c83d3..0000000
--- a/SmartTest.package/TestCase.extension/instance/generalAnnouncer.st
+++ /dev/null
@@ -1,3 +0,0 @@
-*SmartTest
-generalAnnouncer
-	^ self class generalAnnouncer
\ No newline at end of file
diff --git a/SmartTest.package/TestCase.extension/instance/methodReference.st b/SmartTest.package/TestCase.extension/instance/methodReference.st
deleted file mode 100644
index 63b469a..0000000
--- a/SmartTest.package/TestCase.extension/instance/methodReference.st
+++ /dev/null
@@ -1,3 +0,0 @@
-*SmartTest
-methodReference
-	^ RGMethodDefinition class: self class selector: self selector
\ No newline at end of file
diff --git a/SmartTest.package/TestCase.extension/properties.json b/SmartTest.package/TestCase.extension/properties.json
deleted file mode 100644
index a3fb0af..0000000
--- a/SmartTest.package/TestCase.extension/properties.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-	"name" : "TestCase"
-}
\ No newline at end of file
diff --git a/SmartTest.package/TestSuite.extension/instance/flatCollectTests.st b/SmartTest.package/TestSuite.extension/instance/flatCollectTests.st
deleted file mode 100644
index b7487f9..0000000
--- a/SmartTest.package/TestSuite.extension/instance/flatCollectTests.st
+++ /dev/null
@@ -1,9 +0,0 @@
-*SmartTest
-flatCollectTests
-	^ tests
-		ifNil: [ ^ {} ]
-		ifNotNil: [ tests
-				flatCollect: [ :t | 
-					t isTestSuite
-						ifTrue: [ t flatCollectTests ]
-						ifFalse: [ {t} ] ] ]
\ No newline at end of file
diff --git a/SmartTest.package/TestSuite.extension/instance/isTestSuite.st b/SmartTest.package/TestSuite.extension/instance/isTestSuite.st
deleted file mode 100644
index 9e3e4f7..0000000
--- a/SmartTest.package/TestSuite.extension/instance/isTestSuite.st
+++ /dev/null
@@ -1,3 +0,0 @@
-*SmartTest
-isTestSuite
-	^ true
\ No newline at end of file
diff --git a/SmartTest.package/TestSuite.extension/properties.json b/SmartTest.package/TestSuite.extension/properties.json
deleted file mode 100644
index c8d279a..0000000
--- a/SmartTest.package/TestSuite.extension/properties.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-	"name" : "TestSuite"
-}
\ No newline at end of file
diff --git a/SmartTest.package/monticello.meta/categories.st b/SmartTest.package/monticello.meta/categories.st
deleted file mode 100644
index 910169e..0000000
--- a/SmartTest.package/monticello.meta/categories.st
+++ /dev/null
@@ -1,15 +0,0 @@
-SystemOrganization addCategory: #SmartTest!
-SystemOrganization addCategory: 'SmartTest-Cache'!
-SystemOrganization addCategory: 'SmartTest-Collector'!
-SystemOrganization addCategory: 'SmartTest-Critiques'!
-SystemOrganization addCategory: 'SmartTest-Event'!
-SystemOrganization addCategory: 'SmartTest-Filter'!
-SystemOrganization addCategory: 'SmartTest-Finder'!
-SystemOrganization addCategory: 'SmartTest-Listener'!
-SystemOrganization addCategory: 'SmartTest-Morph'!
-SystemOrganization addCategory: 'SmartTest-Rules'!
-SystemOrganization addCategory: 'SmartTest-Runner'!
-SystemOrganization addCategory: 'SmartTest-Testing'!
-SystemOrganization addCategory: 'SmartTest-Tests'!
-SystemOrganization addCategory: 'SmartTest-Tests-Data'!
-SystemOrganization addCategory: 'SmartTest-Tools'!
diff --git a/SmartTest.package/monticello.meta/initializers.st b/SmartTest.package/monticello.meta/initializers.st
deleted file mode 100644
index e69de29..0000000
diff --git a/SmartTest.package/monticello.meta/package b/SmartTest.package/monticello.meta/package
deleted file mode 100644
index 803c6d8..0000000
--- a/SmartTest.package/monticello.meta/package
+++ /dev/null
@@ -1 +0,0 @@
-(name 'SmartTest')
\ No newline at end of file
diff --git a/SmartTest.package/properties.json b/SmartTest.package/properties.json
deleted file mode 100644
index 6f31cf5..0000000
--- a/SmartTest.package/properties.json
+++ /dev/null
@@ -1 +0,0 @@
-{ }
\ No newline at end of file
diff --git a/src/.properties b/src/.properties
new file mode 100644
index 0000000..4e21084
--- /dev/null
+++ b/src/.properties
@@ -0,0 +1,4 @@
+{
+	#format : #tonel
+}e
+}
\ No newline at end of file
diff --git a/src/BaselineOfSmartTest/BaselineOfSmartTest.class.st b/src/BaselineOfSmartTest/BaselineOfSmartTest.class.st
new file mode 100644
index 0000000..3459806
--- /dev/null
+++ b/src/BaselineOfSmartTest/BaselineOfSmartTest.class.st
@@ -0,0 +1,40 @@
+Class {
+	#name : #BaselineOfSmartTest,
+	#superclass : #BaselineOf,
+	#category : 'BaselineOfSmartTest'
+}
+
+{ #category : #baselines }
+BaselineOfSmartTest >> baseline: spec [
+	<baseline>
+	spec
+		for: #common
+		do: [ self defineDependencies: spec.
+			self definePackages: spec.
+			self defineGroups: spec]
+]
+
+{ #category : #baselines }
+BaselineOfSmartTest >> defineDependencies: spec [ 
+]
+
+{ #category : #baselines }
+BaselineOfSmartTest >> defineGroups: spec [
+	spec group: 'default' with: #('SmartTest' 'SmartTest-UI');
+				group: 'test' with: #('SmartTest-Tests');
+				group: 'all' with: #('default' 'test')
+]
+
+{ #category : #baselines }
+BaselineOfSmartTest >> definePackages: spec [
+	spec
+		repository: 'github://badetitou/SmartTest';
+		package: 'SmartTest' with: [ spec requires: #('SmartTest-UI') ];
+		package: 'SmartTest-Tests' with: [ spec requires: #('SmartTest' 'SmartTest-Tests-Data' 'SmartTestDataOutsideP1' 'SmartTestDataOutsideP3' 'SmartTestDataOutsideP2' 'SmartTestDataOutsideP4') ];
+		package: 'SmartTestDataOutsideP1' with: [ spec requires: #('SmartTest' 'SmartTestDataOutsideP3' 'SmartTestDataOutsideP2') ];
+		package: 'SmartTestDataOutsideP2' with: [ spec requires: #('SmartTest') ];
+		package: 'SmartTestDataOutsideP3' with: [ spec requires: #('SmartTest' 'SmartTestDataOutsideP4') ];
+		package: 'SmartTestDataOutsideP4' with: [ spec requires: #('SmartTest') ];
+		package: 'SmartTest-Tests-Data' with: [ spec requires: #('SmartTest') ];
+		package: 'SmartTest-UI'
+]
diff --git a/src/BaselineOfSmartTest/package.st b/src/BaselineOfSmartTest/package.st
new file mode 100644
index 0000000..68f1cef
--- /dev/null
+++ b/src/BaselineOfSmartTest/package.st
@@ -0,0 +1 @@
+Package { #name : #BaselineOfSmartTest }
diff --git a/src/ConfigurationOfSmartTest/ConfigurationOfSmartTest.class.st b/src/ConfigurationOfSmartTest/ConfigurationOfSmartTest.class.st
new file mode 100644
index 0000000..10cd252
--- /dev/null
+++ b/src/ConfigurationOfSmartTest/ConfigurationOfSmartTest.class.st
@@ -0,0 +1,142 @@
+Class {
+	#name : #ConfigurationOfSmartTest,
+	#superclass : #Object,
+	#instVars : [
+		'project'
+	],
+	#classVars : [
+		'LastVersionLoad'
+	],
+	#category : 'ConfigurationOfSmartTest'
+}
+
+{ #category : #'development support' }
+ConfigurationOfSmartTest class >> DevelopmentSupport [
+	<apiDocumentation>
+	
+]
+
+{ #category : #'development support' }
+ConfigurationOfSmartTest class >> baseConfigurationClassIfAbsent: arg1 [
+	^ Smalltalk
+		at: #ConfigurationOf
+		ifAbsent: [ self ensureMetacelloBaseConfiguration.
+			Smalltalk at: #ConfigurationOf ifAbsent: arg1 ]
+]
+
+{ #category : #'development support' }
+ConfigurationOfSmartTest class >> ensureMetacello [
+	(self baseConfigurationClassIfAbsent: [  ]) ensureMetacello
+]
+
+{ #category : #'development support' }
+ConfigurationOfSmartTest class >> ensureMetacelloBaseConfiguration [
+	Smalltalk
+		at: #ConfigurationOf
+		ifAbsent: [ | tmp2 tmp3 |
+			tmp2 := MCHttpRepository
+				location: 'http://smalltalkhub.com/mc/dkh/metacello/main'
+				user: ''
+				password: ''.
+			tmp2
+				versionReaderForFileNamed: 'Metacello-Base-dkh.107'
+				do: [ :arg1 | 
+					tmp3 := arg1 version.
+					tmp3 load.
+					tmp3 workingCopy repositoryGroup addRepository: tmp2 ] ]
+]
+
+{ #category : #'development support' }
+ConfigurationOfSmartTest class >> isMetacelloConfig [
+	^ true
+]
+
+{ #category : #'development support' }
+ConfigurationOfSmartTest class >> load [
+	<apiDocumentation>
+	^ (self project version: #stable) load
+]
+
+{ #category : #'development support' }
+ConfigurationOfSmartTest class >> loadBleedingEdge [
+	<apiDocumentation>
+	^ (self project version: #bleedingEdge) load
+]
+
+{ #category : #'development support' }
+ConfigurationOfSmartTest class >> loadDevelopment [
+	<apiDocumentation>
+	^ (self project version: #development) load
+]
+
+{ #category : #'development support' }
+ConfigurationOfSmartTest class >> project [
+	^ self new project
+]
+
+{ #category : #'development support' }
+ConfigurationOfSmartTest class >> validate [
+	<apiDocumentation>
+	self ensureMetacello.
+	^ ((Smalltalk at: #MetacelloToolBox)
+		validateConfiguration: self
+		debug: #()
+		recurse: false) explore
+]
+
+{ #category : #'symbolic versions' }
+ConfigurationOfSmartTest >> customProjectAttributes [
+	^ #().
+]
+
+{ #category : #'symbolic versions' }
+ConfigurationOfSmartTest >> dev01: spec [
+	<version: 'dev-01'>
+	
+	spec for: #'common' do: [
+  		spec
+			baseline: 'SmartTest'
+			with: [ 
+				spec 
+					repository: 'github://badetitou/SmartTest' ] ].
+]
+
+{ #category : #'symbolic versions' }
+ConfigurationOfSmartTest >> development: spec [
+	<symbolicVersion: 'development'>
+	
+	spec for: #'common' version: 'dev-01'.
+]
+
+{ #category : #'symbolic versions' }
+ConfigurationOfSmartTest >> master: spec [
+	<version: 'master'>
+	
+	spec for: #'common' do: [
+  		spec
+			baseline: 'SmartTest'
+			with: [ spec repository: 'github://badetitou/SmartTest:master' ] ]
+]
+
+{ #category : #'symbolic versions' }
+ConfigurationOfSmartTest >> project [
+	| tmp1 |
+	tmp1 := project.
+	^ tmp1
+		ifNil: [ self class ensureMetacello.
+			project := MetacelloMCProject new
+				projectAttributes: self customProjectAttributes.
+			(Smalltalk at: #MetacelloVersionConstructor)
+				on: self
+				project: project.
+			project loadType: #linear.
+			project ]
+		ifNotNil: [ tmp1 ]
+]
+
+{ #category : #'symbolic versions' }
+ConfigurationOfSmartTest >> stable: spec [
+	<symbolicVersion: #'stable'>
+
+	spec for: #'common' version: 'master'.
+]
diff --git a/src/ConfigurationOfSmartTest/package.st b/src/ConfigurationOfSmartTest/package.st
new file mode 100644
index 0000000..f85c1bc
--- /dev/null
+++ b/src/ConfigurationOfSmartTest/package.st
@@ -0,0 +1 @@
+Package { #name : #ConfigurationOfSmartTest }
diff --git a/src/SmartTest-Tests-Data/SmTClass.class.st b/src/SmartTest-Tests-Data/SmTClass.class.st
new file mode 100644
index 0000000..f3481e7
--- /dev/null
+++ b/src/SmartTest-Tests-Data/SmTClass.class.st
@@ -0,0 +1,42 @@
+"
+A class and some methods to test SmartTest.
+The companion class SmTClassTest contains tests that invoke these methods
+
+The idea is that asking for the tests that run for example #method1, we should get SmTClassTest>>testMethod1
+
+"
+Class {
+	#name : #SmTClass,
+	#superclass : #Object,
+	#instVars : [
+		'instVar1',
+		'instVar2'
+	],
+	#category : 'SmartTest-Tests-Data'
+}
+
+{ #category : #'test data' }
+SmTClass >> method1 [
+	"this is data for SmTFinderAbstractTest tests"
+	^ instVar1 
+	
+]
+
+{ #category : #'test data' }
+SmTClass >> method2 [
+	"this is data for SmTFinderAbstractTest tests"
+	self method3: self method1
+]
+
+{ #category : #'test data' }
+SmTClass >> method3: anObject [
+	"this is data for SmTFinderAbstractTest tests"
+	instVar2 := anObject.
+	self method4
+]
+
+{ #category : #'test data' }
+SmTClass >> method4 [
+	"this is data for SmTFinderAbstractTest tests"
+	^ instVar2
+]
diff --git a/SmartTest.package/SmTClass.class/README.md b/src/SmartTest-Tests-Data/SmTClass2.class.st
similarity index 50%
rename from SmartTest.package/SmTClass.class/README.md
rename to src/SmartTest-Tests-Data/SmTClass2.class.st
index 5baf143..d5dbcc3 100644
--- a/SmartTest.package/SmTClass.class/README.md
+++ b/src/SmartTest-Tests-Data/SmTClass2.class.st
@@ -1,4 +1,21 @@
+"
 A class and some methods to test SmartTest.
 The companion class SmTClassTest contains tests that invoke these methods
 
 The idea is that asking for the tests that run for example #method1, we should get SmTClassTest>>testMethod1
+
+"
+Class {
+	#name : #SmTClass2,
+	#superclass : #Object,
+	#instVars : [
+		'instVar1',
+		'instVar2'
+	],
+	#category : 'SmartTest-Tests-Data'
+}
+
+{ #category : #initialization }
+SmTClass2 >> initialize [
+	instVar1 := nil.
+]
diff --git a/src/SmartTest-Tests-Data/SmTClassTest.class.st b/src/SmartTest-Tests-Data/SmTClassTest.class.st
new file mode 100644
index 0000000..1177b9c
--- /dev/null
+++ b/src/SmartTest-Tests-Data/SmTClassTest.class.st
@@ -0,0 +1,54 @@
+"
+Companion class of SmTClass totest SmartTest.
+
+Each test here exercise a method of SmTClass
+
+"
+Class {
+	#name : #SmTClassTest,
+	#superclass : #TestCase,
+	#category : 'SmartTest-Tests-Data'
+}
+
+{ #category : #'test data' }
+SmTClassTest >> setUp [
+	"this is data for SmTFinderAbstractTest tests"
+]
+
+{ #category : #'test data' }
+SmTClassTest >> tearDown [
+	"this is data for SmTFinderAbstractTest tests"
+]
+
+{ #category : #'test data' }
+SmTClassTest >> testMethod1 [
+	"this is data for SmTFinderAbstractTest tests"
+	^ SmTClass new method1 
+	
+]
+
+{ #category : #'test data' }
+SmTClassTest >> testMethod2 [
+	"this is data for SmTFinderAbstractTest tests"
+	^ SmTClass new method2 
+	
+]
+
+{ #category : #'test data' }
+SmTClassTest >> testMethod3 [
+	"this is data for SmTFinderAbstractTest tests"
+	^ SmTClass new method3: 3. 
+	
+]
+
+{ #category : #'test data' }
+SmTClassTest >> testMethod4 [
+	"this is data for SmTFinderAbstractTest tests"
+	^ SmTClass new method4 
+	
+]
+
+{ #category : #'test data' }
+SmTClassTest >> testMethod5 [
+	^ SmTClass2 new. 
+]
diff --git a/src/SmartTest-Tests-Data/SmTInheritClassTest.class.st b/src/SmartTest-Tests-Data/SmTInheritClassTest.class.st
new file mode 100644
index 0000000..285e49d
--- /dev/null
+++ b/src/SmartTest-Tests-Data/SmTInheritClassTest.class.st
@@ -0,0 +1,14 @@
+"
+A test to test if SmartTest works with inherited tests.
+This is the concrete class that executes the tests of its superclass
+"
+Class {
+	#name : #SmTInheritClassTest,
+	#superclass : #SmTSuperClassTest,
+	#category : 'SmartTest-Tests-Data'
+}
+
+{ #category : #initialization }
+SmTInheritClassTest >> setUp [
+	smTtestClass := SmTClass new
+]
diff --git a/src/SmartTest-Tests-Data/SmTSuperClassTest.class.st b/src/SmartTest-Tests-Data/SmTSuperClassTest.class.st
new file mode 100644
index 0000000..f924ca4
--- /dev/null
+++ b/src/SmartTest-Tests-Data/SmTSuperClassTest.class.st
@@ -0,0 +1,25 @@
+"
+A test to test if SmartTest works with inherited tests.
+This is an abstract class that is never really executed
+
+"
+Class {
+	#name : #SmTSuperClassTest,
+	#superclass : #TestCase,
+	#instVars : [
+		'smTtestClass'
+	],
+	#category : 'SmartTest-Tests-Data'
+}
+
+{ #category : #testing }
+SmTSuperClassTest class >> isAbstract [
+
+	^ self  == SmTSuperClassTest 
+]
+
+{ #category : #tests }
+SmTSuperClassTest >> testMethod1 [
+	^ smTtestClass method1
+	
+]
diff --git a/src/SmartTest-Tests-Data/package.st b/src/SmartTest-Tests-Data/package.st
new file mode 100644
index 0000000..c93b74b
--- /dev/null
+++ b/src/SmartTest-Tests-Data/package.st
@@ -0,0 +1 @@
+Package { #name : #'SmartTest-Tests-Data' }
diff --git a/src/SmartTest-Tests/SmTCacheBuilderReflectivityNeverResetTest.class.st b/src/SmartTest-Tests/SmTCacheBuilderReflectivityNeverResetTest.class.st
new file mode 100644
index 0000000..70c091c
--- /dev/null
+++ b/src/SmartTest-Tests/SmTCacheBuilderReflectivityNeverResetTest.class.st
@@ -0,0 +1,13 @@
+"
+These tests are here to assert that the build cache methods are correct when dealing the Reflectivity strategy and the never reset cache.
+"
+Class {
+	#name : #SmTCacheBuilderReflectivityNeverResetTest,
+	#superclass : #SmTCacheBuilderReflectivityTest,
+	#category : 'SmartTest-Tests-CacheBuilder'
+}
+
+{ #category : #initialization }
+SmTCacheBuilderReflectivityNeverResetTest >> cacheStrategy [
+^ SmTBasicCacheNeverResetStrategy 
+]
diff --git a/src/SmartTest-Tests/SmTCacheBuilderReflectivityResetEvery5ChangesTest.class.st b/src/SmartTest-Tests/SmTCacheBuilderReflectivityResetEvery5ChangesTest.class.st
new file mode 100644
index 0000000..891e958
--- /dev/null
+++ b/src/SmartTest-Tests/SmTCacheBuilderReflectivityResetEvery5ChangesTest.class.st
@@ -0,0 +1,13 @@
+"
+These tests are here to assert that the build cache methods are correct when dealing the Reflectivity strategy and the reset every 5 changes cache.
+"
+Class {
+	#name : #SmTCacheBuilderReflectivityResetEvery5ChangesTest,
+	#superclass : #SmTCacheBuilderReflectivityTest,
+	#category : 'SmartTest-Tests-CacheBuilder'
+}
+
+{ #category : #initialization }
+SmTCacheBuilderReflectivityResetEvery5ChangesTest >> cacheStrategy [
+^ SmTBasicCacheNeverResetStrategy 
+]
diff --git a/src/SmartTest-Tests/SmTCacheBuilderReflectivityResetEveryCommitTest.class.st b/src/SmartTest-Tests/SmTCacheBuilderReflectivityResetEveryCommitTest.class.st
new file mode 100644
index 0000000..0acab4c
--- /dev/null
+++ b/src/SmartTest-Tests/SmTCacheBuilderReflectivityResetEveryCommitTest.class.st
@@ -0,0 +1,13 @@
+"
+These tests are here to assert that the build cache methods are correct when dealing the Reflectivity strategy and the reset every commit cache.
+"
+Class {
+	#name : #SmTCacheBuilderReflectivityResetEveryCommitTest,
+	#superclass : #SmTCacheBuilderReflectivityTest,
+	#category : 'SmartTest-Tests-CacheBuilder'
+}
+
+{ #category : #initialization }
+SmTCacheBuilderReflectivityResetEveryCommitTest >> cacheStrategy [
+^ SmTBasicCacheNeverResetStrategy 
+]
diff --git a/src/SmartTest-Tests/SmTCacheBuilderReflectivityResetOnDemandTest.class.st b/src/SmartTest-Tests/SmTCacheBuilderReflectivityResetOnDemandTest.class.st
new file mode 100644
index 0000000..1cf60a7
--- /dev/null
+++ b/src/SmartTest-Tests/SmTCacheBuilderReflectivityResetOnDemandTest.class.st
@@ -0,0 +1,13 @@
+"
+These tests are here to assert that the build cache methods are correct when dealing the Reflectivity strategy and the reset on demand cache.
+"
+Class {
+	#name : #SmTCacheBuilderReflectivityResetOnDemandTest,
+	#superclass : #SmTCacheBuilderReflectivityTest,
+	#category : 'SmartTest-Tests-CacheBuilder'
+}
+
+{ #category : #initialization }
+SmTCacheBuilderReflectivityResetOnDemandTest >> cacheStrategy [ 
+^ SmTBasicCacheStrategy 
+]
diff --git a/src/SmartTest-Tests/SmTCacheBuilderReflectivityTest.class.st b/src/SmartTest-Tests/SmTCacheBuilderReflectivityTest.class.st
new file mode 100644
index 0000000..c9c06a3
--- /dev/null
+++ b/src/SmartTest-Tests/SmTCacheBuilderReflectivityTest.class.st
@@ -0,0 +1,83 @@
+"
+These tests are here to assert that the build cache methods are correct when dealing with different cache strategies and the Reflectivity strategy.
+"
+Class {
+	#name : #SmTCacheBuilderReflectivityTest,
+	#superclass : #SmTCacheBuilderTest,
+	#category : 'SmartTest-Tests-CacheBuilder'
+}
+
+{ #category : #testing }
+SmTCacheBuilderReflectivityTest class >> isAbstract [
+	^ self == SmTCacheBuilderReflectivityTest
+]
+
+{ #category : #tests }
+SmTCacheBuilderReflectivityTest >> dynamicFinder [
+	^ SmTReflectivityTestFinderStrategy new
+]
+
+{ #category : #tests }
+SmTCacheBuilderReflectivityTest >> testRunningTestMethod1ToBuildCache [
+	<CORATestBlacklisted>
+	self assert: smartFinder currentCache isEmpty.
+	SmTClassTest run: #testMethod1.
+	"Running the test fill the cache that is then no more empty but contains only the association between SmTClass>>method1 and SmTClassTest>>testMethod1"
+	self assert: smartFinder currentCache isNotEmpty.
+
+	"Not sure about the format of the dictionnary."
+	self
+		assert: (smartFinder currentCache at: ((SmTClass >> #method1) asRingDefinition ))
+		equals: {(SmTClassTest >> #testMethod1) asRingDefinition } asSet
+]
+
+{ #category : #tests }
+SmTCacheBuilderReflectivityTest >> testRunningTestMethod2ToBuildCache [
+	<CORATestBlacklisted>
+	self assert: smartFinder currentCache isEmpty.
+	SmTClassTest run: #testMethod2.
+	self assert: smartFinder currentCache isNotEmpty.
+	self
+		assert:
+			(smartFinder currentCache
+				at: (SmTClass >> #method1 )asRingDefinition)
+		equals:
+			{(SmTClassTest >> #testMethod2 )asRingDefinition}
+				asSet.
+
+	"Not sure about the format of the dictionnary."
+	self
+		assert:
+			(smartFinder currentCache
+				at: (SmTClass >> #method2 )asRingDefinition)
+		equals:
+			{(SmTClassTest >> #testMethod2 )asRingDefinition}
+				asSet.
+	self
+		assert:
+			(smartFinder currentCache
+				at: (SmTClass >> #method3: )asRingDefinition)
+		equals:
+			{(SmTClassTest >> #testMethod2 )asRingDefinition}
+				asSet.
+	self
+		assert:
+			(smartFinder currentCache
+				at: (SmTClass >> #method4 )asRingDefinition)
+		equals:
+			{(SmTClassTest >> #testMethod2 )asRingDefinition}
+				asSet
+]
+
+{ #category : #tests }
+SmTCacheBuilderReflectivityTest >> testRunningTestMethod5ToBuildCache [
+	"This test if SmTTestCoverage find the initialize call"
+
+	<CORATestBlacklisted>
+	self assert: smartFinder currentCache isEmpty.
+	SmTClassTest run: #testMethod5.
+	"Running the test fill the cache that is then no more empty but contains only the association between SmTClass>>method1 and SmTClassTest>>testMethod1"
+	self assert: smartFinder currentCache isNotEmpty.
+	self assert: (smartFinder currentCache at: (SmTClass2 >> #initialize) asRingDefinition) equals: {(SmTClassTest >> #testMethod5) asRingDefinition} asSet.
+	self assert: (smartFinder currentCache at: (SmTClassTest >> #testMethod5) asRingDefinition) equals: {(SmTClassTest >> #testMethod5) asRingDefinition} asSet
+]
diff --git a/src/SmartTest-Tests/SmTCacheBuilderTest.class.st b/src/SmartTest-Tests/SmTCacheBuilderTest.class.st
new file mode 100644
index 0000000..0d2aada
--- /dev/null
+++ b/src/SmartTest-Tests/SmTCacheBuilderTest.class.st
@@ -0,0 +1,108 @@
+"
+This class aims to test the construction of the cache in the context of dynamic method analysis with different dynamic strategies and different cache strategies.
+"
+Class {
+	#name : #SmTCacheBuilderTest,
+	#superclass : #TestCase,
+	#instVars : [
+		'cache',
+		'smartFinder'
+	],
+	#category : 'SmartTest-Tests-CacheBuilder'
+}
+
+{ #category : #testing }
+SmTCacheBuilderTest class >> isAbstract [
+
+	^ self  == SmTCacheBuilderTest
+]
+
+{ #category : #initialization }
+SmTCacheBuilderTest >> cacheStrategy [ 
+self subclassResponsibility.
+]
+
+{ #category : #initialization }
+SmTCacheBuilderTest >> dynamicFinder [
+	self subclassResponsibility 
+]
+
+{ #category : #helpers }
+SmTCacheBuilderTest >> searchTestMethodsFor: aCompiledMethod [
+	
+	^ smartFinder researchTestsForMethod: aCompiledMethod .
+]
+
+{ #category : #initialization }
+SmTCacheBuilderTest >> setUp [
+	smartFinder := SmartFinder new.
+	smartFinder filter: SmTDefaultClassPackagesFilter new.
+	"the cache is initially empty"
+	smartFinder autoUpdateCache: false.
+	smartFinder cacheStrategy: self cacheStrategy new.
+	smartFinder resetCache.
+	smartFinder smtFinder: self dynamicFinder.
+	smartFinder autoUpdateCache: true
+]
+
+{ #category : #initialization }
+SmTCacheBuilderTest >> tearDown [
+	smartFinder autoUpdateCache: false.
+	smartFinder clean.
+	super tearDown
+]
+
+{ #category : #tests }
+SmTCacheBuilderTest >> testResearchTestsForStandardMethodWhileEmptyCache [
+	<CORATestBlacklisted>
+	| testsFound |
+	self assert: smartFinder currentCache isEmpty.
+	testsFound := self searchTestMethodsFor: SmTClass >> #method2.
+	self assert: smartFinder currentCache isEmpty.
+	self assert: testsFound isEmpty.
+	
+
+]
+
+{ #category : #tests }
+SmTCacheBuilderTest >> testRunningTestMethod1ToBuildCache [
+	<CORATestBlacklisted>
+	self assert: smartFinder currentCache isEmpty.
+	SmTClassTest run: #testMethod1.
+	"Running the test fill the cache that is then no more empty but contains only the association between SmTClass>>method1 and SmTClassTest>>testMethod1"
+	self assert: smartFinder currentCache isNotEmpty.
+	self assert: smartFinder currentCache size equals: 2.
+
+	"Not sure about the format of the dictionnary."
+	self assert: (smartFinder currentCache at: (SmTClass >> #method1) asRingDefinition) equals: {(SmTClassTest >> #testMethod1) asRingDefinition} asSet
+]
+
+{ #category : #tests }
+SmTCacheBuilderTest >> testRunningTestMethod2ToBuildCache [
+	<CORATestBlacklisted>
+	self assert: smartFinder currentCache isEmpty.
+	SmTClassTest run: #testMethod2.
+	"Running the test fills the cache that is then no more empty but contains only the association between SmTClass>>methodi (with i = 1 to 4) and SmTClassTest>>testMethod2. The cache should contain 5 associations one for each method as key and testMethod2 asValue"
+	self assert: smartFinder currentCache isNotEmpty.
+	self assert: smartFinder currentCache size equals: 5.
+	self assert: (smartFinder currentCache at: (SmTClass >> #method1) asRingDefinition) equals: {(SmTClassTest >> #testMethod2) asRingDefinition} asSet.
+
+	"Not sure about the format of the dictionnary."
+	self assert: (smartFinder currentCache at: (SmTClass >> #method2) asRingDefinition) equals: {(SmTClassTest >> #testMethod2) asRingDefinition} asSet.
+	self assert: (smartFinder currentCache at: (SmTClass >> #method3:) asRingDefinition) equals: {(SmTClassTest >> #testMethod2) asRingDefinition} asSet.
+	self assert: (smartFinder currentCache at: (SmTClass >> #method4) asRingDefinition) equals: {(SmTClassTest >> #testMethod2) asRingDefinition} asSet
+]
+
+{ #category : #tests }
+SmTCacheBuilderTest >> testRunningTestMethod5ToBuildCache [
+	"This test if SmTTestCoverage find the initialize call"
+
+	<CORATestBlacklisted>
+	self assert: smartFinder currentCache isEmpty.
+	SmTClassTest run: #testMethod5.
+	"Running the test fill the cache that is then no more empty but contains only the association between SmTClass2>>initialize and SmTClassTest>>testMethod5"
+	self assert: smartFinder currentCache isNotEmpty.
+	self assert: smartFinder currentCache size equals: 2.
+	self assert: (smartFinder currentCache at: (SmTClass2 >> #initialize) asRingDefinition) equals: {(SmTClassTest >> #testMethod5) asRingDefinition} asSet.
+	self assert: (smartFinder currentCache at: (SmTClassTest >> #testMethod5) asRingDefinition) equals: {(SmTClassTest >> #testMethod5) asRingDefinition} asSet
+]
diff --git a/src/SmartTest-Tests/SmTCacheBuilderTestCoverageNeverResetTest.class.st b/src/SmartTest-Tests/SmTCacheBuilderTestCoverageNeverResetTest.class.st
new file mode 100644
index 0000000..55e5aa9
--- /dev/null
+++ b/src/SmartTest-Tests/SmTCacheBuilderTestCoverageNeverResetTest.class.st
@@ -0,0 +1,13 @@
+"
+These tests are here to assert that the build cache methods are correct when dealing the Test Coverage strategy and the never reset cache.
+"
+Class {
+	#name : #SmTCacheBuilderTestCoverageNeverResetTest,
+	#superclass : #SmTCacheBuilderTestCoverageTest,
+	#category : 'SmartTest-Tests-CacheBuilder'
+}
+
+{ #category : #initialization }
+SmTCacheBuilderTestCoverageNeverResetTest >> cacheStrategy [
+^ SmTBasicCacheNeverResetStrategy 
+]
diff --git a/src/SmartTest-Tests/SmTCacheBuilderTestCoverageResetEvery5ChangesTest.class.st b/src/SmartTest-Tests/SmTCacheBuilderTestCoverageResetEvery5ChangesTest.class.st
new file mode 100644
index 0000000..5061105
--- /dev/null
+++ b/src/SmartTest-Tests/SmTCacheBuilderTestCoverageResetEvery5ChangesTest.class.st
@@ -0,0 +1,13 @@
+"
+These tests are here to assert that the build cache methods are correct when dealing the Test Coverage strategy and the reset every 5 changes cache.
+"
+Class {
+	#name : #SmTCacheBuilderTestCoverageResetEvery5ChangesTest,
+	#superclass : #SmTCacheBuilderTestCoverageTest,
+	#category : 'SmartTest-Tests-CacheBuilder'
+}
+
+{ #category : #initialization }
+SmTCacheBuilderTestCoverageResetEvery5ChangesTest >> cacheStrategy [
+^ SmTBasicCacheResetEvery5ChangesStrategy 
+]
diff --git a/src/SmartTest-Tests/SmTCacheBuilderTestCoverageResetEveryCommitTest.class.st b/src/SmartTest-Tests/SmTCacheBuilderTestCoverageResetEveryCommitTest.class.st
new file mode 100644
index 0000000..9e47e97
--- /dev/null
+++ b/src/SmartTest-Tests/SmTCacheBuilderTestCoverageResetEveryCommitTest.class.st
@@ -0,0 +1,13 @@
+"
+These tests are here to assert that the build cache methods are correct when dealing the Test Coverage strategy and the reset every commits cache.
+"
+Class {
+	#name : #SmTCacheBuilderTestCoverageResetEveryCommitTest,
+	#superclass : #SmTCacheBuilderTestCoverageTest,
+	#category : 'SmartTest-Tests-CacheBuilder'
+}
+
+{ #category : #initialization }
+SmTCacheBuilderTestCoverageResetEveryCommitTest >> cacheStrategy [
+^ SmTBasicCacheResetEveryCommitStrategy 
+]
diff --git a/src/SmartTest-Tests/SmTCacheBuilderTestCoverageResetOnDemandTest.class.st b/src/SmartTest-Tests/SmTCacheBuilderTestCoverageResetOnDemandTest.class.st
new file mode 100644
index 0000000..b21d7be
--- /dev/null
+++ b/src/SmartTest-Tests/SmTCacheBuilderTestCoverageResetOnDemandTest.class.st
@@ -0,0 +1,13 @@
+"
+These tests are here to assert that the build cache methods are correct when dealing the Test Coverage strategy and the reset on demand cache.
+"
+Class {
+	#name : #SmTCacheBuilderTestCoverageResetOnDemandTest,
+	#superclass : #SmTCacheBuilderTestCoverageTest,
+	#category : 'SmartTest-Tests-CacheBuilder'
+}
+
+{ #category : #initialization }
+SmTCacheBuilderTestCoverageResetOnDemandTest >> cacheStrategy [ 
+^ SmTBasicCacheStrategy 
+]
diff --git a/src/SmartTest-Tests/SmTCacheBuilderTestCoverageTest.class.st b/src/SmartTest-Tests/SmTCacheBuilderTestCoverageTest.class.st
new file mode 100644
index 0000000..9bb31ce
--- /dev/null
+++ b/src/SmartTest-Tests/SmTCacheBuilderTestCoverageTest.class.st
@@ -0,0 +1,18 @@
+"
+These tests are here to assert that the build cache methods are correct when dealing with different cache strategies.
+"
+Class {
+	#name : #SmTCacheBuilderTestCoverageTest,
+	#superclass : #SmTCacheBuilderTest,
+	#category : 'SmartTest-Tests-CacheBuilder'
+}
+
+{ #category : #testing }
+SmTCacheBuilderTestCoverageTest class >> isAbstract [
+^ self == SmTCacheBuilderTestCoverageTest
+]
+
+{ #category : #initialization }
+SmTCacheBuilderTestCoverageTest >> dynamicFinder [
+	^ SmTTestCoverageTestFinderStrategy new
+]
diff --git a/src/SmartTest-Tests/SmTCacheNeverResetTest.class.st b/src/SmartTest-Tests/SmTCacheNeverResetTest.class.st
new file mode 100644
index 0000000..12e7ec0
--- /dev/null
+++ b/src/SmartTest-Tests/SmTCacheNeverResetTest.class.st
@@ -0,0 +1,10 @@
+Class {
+	#name : #SmTCacheNeverResetTest,
+	#superclass : #SmTCacheTest,
+	#category : 'SmartTest-Tests-Cache'
+}
+
+{ #category : #running }
+SmTCacheNeverResetTest >> strategyTested [
+^ SmTBasicCacheNeverResetStrategy  
+]
diff --git a/src/SmartTest-Tests/SmTCacheResetEvery5ChangesTest.class.st b/src/SmartTest-Tests/SmTCacheResetEvery5ChangesTest.class.st
new file mode 100644
index 0000000..773762d
--- /dev/null
+++ b/src/SmartTest-Tests/SmTCacheResetEvery5ChangesTest.class.st
@@ -0,0 +1,24 @@
+Class {
+	#name : #SmTCacheResetEvery5ChangesTest,
+	#superclass : #SmTCacheTest,
+	#category : 'SmartTest-Tests-Cache'
+}
+
+{ #category : #running }
+SmTCacheResetEvery5ChangesTest >> strategyTested [
+^ SmTBasicCacheResetEvery5ChangesStrategy  
+]
+
+{ #category : #tests }
+SmTCacheResetEvery5ChangesTest >> testResetAfter5MethodChange [
+	"After one method change, the cache should be empty for NeverRest, EveryFiveChange, and EveryCommit case."
+
+	smartFinder cacheStrategy resetCacheForChange: EpMethodAddition new.
+	smartFinder cacheStrategy resetCacheForChange: EpMethodAddition new.
+	smartFinder cacheStrategy resetCacheForChange: EpMethodAddition new.
+	smartFinder cacheStrategy resetCacheForChange: EpMethodAddition new.
+	self assert: smartFinder cacheStrategy numberOfChange == 4.
+	smartFinder cacheStrategy resetCacheForChange: EpMethodAddition new.
+	self assert: smartFinder cacheStrategy numberOfChange == 0.
+	self assert: smartFinder currentCache isEmpty
+]
diff --git a/src/SmartTest-Tests/SmTCacheResetEveryCommitTest.class.st b/src/SmartTest-Tests/SmTCacheResetEveryCommitTest.class.st
new file mode 100644
index 0000000..06adccf
--- /dev/null
+++ b/src/SmartTest-Tests/SmTCacheResetEveryCommitTest.class.st
@@ -0,0 +1,18 @@
+Class {
+	#name : #SmTCacheResetEveryCommitTest,
+	#superclass : #SmTCacheTest,
+	#category : 'SmartTest-Tests-Cache'
+}
+
+{ #category : #running }
+SmTCacheResetEveryCommitTest >> strategyTested [
+^ SmTBasicCacheResetEveryCommitStrategy 
+]
+
+{ #category : #tests }
+SmTCacheResetEveryCommitTest >> testResetAfter1Commit [
+	"After one method change, the cache should be empty for NeverRest, EveryFiveChange, and EveryCommit case."
+
+	smartFinder cacheStrategy resetCacheForChange: EpMonticelloVersionSave new.
+	self assert: smartFinder currentCache isEmpty
+]
diff --git a/src/SmartTest-Tests/SmTCacheResetOnDemandTest.class.st b/src/SmartTest-Tests/SmTCacheResetOnDemandTest.class.st
new file mode 100644
index 0000000..a687990
--- /dev/null
+++ b/src/SmartTest-Tests/SmTCacheResetOnDemandTest.class.st
@@ -0,0 +1,46 @@
+Class {
+	#name : #SmTCacheResetOnDemandTest,
+	#superclass : #SmTCacheTest,
+	#category : 'SmartTest-Tests-Cache'
+}
+
+{ #category : #running }
+SmTCacheResetOnDemandTest >> strategyTested [
+^ SmTBasicCacheStrategy 
+]
+
+{ #category : #tests }
+SmTCacheResetOnDemandTest >> testResetAfter1Commit [
+"After one method change, the cache should be empty for NeverRest, EveryFiveChange, and EveryCommit case."
+smartFinder cacheStrategy resetCacheForChange: EpMonticelloVersionSave new.
+self assert: (smartFinder currentCache isEmpty)
+]
+
+{ #category : #tests }
+SmTCacheResetOnDemandTest >> testResetAfter1MethodChange [
+"Here, the cache should be empty because the BasicCache strategy allows that the reset of the cache"
+smartFinder cacheStrategy resetCacheForChange: EpMethodAddition new.
+self assert: (smartFinder currentCache isEmpty)
+]
+
+{ #category : #tests }
+SmTCacheResetOnDemandTest >> testResetAfter4MethodChange [
+	"After one method change, the cache should be empty for NeverRest, EveryFiveChange, and EveryCommit case."
+
+	smartFinder cacheStrategy resetCacheForChange: EpMethodAddition new.
+	smartFinder cacheStrategy resetCacheForChange: EpMethodAddition new.
+	smartFinder cacheStrategy resetCacheForChange: EpMethodAddition new.
+	smartFinder cacheStrategy resetCacheForChange: EpMethodAddition new.
+	self assert: smartFinder currentCache isEmpty
+]
+
+{ #category : #tests }
+SmTCacheResetOnDemandTest >> testResetAfter5MethodChange [
+"After one method change, the cache should be empty for NeverRest, EveryFiveChange, and EveryCommit case."
+smartFinder cacheStrategy resetCacheForChange: EpMethodAddition new.
+smartFinder cacheStrategy resetCacheForChange: EpMethodAddition new.
+smartFinder cacheStrategy resetCacheForChange: EpMethodAddition new.
+smartFinder cacheStrategy resetCacheForChange: EpMethodAddition new.
+smartFinder cacheStrategy resetCacheForChange: EpMethodAddition new.
+self assert: (smartFinder currentCache isEmpty)
+]
diff --git a/src/SmartTest-Tests/SmTCacheTest.class.st b/src/SmartTest-Tests/SmTCacheTest.class.st
new file mode 100644
index 0000000..bffec80
--- /dev/null
+++ b/src/SmartTest-Tests/SmTCacheTest.class.st
@@ -0,0 +1,115 @@
+"
+This tests are here to assert that cache strategies behave corectly.
+- BasicCacheNeverReset should always have something in it.
+- BasicCacheResetEvery5Changes should reset after 5 calls to its reset method
+- BasicCacheResetEveryCommit should reset after each change that is a commit, and not the methods changes.
+- BasicCache should reset each time its method reset is called
+
+"
+Class {
+	#name : #SmTCacheTest,
+	#superclass : #TestCase,
+	#instVars : [
+		'cache',
+		'smartFinder'
+	],
+	#category : 'SmartTest-Tests-Cache'
+}
+
+{ #category : #testing }
+SmTCacheTest class >> isAbstract [
+^ (self == SmTCacheTest)
+]
+
+{ #category : #'initialize-release' }
+SmTCacheTest >> initCache [
+	^ {((SmTClass >> #method1) asRingDefinition
+		->
+			{(SmTClassTest >> #testMethod1) asRingDefinition.
+			(SmTClassTest >> #testMethod2) asRingDefinition.
+			(RGMethodDefinition
+				className: 'SmTInheritClassTest'
+				selector: #testMethod1
+				isMetaSide: false)} asSet).
+	((SmTClass >> #method2) asRingDefinition
+		-> {(SmTClassTest >> #testMethod2) asRingDefinition} asSet).
+	((SmTClass >> #method3:) asRingDefinition
+		->
+			{(SmTClassTest >> #testMethod1) asRingDefinition.
+			(SmTClassTest >> #testMethod2) asRingDefinition.
+			(SmTClassTest >> #testMethod3) asRingDefinition} asSet).
+	((SmTClass >> #method4) asRingDefinition
+		->
+			{(SmTClassTest >> #testMethod2) asRingDefinition.
+			(SmTClassTest >> #testMethod3) asRingDefinition.
+			(SmTClassTest >> #testMethod4) asRingDefinition} asSet).
+	((SmTClass2 >> #initialize) asRingDefinition
+		-> {(SmTClassTest >> #testMethod5) asRingDefinition} asSet).
+	((SmTClassTest >> #testMethod4) asRingDefinition
+		-> {(SmTClassTest >> #testMethod4) asRingDefinition} asSet).
+	((('SmTP1' , 'Inheritance') asClass >> ('method1' , 'Inheritance') asSymbol)
+		asRingDefinition
+		->
+			{(('SmTP1' , 'InheritanceSubClass1Test') asClass >> ('testMethod1','Inheritance') asSymbol)
+				asRingDefinition.
+			(RGMethodDefinition className: ('SmTP1InheritanceSubClass2','Test') selector:	('testMethod1','Inheritance') isMetaSide:	false)
+				asRingDefinition} asSet)} asDictionary
+]
+
+{ #category : #running }
+SmTCacheTest >> setUp [
+	"fill in the cache"
+
+	| initialCache |
+	super setUp.
+	smartFinder := SmartFinder new.
+	initialCache := self initCache.
+	smartFinder cacheStrategy: (self strategyTested new).
+	smartFinder setCacheValues: initialCache.
+	smartFinder smtFinder: SmTTestCoverageTestFinderStrategy new
+]
+
+{ #category : #running }
+SmTCacheTest >> strategyTested [
+self subclassResponsibility 
+]
+
+{ #category : #tests }
+SmTCacheTest >> testInitCache [
+self assert: (smartFinder currentCache isNotEmpty).
+]
+
+{ #category : #tests }
+SmTCacheTest >> testResetAfter1Commit [
+"After one method change, the cache should be empty for NeverRest, EveryFiveChange, and EveryCommit case."
+smartFinder cacheStrategy resetCacheForChange: EpMonticelloVersionSave new.
+self assert: (smartFinder currentCache isNotEmpty)
+]
+
+{ #category : #tests }
+SmTCacheTest >> testResetAfter1MethodChange [
+"After one method change, the cache should be empty for NeverRest, EveryFiveChange, and EveryCommit case."
+smartFinder cacheStrategy resetCacheForChange: EpMethodAddition new.
+self assert: (smartFinder currentCache isNotEmpty)
+]
+
+{ #category : #tests }
+SmTCacheTest >> testResetAfter4MethodChange [
+"After one method change, the cache should be empty for NeverRest, EveryFiveChange, and EveryCommit case."
+smartFinder cacheStrategy resetCacheForChange: EpMethodAddition new.
+smartFinder cacheStrategy resetCacheForChange: EpMethodAddition new.
+smartFinder cacheStrategy resetCacheForChange: EpMethodAddition new.
+smartFinder cacheStrategy resetCacheForChange: EpMethodAddition new.
+self assert: (smartFinder currentCache isNotEmpty)
+]
+
+{ #category : #tests }
+SmTCacheTest >> testResetAfter5MethodChange [
+"After one method change, the cache should be empty for NeverRest, EveryFiveChange, and EveryCommit case."
+smartFinder cacheStrategy resetCacheForChange: EpMethodAddition new.
+smartFinder cacheStrategy resetCacheForChange: EpMethodAddition new.
+smartFinder cacheStrategy resetCacheForChange: EpMethodAddition new.
+smartFinder cacheStrategy resetCacheForChange: EpMethodAddition new.
+smartFinder cacheStrategy resetCacheForChange: EpMethodAddition new.
+self assert: (smartFinder currentCache isNotEmpty)
+]
diff --git a/src/SmartTest-Tests/SmTDynamicCoverageStrategyBasicCacheNeverResetTest.class.st b/src/SmartTest-Tests/SmTDynamicCoverageStrategyBasicCacheNeverResetTest.class.st
new file mode 100644
index 0000000..447bb5b
--- /dev/null
+++ b/src/SmartTest-Tests/SmTDynamicCoverageStrategyBasicCacheNeverResetTest.class.st
@@ -0,0 +1,81 @@
+Class {
+	#name : #SmTDynamicCoverageStrategyBasicCacheNeverResetTest,
+	#superclass : #SmTFinderAbstractTest,
+	#category : 'SmartTest-Tests-Finder'
+}
+
+{ #category : #running }
+SmTDynamicCoverageStrategyBasicCacheNeverResetTest >> initCache [
+	^ {((SmTClass >> #method1) asRingDefinition
+		->
+			{(SmTClassTest >> #testMethod1) asRingDefinition.
+			(SmTClassTest >> #testMethod2) asRingDefinition.
+			(RGMethodDefinition
+				className: 'SmTInheritClassTest'
+				selector: #testMethod1
+				isMetaSide: false)} asSet).
+	((SmTClass >> #method2) asRingDefinition
+		-> {(SmTClassTest >> #testMethod2) asRingDefinition} asSet).
+	((SmTClass >> #method3:) asRingDefinition
+		->
+			{(SmTClassTest >> #testMethod1) asRingDefinition.
+			(SmTClassTest >> #testMethod2) asRingDefinition.
+			(SmTClassTest >> #testMethod3) asRingDefinition} asSet).
+	((SmTClass >> #method4) asRingDefinition
+		->
+			{(SmTClassTest >> #testMethod2) asRingDefinition.
+			(SmTClassTest >> #testMethod3) asRingDefinition.
+			(SmTClassTest >> #testMethod4) asRingDefinition} asSet).
+	((SmTClass2 >> #initialize) asRingDefinition
+		-> {(SmTClassTest >> #testMethod5) asRingDefinition} asSet).
+	((SmTClassTest >> #testMethod4) asRingDefinition
+		-> {(SmTClassTest >> #testMethod4) asRingDefinition} asSet).
+	((('SmTP1' , 'Inheritance') asClass >> ('method1' , 'Inheritance') asSymbol)
+		asRingDefinition
+		->
+			{(('SmTP1' , 'InheritanceSubClass1Test') asClass >> ('testMethod1','Inheritance') asSymbol)
+				asRingDefinition.
+			(RGMethodDefinition className: ('SmTP1InheritanceSubClass2','Test') selector:	('testMethod1','Inheritance') isMetaSide:	false)
+				asRingDefinition} asSet)} asDictionary
+]
+
+{ #category : #running }
+SmTDynamicCoverageStrategyBasicCacheNeverResetTest >> setUp [
+	"fill in the cache"
+
+	| initialCache |
+	super setUp.
+	initialCache := self initCache.
+	smartFinder cacheStrategy: (SmTBasicCacheNeverResetStrategy new).
+	smartFinder setCacheValues: initialCache.
+	smartFinder smtFinder: SmTTestCoverageTestFinderStrategy new
+]
+
+{ #category : #helpers }
+SmTDynamicCoverageStrategyBasicCacheNeverResetTest >> tearDown [
+	smartFinder resetCache.
+]
+
+{ #category : #tests }
+SmTDynamicCoverageStrategyBasicCacheNeverResetTest >> testModificationOnTest [
+"this method is redundant with the abstract method"
+	<CORATestBlacklisted>
+	| testsFound |
+	testsFound := self searchTestMethodsFor: SmTClassTest >> #testMethod4.
+	self deny: (testsFound includes: testMethod1).
+	self deny: (testsFound includes: testMethod2).
+	self deny: (testsFound includes: testMethod3).
+	self assert: (testsFound includes: testMethod4)
+]
+
+{ #category : #tests }
+SmTDynamicCoverageStrategyBasicCacheNeverResetTest >> testTestSelfSelected [
+"this method is redundant with the abstract method"
+	<CORATestBlacklisted>
+	| testsFound |
+	testsFound := self searchTestsForATestMethod: SmTClassTest >> #testMethod1.
+	self assert: (testsFound includes: testMethod1).
+	self deny: (testsFound includes: testMethod2).
+	self deny: (testsFound includes: testMethod3).
+	self deny: (testsFound includes: testMethod4)
+]
diff --git a/src/SmartTest-Tests/SmTDynamicCoverageStrategyBasicCacheResetEvery5ChangesTest.class.st b/src/SmartTest-Tests/SmTDynamicCoverageStrategyBasicCacheResetEvery5ChangesTest.class.st
new file mode 100644
index 0000000..5c577b2
--- /dev/null
+++ b/src/SmartTest-Tests/SmTDynamicCoverageStrategyBasicCacheResetEvery5ChangesTest.class.st
@@ -0,0 +1,81 @@
+Class {
+	#name : #SmTDynamicCoverageStrategyBasicCacheResetEvery5ChangesTest,
+	#superclass : #SmTFinderAbstractTest,
+	#category : 'SmartTest-Tests-Finder'
+}
+
+{ #category : #running }
+SmTDynamicCoverageStrategyBasicCacheResetEvery5ChangesTest >> initCache [
+	^ {((SmTClass >> #method1) asRingDefinition
+		->
+			{(SmTClassTest >> #testMethod1) asRingDefinition.
+			(SmTClassTest >> #testMethod2) asRingDefinition.
+			(RGMethodDefinition
+				className: 'SmTInheritClassTest'
+				selector: #testMethod1
+				isMetaSide: false)} asSet).
+	((SmTClass >> #method2) asRingDefinition
+		-> {(SmTClassTest >> #testMethod2) asRingDefinition} asSet).
+	((SmTClass >> #method3:) asRingDefinition
+		->
+			{(SmTClassTest >> #testMethod1) asRingDefinition.
+			(SmTClassTest >> #testMethod2) asRingDefinition.
+			(SmTClassTest >> #testMethod3) asRingDefinition} asSet).
+	((SmTClass >> #method4) asRingDefinition
+		->
+			{(SmTClassTest >> #testMethod2) asRingDefinition.
+			(SmTClassTest >> #testMethod3) asRingDefinition.
+			(SmTClassTest >> #testMethod4) asRingDefinition} asSet).
+	((SmTClass2 >> #initialize) asRingDefinition
+		-> {(SmTClassTest >> #testMethod5) asRingDefinition} asSet).
+	((SmTClassTest >> #testMethod4) asRingDefinition
+		-> {(SmTClassTest >> #testMethod4) asRingDefinition} asSet).
+	((('SmTP1' , 'Inheritance') asClass >> ('method1' , 'Inheritance') asSymbol)
+		asRingDefinition
+		->
+			{(('SmTP1' , 'InheritanceSubClass1Test') asClass >> ('testMethod1','Inheritance') asSymbol)
+				asRingDefinition.
+			(RGMethodDefinition className: ('SmTP1InheritanceSubClass2','Test') selector:	('testMethod1','Inheritance') isMetaSide:	false)
+				asRingDefinition} asSet)} asDictionary
+]
+
+{ #category : #running }
+SmTDynamicCoverageStrategyBasicCacheResetEvery5ChangesTest >> setUp [
+	"fill in the cache"
+
+	| initialCache |
+	super setUp.
+	initialCache := self initCache.
+	smartFinder cacheStrategy: (SmTBasicCacheResetEvery5ChangesStrategy new).
+	smartFinder setCacheValues: initialCache.
+	smartFinder smtFinder: SmTTestCoverageTestFinderStrategy new
+]
+
+{ #category : #helpers }
+SmTDynamicCoverageStrategyBasicCacheResetEvery5ChangesTest >> tearDown [
+	smartFinder resetCache.
+]
+
+{ #category : #tests }
+SmTDynamicCoverageStrategyBasicCacheResetEvery5ChangesTest >> testModificationOnTest [
+"this method is redundant with the abstract method"
+	<CORATestBlacklisted>
+	| testsFound |
+	testsFound := self searchTestMethodsFor: SmTClassTest >> #testMethod4.
+	self deny: (testsFound includes: testMethod1).
+	self deny: (testsFound includes: testMethod2).
+	self deny: (testsFound includes: testMethod3).
+	self assert: (testsFound includes: testMethod4)
+]
+
+{ #category : #tests }
+SmTDynamicCoverageStrategyBasicCacheResetEvery5ChangesTest >> testTestSelfSelected [
+"this method is redundant with the abstract method"
+	<CORATestBlacklisted>
+	| testsFound |
+	testsFound := self searchTestsForATestMethod: SmTClassTest >> #testMethod1.
+	self assert: (testsFound includes: testMethod1).
+	self deny: (testsFound includes: testMethod2).
+	self deny: (testsFound includes: testMethod3).
+	self deny: (testsFound includes: testMethod4)
+]
diff --git a/src/SmartTest-Tests/SmTDynamicCoverageStrategyBasicCacheResetEveryCommitTest.class.st b/src/SmartTest-Tests/SmTDynamicCoverageStrategyBasicCacheResetEveryCommitTest.class.st
new file mode 100644
index 0000000..868788c
--- /dev/null
+++ b/src/SmartTest-Tests/SmTDynamicCoverageStrategyBasicCacheResetEveryCommitTest.class.st
@@ -0,0 +1,81 @@
+Class {
+	#name : #SmTDynamicCoverageStrategyBasicCacheResetEveryCommitTest,
+	#superclass : #SmTFinderAbstractTest,
+	#category : 'SmartTest-Tests-Finder'
+}
+
+{ #category : #running }
+SmTDynamicCoverageStrategyBasicCacheResetEveryCommitTest >> initCache [
+	^ {((SmTClass >> #method1) asRingDefinition
+		->
+			{(SmTClassTest >> #testMethod1) asRingDefinition.
+			(SmTClassTest >> #testMethod2) asRingDefinition.
+			(RGMethodDefinition
+				className: 'SmTInheritClassTest'
+				selector: #testMethod1
+				isMetaSide: false)} asSet).
+	((SmTClass >> #method2) asRingDefinition
+		-> {(SmTClassTest >> #testMethod2) asRingDefinition} asSet).
+	((SmTClass >> #method3:) asRingDefinition
+		->
+			{(SmTClassTest >> #testMethod1) asRingDefinition.
+			(SmTClassTest >> #testMethod2) asRingDefinition.
+			(SmTClassTest >> #testMethod3) asRingDefinition} asSet).
+	((SmTClass >> #method4) asRingDefinition
+		->
+			{(SmTClassTest >> #testMethod2) asRingDefinition.
+			(SmTClassTest >> #testMethod3) asRingDefinition.
+			(SmTClassTest >> #testMethod4) asRingDefinition} asSet).
+	((SmTClass2 >> #initialize) asRingDefinition
+		-> {(SmTClassTest >> #testMethod5) asRingDefinition} asSet).
+	((SmTClassTest >> #testMethod4) asRingDefinition
+		-> {(SmTClassTest >> #testMethod4) asRingDefinition} asSet).
+	((('SmTP1' , 'Inheritance') asClass >> ('method1' , 'Inheritance') asSymbol)
+		asRingDefinition
+		->
+			{(('SmTP1' , 'InheritanceSubClass1Test') asClass >> ('testMethod1','Inheritance') asSymbol)
+				asRingDefinition.
+			(RGMethodDefinition className: ('SmTP1InheritanceSubClass2','Test') selector:	('testMethod1','Inheritance') isMetaSide:	false)
+				asRingDefinition} asSet)} asDictionary
+]
+
+{ #category : #running }
+SmTDynamicCoverageStrategyBasicCacheResetEveryCommitTest >> setUp [
+	"fill in the cache"
+
+	| initialCache |
+	super setUp.
+	initialCache := self initCache.
+	smartFinder cacheStrategy: (SmTBasicCacheResetEveryCommitStrategy  new).
+	smartFinder setCacheValues: initialCache.
+	smartFinder smtFinder: SmTTestCoverageTestFinderStrategy new
+]
+
+{ #category : #helpers }
+SmTDynamicCoverageStrategyBasicCacheResetEveryCommitTest >> tearDown [
+	smartFinder resetCache.
+]
+
+{ #category : #tests }
+SmTDynamicCoverageStrategyBasicCacheResetEveryCommitTest >> testModificationOnTest [
+"this method is redundant with the abstract method"
+	<CORATestBlacklisted>
+	| testsFound |
+	testsFound := self searchTestMethodsFor: SmTClassTest >> #testMethod4.
+	self deny: (testsFound includes: testMethod1).
+	self deny: (testsFound includes: testMethod2).
+	self deny: (testsFound includes: testMethod3).
+	self assert: (testsFound includes: testMethod4)
+]
+
+{ #category : #tests }
+SmTDynamicCoverageStrategyBasicCacheResetEveryCommitTest >> testTestSelfSelected [
+"this method is redundant with the abstract method"
+	<CORATestBlacklisted>
+	| testsFound |
+	testsFound := self searchTestsForATestMethod: SmTClassTest >> #testMethod1.
+	self assert: (testsFound includes: testMethod1).
+	self deny: (testsFound includes: testMethod2).
+	self deny: (testsFound includes: testMethod3).
+	self deny: (testsFound includes: testMethod4)
+]
diff --git a/src/SmartTest-Tests/SmTDynamicCoverageStrategyTest.class.st b/src/SmartTest-Tests/SmTDynamicCoverageStrategyTest.class.st
new file mode 100644
index 0000000..20208b0
--- /dev/null
+++ b/src/SmartTest-Tests/SmTDynamicCoverageStrategyTest.class.st
@@ -0,0 +1,84 @@
+"
+In this class, the research is dynamic and it uses the finder TestCoverage.
+"
+Class {
+	#name : #SmTDynamicCoverageStrategyTest,
+	#superclass : #SmTFinderAbstractTest,
+	#category : 'SmartTest-Tests-Finder'
+}
+
+{ #category : #running }
+SmTDynamicCoverageStrategyTest >> initCache [
+	^ {((SmTClass >> #method1) asRingDefinition
+		->
+			{(SmTClassTest >> #testMethod1) asRingDefinition.
+			(SmTClassTest >> #testMethod2) asRingDefinition.
+			(RGMethodDefinition
+				className: 'SmTInheritClassTest'
+				selector: #testMethod1
+				isMetaSide: false)} asSet).
+	((SmTClass >> #method2) asRingDefinition
+		-> {(SmTClassTest >> #testMethod2) asRingDefinition} asSet).
+	((SmTClass >> #method3:) asRingDefinition
+		->
+			{(SmTClassTest >> #testMethod1) asRingDefinition.
+			(SmTClassTest >> #testMethod2) asRingDefinition.
+			(SmTClassTest >> #testMethod3) asRingDefinition} asSet).
+	((SmTClass >> #method4) asRingDefinition
+		->
+			{(SmTClassTest >> #testMethod2) asRingDefinition.
+			(SmTClassTest >> #testMethod3) asRingDefinition.
+			(SmTClassTest >> #testMethod4) asRingDefinition} asSet).
+	((SmTClass2 >> #initialize) asRingDefinition
+		-> {(SmTClassTest >> #testMethod5) asRingDefinition} asSet).
+	((SmTClassTest >> #testMethod4) asRingDefinition
+		-> {(SmTClassTest >> #testMethod4) asRingDefinition} asSet).
+	((('SmTP1' , 'Inheritance') asClass >> ('method1' , 'Inheritance') asSymbol)
+		asRingDefinition
+		->
+			{(('SmTP1' , 'InheritanceSubClass1Test') asClass >> ('testMethod1','Inheritance') asSymbol)
+				asRingDefinition.
+			(RGMethodDefinition className: ('SmTP1InheritanceSubClass2','Test') selector:	('testMethod1','Inheritance') isMetaSide:	false)
+				asRingDefinition} asSet)} asDictionary
+]
+
+{ #category : #running }
+SmTDynamicCoverageStrategyTest >> setUp [
+	"fill in the cache"
+
+	| initialCache |
+	super setUp.
+	initialCache := self initCache.
+	smartFinder cacheStrategy: (SmTBasicCacheStrategy new).
+	smartFinder setCacheValues: initialCache.
+	smartFinder smtFinder: SmTTestCoverageTestFinderStrategy new
+]
+
+{ #category : #helpers }
+SmTDynamicCoverageStrategyTest >> tearDown [
+	smartFinder resetCache.
+]
+
+{ #category : #tests }
+SmTDynamicCoverageStrategyTest >> testModificationOnTest [
+"this method is redundant with the abstract method"
+	<CORATestBlacklisted>
+	| testsFound |
+	testsFound := self searchTestMethodsFor: SmTClassTest >> #testMethod4.
+	self deny: (testsFound includes: testMethod1).
+	self deny: (testsFound includes: testMethod2).
+	self deny: (testsFound includes: testMethod3).
+	self assert: (testsFound includes: testMethod4)
+]
+
+{ #category : #tests }
+SmTDynamicCoverageStrategyTest >> testTestSelfSelected [
+"this method is redundant with the abstract method"
+	<CORATestBlacklisted>
+	| testsFound |
+	testsFound := self searchTestsForATestMethod: SmTClassTest >> #testMethod1.
+	self assert: (testsFound includes: testMethod1).
+	self deny: (testsFound includes: testMethod2).
+	self deny: (testsFound includes: testMethod3).
+	self deny: (testsFound includes: testMethod4)
+]
diff --git a/src/SmartTest-Tests/SmTDynamicReflectivityStrategyTest.class.st b/src/SmartTest-Tests/SmTDynamicReflectivityStrategyTest.class.st
new file mode 100644
index 0000000..5d4c1af
--- /dev/null
+++ b/src/SmartTest-Tests/SmTDynamicReflectivityStrategyTest.class.st
@@ -0,0 +1,54 @@
+"
+A SmTFinderStrategyReflectivityTest is a test class for testing the behavior of SmTFinderStrategyReflectivity
+"
+Class {
+	#name : #SmTDynamicReflectivityStrategyTest,
+	#superclass : #SmTFinderAbstractTest,
+	#category : 'SmartTest-Tests-Finder'
+}
+
+{ #category : #initialization }
+SmTDynamicReflectivityStrategyTest >> initCache [
+	^ {((SmTClass >> #method1) asRingDefinition
+		->
+			{(SmTClassTest >> #testMethod1) asRingDefinition.
+			(SmTClassTest >> #testMethod2) asRingDefinition.
+			(RGMethodDefinition
+				className: 'SmTInheritClassTest'
+				selector: #testMethod1
+				isMetaSide: false)} asSet).
+	((SmTClass >> #method2) asRingDefinition
+		-> {(SmTClassTest >> #testMethod2) asRingDefinition} asSet).
+	((SmTClass >> #method3:) asRingDefinition
+		->
+			{(SmTClassTest >> #testMethod1) asRingDefinition.
+			(SmTClassTest >> #testMethod2) asRingDefinition.
+			(SmTClassTest >> #testMethod3) asRingDefinition} asSet).
+	((SmTClass >> #method4) asRingDefinition
+		->
+			{(SmTClassTest >> #testMethod2) asRingDefinition.
+			(SmTClassTest >> #testMethod3) asRingDefinition.
+			(SmTClassTest >> #testMethod4) asRingDefinition} asSet).
+	((SmTClass2 >> #initialize) asRingDefinition
+		-> {(SmTClassTest >> #testMethod5) asRingDefinition} asSet).
+	((SmTClassTest >> #testMethod4) asRingDefinition
+		-> {(SmTClassTest >> #testMethod4) asRingDefinition} asSet).
+	((('SmTP1' , 'Inheritance') asClass >> ('method1' , 'Inheritance') asSymbol)
+		asRingDefinition
+		->
+			{(('SmTP1' , 'InheritanceSubClass1Test') asClass >> ('testMethod1','Inheritance') asSymbol)
+				asRingDefinition.
+			(RGMethodDefinition className: ('SmTP1InheritanceSubClass2','Test') selector:	('testMethod1','Inheritance') asSymbol isMetaSide:	false)} asSet)} asDictionary
+]
+
+{ #category : #running }
+SmTDynamicReflectivityStrategyTest >> setUp [
+	"fill in the cache"
+
+	| initialCache |
+	super setUp.
+	initialCache := self initCache.
+	smartFinder cacheStrategy: SmTBasicCacheStrategy new.
+	smartFinder setCacheValues: initialCache.
+	smartFinder smtFinder: SmTReflectivityTestFinderStrategy new
+]
diff --git a/src/SmartTest-Tests/SmTFilterAbstractTest.class.st b/src/SmartTest-Tests/SmTFilterAbstractTest.class.st
new file mode 100644
index 0000000..afbc8ff
--- /dev/null
+++ b/src/SmartTest-Tests/SmTFilterAbstractTest.class.st
@@ -0,0 +1,504 @@
+"
+I test the strategy SendersFinder with different filters.
+In order to be sure that those test are not considered as callers of the modified method and as references to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method.
+
+
+The tests are described below:
+The modified method’s name always contains « method1 » and will be refered to as method1.
+The modified method can be used directly by a test, in this case the test’s name contains « testMethod1 » 
+The modified method can be used by a method (and then a test), then the method’s name contains « method2 »
+Method 2 will then be called by a test (the second level sender of method1) and this test's name contains « testMethod2 »
+The names of the methods and tests will be followed by a identificator. This will result in very long names but it is necessary in order to be unique and explicit.
+Being unique, the senders of each method are controlled and consequently the tests are independent the one from the others.
+
+If the name of a test contains « FirstLevelSender » then the corresponding method2 and testMethod2 do not exist.
+If the name of a test contains « SecondLevelSender » then the corresponding testMethod1 does not exist.
+
+We use the Classification Tree Method to represent the tests (see https://en.wikipedia.org/wiki/Classification_Tree_Method) . 
+
+We will use the Classification Tree Method for the description of the tests.
+Exemple for the first line of the following description: 
+Test FirstLevelSendersInside : the modified method ""method1FirstLevelSendersInside"" is located in package P1 and testMethod1FirstLevelSendersInside calls method1FirstLevelSendersInside and is located inside the package P1.
+
+
+Simple tests (no references):
+Method: 	TestMethod1 		Method2 			TestMethod2 	Test Identificator
+Package: 	P1	P2				P1	P2				P1	P2
+			•	|				|	|				|	|			FirstLevelSendersInside
+			|	•				|	|				|	|			FirstLevelSendersOutside
+			|	|				•	|				•	|			SecondLevelSendersInsideTestInside
+			|	|				•	|				|	•			SecondLevelSendersInsideTestOutside
+			|	|				|	•				•	|			SecondLevelSendersOutsideTestInside
+			|	|				|	•				|	•			SecondLevelSendersOutsideTestOutside
+
+
+Simple tests (no references):
+Method: 			TestMethod1 						Method2 																	TestMethod2 										Test Identificator
+Package: 			P2									P1				P2								P3							P1		P2 	
+Reference: 		Class 	Method Package 			|		Class 	Method Package 		Class 	Method Package 			| 		NoRef 	Class 	Method Package
+					•		|		 |					|		|		|		 |				|		|		 |					|		|		|		|		 |					FirstLevelSendersInsideWithRefInClass
+					|		•		 |					|		|		|		 |				|		|		 |					|		|		|		|		 |					FirstLevelSendersInsideWithRefInMethod
+					|		|		 •					•		|		|		 |				|		|		 |					|		|		•		|		 |					SecondLevelSendersInsideTestOutsideWithRefInClass
+					|		|		 |					•		|		|		 |				|		|		 |					|		|		|		•		 |					SecondLevelSendersInsideTestOutsideWithRefInMethod
+					|		|		 |					•		|		|		 |				|		|		 |					|		|		|		|		 •					SecondLevelSendersInsideTestOutsideWithRefInPackage
+					|		|		 |					|		•		|		 |				|		|		 |					•		|		|		|		 |					SecondLevelSendersOutsidesideTestInsideWithRefInClass
+					|		|		 |					|		|		•		 |				|		|		 |					•		|		|		|		 |					SecondLevelSendersOutsidesideTestInsideWithRefInMethod
+					|		|		 |					|		|		|		 •				|		|		 |					•		|		|		|		 |					SecondLevelSendersOutsidesideTestInsideWithRefInPackage
+					|		|		 |					|		|		|		 |				|		•		 |					|		|		|		•		 |					SecondLevelSendersOutsidesideTestOutsideWithRefInMethod
+"
+Class {
+	#name : #SmTFilterAbstractTest,
+	#superclass : #TestCase,
+	#instVars : [
+		'smartFinder',
+		'testMethod1FirstLevelSendersOutsidePackage',
+		'testMethod2SecondLevelSendersInsidePackageWithTestInside',
+		'testMethod2SecondLevelSendersInsidePackageWithTestOutside',
+		'testMethod2SecondLevelSendersOutsidePackageWithTestOutside',
+		'testmethod1FirstLevelSendersInsidePackage',
+		'testMethod1FirstLevelSendersInsidePackage',
+		'testMethod2SecondLevelSendersOutsidePackageWithTestInside'
+	],
+	#category : 'SmartTest-Tests-Filter'
+}
+
+{ #category : #testing }
+SmTFilterAbstractTest class >> isAbstract [
+
+	^ self  == SmTFilterAbstractTest
+]
+
+{ #category : #helpers }
+SmTFilterAbstractTest >> instanceVariableNamed: aInstVarName fromClass: aClass [ 
+	^ (aClass instanceVariables select:[:instVar| instVar = aInstVarName ])first .
+]
+
+{ #category : #helpers }
+SmTFilterAbstractTest >> searchTestMethodsFor: aCompiledMethod [
+	
+	^ smartFinder researchTestsForMethod: aCompiledMethod .
+]
+
+{ #category : #helpers }
+SmTFilterAbstractTest >> searchTestMethodsForAClass: aClass [
+	
+	^ smartFinder smtFinder searchTestsForAClass: aClass.
+]
+
+{ #category : #helpers }
+SmTFilterAbstractTest >> searchTestsForInstVar: aInstanceVariable ofClass: aClass [
+	^ smartFinder smtFinder searchTestsForAInstVar: aInstanceVariable OfClass: aClass
+]
+
+{ #category : #running }
+SmTFilterAbstractTest >> setUp [
+	super setUp.
+	smartFinder := SmartFinder new.
+	smartFinder filter: SmTDefaultPackagesFilter new.
+	testMethod1FirstLevelSendersInsidePackage := (('SmTClass' , 'TestP1') asClass
+		>> ('test' , 'Method1FirstLevelSendersInsidePackage') asSymbol) asRingDefinition.
+	testMethod1FirstLevelSendersOutsidePackage := (('SmTClass' , 'TestP2Test') asClass
+		>> ('test' , 'Method1FirstLevelSendersOutsidePackage') asSymbol) asRingDefinition.
+	testMethod2SecondLevelSendersInsidePackageWithTestInside := (('SmTClass' , 'TestP1')
+		asClass >> ('test' , 'Method2SecondLevelSendersInsidePackageWithTestInside') asSymbol)
+		asRingDefinition.
+	testMethod2SecondLevelSendersOutsidePackageWithTestInside := (('SmTClass' , 'TestP1')
+		asClass >> ('test' , 'Method2SecondLevelSendersOutsidePackageWithTestInside') asSymbol)
+		asRingDefinition.
+	testMethod2SecondLevelSendersInsidePackageWithTestOutside := (('SmTClass' , 'TestP2Test')
+		asClass >> ('test' , 'Method2SecondLevelSendersInsidePackageWithTestOutside') asSymbol)
+		asRingDefinition.
+	testMethod2SecondLevelSendersOutsidePackageWithTestOutside := (('SmTClass' , 'TestP2Test')
+		asClass
+		>> ('test' , 'Method2SecondLevelSendersOutsidePackageWithTestOutside') asSymbol)
+		asRingDefinition
+]
+
+{ #category : #running }
+SmTFilterAbstractTest >> tearDown [
+	smartFinder clean.
+	super tearDown
+]
+
+{ #category : #'test -modification on class' }
+SmTFilterAbstractTest >> testClassAbstractTestCaseDoesntRedefineMethod [
+"In this test we want to assert that if the modified class has subclasses, SmartTest finds all the inherited methods (implemented or not)"
+	<CORATestBlacklisted>
+	| testsFound testMethodSubClass1 testMethodSubClass2 |
+	testsFound := self searchTestMethodsForAClass: (('SmTP1ClassTestAbstractTestCase') asClass).
+	testMethodSubClass1 := RGMethodDefinition className: ('SmTP1ClassTestSubClassDoesntRedefine','Method') selector:('testModificationOnClassAbstract','TestCase') isMetaSide:	false.
+	testMethodSubClass2 := RGMethodDefinition className: ('SmTP1ClassTestSubclassRedefines','Method') selector:('testModificationOnClassAbstract','TestCase') isMetaSide:	false.
+	self assert: (testsFound includes: testMethodSubClass1).
+	self assert: (testsFound includes: testMethodSubClass2).
+]
+
+{ #category : #'test -modification on class' }
+SmTFilterAbstractTest >> testClassAbstractTestCaseRedefinesMethod [
+"In this test we want to assert that if the modified class has subclasses, SmartTest finds all the inherited methods (implemented or not)"
+	<CORATestBlacklisted>
+	| testsFound testMethodSubClass1 testMethodSubClass2 |
+	testsFound := self searchTestMethodsForAClass: (('SmTP1ClassTestAbstractTestCase') asClass).
+	testMethodSubClass2 := RGMethodDefinition className: ('SmTP1ClassTestSubclassRedefines','Method') selector:('testModificationOnClassAbstract','TestCase') isMetaSide:	false.
+	self assert: (testsFound includes: testMethodSubClass2).
+]
+
+{ #category : #'test -modification on class' }
+SmTFilterAbstractTest >> testClassInheritanceSubClass1 [
+	<CORATestBlacklisted>
+	| testsFound testMethodSubClass2 |
+	testsFound := self searchTestMethodsForAClass: (('SmTP1ClassTestSubClass','DoesntRedefineMethod') asClass).
+	testMethodSubClass2 := RGMethodDefinition className: ('SmTP1ClassTestSubClass','DoesntRedefineMethod') selector:('testModificationOnClass','AbstractTestCase') isMetaSide:	false.
+	self assert: testsFound size equals: 1.
+	self assert: (testsFound includes: testMethodSubClass2).
+]
+
+{ #category : #'test -modification on class' }
+SmTFilterAbstractTest >> testClassInsidePackageWithRef [
+"In this test, we want to assert that if the class is used in a method, we find the tests related to this method."
+	<CORATestBlacklisted>
+	| testsFound  |
+	testsFound := self searchTestMethodsForAClass: ('SmTClassModificationOnClass','InsidePackageWithRef') asClass.
+	self assert: testsFound size equals: 1.
+	self assert: (testsFound includes: ((('SmTClassModificationOnClassInsidePackageTestOutside','WithRefTest') asClass  >> ('testRefToSmTClassModificationOnClassInsidePackageWithRef') asSymbol) asRingDefinition )).
+]
+
+{ #category : #'test -modification on class' }
+SmTFilterAbstractTest >> testClassOutsidePackageWithRef [
+"In this test, we want to assert that if the class is used in a method, we find the tests related to this method."
+	<CORATestBlacklisted>
+	| testsFound  |
+	testsFound := self searchTestMethodsForAClass: ('SmTClassModificationOnClass','OutsidePackageWithRef') asClass.
+	self assert: testsFound size equals: 1.
+	self assert: (testsFound includes: ((('SmTClassModificationOnClassOutsidePackageWith','RefTest') asClass  >> ('testRefToSmTClassModificationOnClass','OutsidePackageWithRef') asSymbol) asRingDefinition )).
+]
+
+{ #category : #'test -modification on class' }
+SmTFilterAbstractTest >> testClassSimpleTestCase [
+"In this test we want to assert that SmartTest finds the test owned directly by a class."
+	<CORATestBlacklisted>
+	| testsFound  |
+	testsFound := self searchTestMethodsForAClass: ('SmTClassModificationOnClass','SimpleTestCase') asClass.
+	self assert: testsFound size equals: 1.
+	self assert: (testsFound includes: ((('SmTClassModificationOnClass','SimpleTestCase') asClass  >> ('testModificationOnClass','SimpleTestCase') asSymbol) asRingDefinition )).
+]
+
+{ #category : #'test -modification on class' }
+SmTFilterAbstractTest >> testClassTestsInside [
+"In this test we want to assert that SmartTest finds the test owned directly by a class."
+	<CORATestBlacklisted>
+	| testsFound  |
+	testsFound := self searchTestMethodsForAClass: ('SmTClassTest','P2Test') asClass.
+	self assert: (testsFound includes: ((('SmTClassTest','P2Test') asClass  >> ('testMethod1FirstLevelSendersOutsideWithRefIn','Class') asSymbol) asRingDefinition )).
+]
+
+{ #category : #'test - extension method' }
+SmTFilterAbstractTest >> testExtensionMethodFirstLevelSendersInside [
+	<CORATestBlacklisted>
+	| testsFound |
+	testsFound := self searchTestMethodsFor:( ('SmT','ExtensionP2Test') asClass >> ('extensionMethod1FirstLevelSenders','Inside') asSymbol).
+	self assert: (testsFound includes: ((('SmT','ClassTestP1') asClass >> ('testExtensionMethod1FirstLevelSenders','Inside') asSymbol) asRingDefinition)).
+	
+]
+
+{ #category : #'test - extension method' }
+SmTFilterAbstractTest >> testExtensionMethodFirstLevelSendersOutside [
+	<CORATestBlacklisted>
+	| testsFound |
+	testsFound := self searchTestMethodsFor:( ('SmT','ExtensionP2Test') asClass >> ('extensionMethod1FirstLevelSenders','Outside') asSymbol).
+	self assert: (testsFound includes: ((('SmT','ClassTestP2Test') asClass >> ('testExtensionMethod1FirstLevelSenders','Outside') asSymbol) asRingDefinition )).
+	
+]
+
+{ #category : #'test - extension method' }
+SmTFilterAbstractTest >> testExtensionMethodSecondLevelSendersInside [
+	<CORATestBlacklisted>
+	| testsFound |
+	testsFound := self searchTestMethodsFor:( ('SmT','ExtensionP1') asClass >> ('extensionMethod1','SecondLevelSenders') asSymbol).
+	
+	self deny: (testsFound includes: ((('SmT','ClassTestP3') asClass >> ('testExtensionMethod2','SecondLevelSenders') asSymbol) asRingDefinition )).
+	
+]
+
+{ #category : #'test - extension method' }
+SmTFilterAbstractTest >> testExtensionTestInside [
+	<CORATestBlacklisted>
+	| testsFound |
+	testsFound := self searchTestMethodsFor:( ('SmT','ExtensionP4') asClass >> ('method1ExtensionTest','Inside') asSymbol).
+	
+	self deny: (testsFound includes: ((('SmT','ClassTestP3') asClass >> ('testMethod1ExtensionTest','Inside') asSymbol) asRingDefinition )).
+	
+]
+
+{ #category : #'test - instance variable' }
+SmTFilterAbstractTest >> testInstVarInsideClass [
+"In this test we want to assert that if the modified class has subclasses, SmartTest finds all the inherited methods (implemented or not)"
+	<CORATestBlacklisted>
+	| testsFound aInstVar|
+	aInstVar := self instanceVariableNamed: 'instVarModificationOnVariableInsideClass' fromClass: (('SmTClassP1ModificationOn','VariableInsideClassTest') asClass).
+	testsFound := self searchTestsForInstVar: aInstVar ofClass: (('SmTClassP1ModificationOn','VariableInsideClassTest') asClass).
+	self assert: (testsFound includes: (('SmTClassP1ModificationOn','VariableInsideClassTest') asClass >> ('testModificationOnVariable','InsideClass')asSymbol)asRingDefinition ).
+	
+]
+
+{ #category : #'test - instance variable' }
+SmTFilterAbstractTest >> testInstVarInsidePackage [
+"In this test we want to assert that if the modified class has subclasses, SmartTest finds all the inherited methods (implemented or not)"
+	<CORATestBlacklisted>
+	| testsFound aInstVar|
+	aInstVar := self instanceVariableNamed: 'instVarModificationOnVariableInsidePackage' fromClass: ('SmTClassP1ModificationOn','Variable') asClass.
+	testsFound := self searchTestsForInstVar: aInstVar ofClass: ('SmTClassP1ModificationOn','Variable') asClass.
+	self assert: (testsFound includes: (('SmTClassP1ModificationOnVariable','InsidePackageTest') asClass >> ('testModificationOnVariable','InsidePackage')asSymbol)asRingDefinition ).
+	
+]
+
+{ #category : #'test - instance variable' }
+SmTFilterAbstractTest >> testInstVarOutsidePackage [
+"In this test we want to assert that if the modified class has subclasses, SmartTest finds all the inherited methods (implemented or not)"
+	<CORATestBlacklisted>
+	| testsFound aInstVar|
+	aInstVar := self instanceVariableNamed: 'instVarModificationOnVariableOutsidePackage' fromClass: ('SmTClassP1ModificationOnVariable') asClass .
+	testsFound := self searchTestsForInstVar: aInstVar ofClass: ('SmTClassP1ModificationOnVariable') asClass.
+	self assert: (testsFound includes: (('SmTClassP1ModificationOnVariable','OutsidePackageTest') asClass >> ('testModificationOnVariable','OutsidePackage')asSymbol)asRingDefinition ).
+	
+]
+
+{ #category : #'test - standard method - first level sender' }
+SmTFilterAbstractTest >> testStandardMethodFirstLevelSendersInsidePackage [
+	<CORATestBlacklisted>
+	"method1 is called by testMethod1, a tests owned by the same package as method1, the only test found should be testMethod1"
+	"In order to be sure that this test is not considered as a caller of the modified method and a reference to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method"
+	
+	| testsFound |
+	testsFound := self searchTestMethodsFor:( ('SmTClass','P1') asClass >> ('method1','FirstLevelSendersInsidePackage') asSymbol).
+	self assert: testsFound size equals: 1.
+	self assert: (testsFound includes: testMethod1FirstLevelSendersInsidePackage).
+	
+	
+	
+]
+
+{ #category : #'test - standard method - first level sender' }
+SmTFilterAbstractTest >> testStandardMethodFirstLevelSendersOutsidePackage [
+	<CORATestBlacklisted>
+	"method1 is called by testMethod2, a test not owned by the same package as method1, thus it should not be found"
+	"In order to be sure that this test is not considered as a caller of the modified method and a reference to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method"
+	
+	| testsFound |
+	testsFound := self searchTestMethodsFor: ( ('SmTClass','P1') asClass >> ('method1','FirstLevelSendersOutsidePackage') asSymbol).
+	self assert: (testsFound isEmpty ).
+	self deny:   (testsFound includes: testMethod1FirstLevelSendersOutsidePackage).
+	
+	
+	
+]
+
+{ #category : #'test - standard method - first level sender' }
+SmTFilterAbstractTest >> testStandardMethodFirstLevelSendersOutsidePackageWithRefInClass [
+	<CORATestBlacklisted>
+	"method1 is called by testMethod1"
+	"P1 : method1
+	 P2 : testMethod1, the reference is made in the class of testMethod1"
+	"In order to be sure that this test is not considered as a caller of the modified method and a reference to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method"
+	 
+	| testsFound |
+	testsFound := self searchTestMethodsFor: ( ('SmTClassP1FirstLevelSendersOutsideWithRefIn','Class') asClass >> ('method1','FirstLevelSendersWithRefInClass') asSymbol).
+	self assert: testsFound isEmpty.
+	self deny: (testsFound includes: (('SmTClassTest','P2Test') asClass >> ('testMethod1FirstLevelSendersOutsideWithRefIn','Class') asSymbol) asRingDefinition ).
+]
+
+{ #category : #'test - standard method - first level sender' }
+SmTFilterAbstractTest >> testStandardMethodFirstLevelSendersOutsidePackageWithRefInMethod [
+	<CORATestBlacklisted>
+	"method1 is called by testMethod1"
+	"P1 : method1
+	 P2 : testMethod1, the reference is made in testMethod1"
+	"In order to be sure that this test is not considered as a caller of the modified method and a reference to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method"
+	
+	| testsFound |
+	testsFound := self searchTestMethodsFor: ( ('SmTClassP1FirstLevelSendersOutsideWithRefIn','Method') asClass >> ('method1','FirstLevelSendersWithRefInMethod') asSymbol).
+	self assert: testsFound isEmpty.
+	self deny: (testsFound includes: (('SmTClassTest','P2Test') asClass >> ('testMethod1FirstLevelSendersOutsideWithRefIn','Method') asSymbol) asRingDefinition ).
+]
+
+{ #category : #'test - standard method - first level sender' }
+SmTFilterAbstractTest >> testStandardMethodFirstLevelSendersOutsidePackageWithRefInPackage [
+	<CORATestBlacklisted>
+	"method1 is called by testMethod1"
+	"P1 : method1
+	 P2 : testMethod1, the reference is made in the package of testMethod1"
+	"In order to be sure that this test is not considered as a caller of the modified method and a reference to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method"
+	
+	| testsFound |
+	testsFound := self searchTestMethodsFor: ( ('SmTClassP1FirstLevelSendersOutsideWithRefIn','Package') asClass >> ('method1FirstLevelSendersWithRefIn','Package') asSymbol).
+	self assert: testsFound isEmpty.
+	self deny: (testsFound includes: (('SmTClassTest','P2Test') asClass >> ('testMethod1FirstLevelSendersOutsideWithRefIn','Package') asSymbol) asRingDefinition ).
+	
+]
+
+{ #category : #'test - standard method - second level sender' }
+SmTFilterAbstractTest >> testStandardMethodSecondLevelSendersInsidePackageWithTestInside [
+	<CORATestBlacklisted>
+	"method1 is called by method2, which itself is called by testMethod2, a tests owned by the same package as myMethod1, thus testMethod2 should be found.
+	We never go out of the package so it's normal."
+	"In order to be sure that this test is not considered as a caller of the modified method and a reference to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method"
+	
+	| testsFound |
+	testsFound := self searchTestMethodsFor: ( ('SmTClass','P1') asClass >> ('method1','SecondLevelSendersInsidePackageWithTestInside') asSymbol).
+	self assert: testsFound size equals: 1.
+	self assert: (testsFound includes: testMethod2SecondLevelSendersInsidePackageWithTestInside ).
+	
+	
+	
+]
+
+{ #category : #'test - standard method - second level sender' }
+SmTFilterAbstractTest >> testStandardMethodSecondLevelSendersInsidePackageWithTestOutside [
+	<CORATestBlacklisted>
+	"method1 is called by method2, which itself is called by testMethod2, a test not owned by the same package as method1, thus testMethod2 should not be found. 
+	We go out of the package once so it's normal hat the test is not found."
+	"In order to be sure that this test is not considered as a caller of the modified method and a reference to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method"
+	| testsFound |
+	testsFound := self searchTestMethodsFor: ( ('SmTClass','P1') asClass >> ('method1','SecondLevelSendersInsidePackageWithTestOutside') asSymbol).
+	self assert: (testsFound isEmpty ).
+	self deny: (testsFound includes: testMethod2SecondLevelSendersInsidePackageWithTestOutside ).
+	
+	
+	
+]
+
+{ #category : #'test - standard method - second level sender - with references' }
+SmTFilterAbstractTest >> testStandardMethodSecondLevelSendersInsideTestOutsideWithRefInClass [
+	<CORATestBlacklisted>
+	"method1 is called by method 2,itself called by testMethod1"
+	"P1 : method1 and method2
+	 P2 : testMethod2, the reference is made in the class of testMethod2"
+	"In order to be sure that this test is not considered as a caller of the modified method and a reference to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method"
+	
+	| testsFound |
+	testsFound := self searchTestMethodsFor: ( ('SmTClassP1SecondLevelSendersInsideTestOutsideWithRefIn','Class') asClass >> ('method1SecondLevelSendersInsideTestOutsideWithRefIn','Class') asSymbol).
+	self assert: testsFound isEmpty.
+	self deny: (testsFound includes: (('SmTClassTest','P2Test') asClass >> ('testMethod2SecondLevelSenderInsideTestOutsideWithRefIn','Class') asSymbol) asRingDefinition ).
+	
+]
+
+{ #category : #'test - standard method - second level sender - with references' }
+SmTFilterAbstractTest >> testStandardMethodSecondLevelSendersInsideTestOutsideWithRefInMethod [
+	<CORATestBlacklisted>
+	"method1 is called by method 2,itself called by testMethod1"
+	"P1 : method1 and method2
+	 P2 : testMethod2, the reference is made in testMethod2"
+	"In order to be sure that this test is not considered as a caller of the modified method and a reference to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method"
+	
+	| testsFound |
+	testsFound := self searchTestMethodsFor: ( ('SmTClassP1SecondLevelSendersInsideTestOutsideWithRefIn','Method') asClass >> ('method1SecondLevelSendersInsideTestOutsideWithRefIn','Method') asSymbol).
+	self assert: testsFound isEmpty.
+	self deny: (testsFound includes: (('SmTClassTest','P2Test') asClass >> ('testMethod2SecondLevelSenderInsideTestOutsideWithRefIn','Method')asSymbol) asRingDefinition ).
+	
+]
+
+{ #category : #'test - standard method - second level sender - with references' }
+SmTFilterAbstractTest >> testStandardMethodSecondLevelSendersInsideTestOutsideWithRefInPackage [
+	<CORATestBlacklisted>
+	"method1 is called by method 2,itself called by testMethod1"
+	"P1 : method1 and method2
+	 P2 : testMethod2, the reference is made in the package of testMethod2"
+	"In order to be sure that this test is not considered as a caller of the modified method and a reference to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method"
+	
+	| testsFound |
+	testsFound := self searchTestMethodsFor: ( ('SmTClassP1SecondLevelSendersInsideTestOutsideWithRefIn','Package') asClass >> ('method1SecondLevelSendersInsideTestOutsideWithRefIn','Package') asSymbol).
+	self assert: testsFound isEmpty.
+	self deny: (testsFound includes: (('SmTClassTest','P2Test') asClass >> ('testMethod2SecondLevelSenderInsideTestOutsideWithRefIn','Package') asSymbol) asRingDefinition ).
+	
+]
+
+{ #category : #'test - standard method - second level sender' }
+SmTFilterAbstractTest >> testStandardMethodSecondLevelSendersOutsidePackageWithTestInside [
+	<CORATestBlacklisted>
+	"method1 is called by method2, which itself is called by testMethod2, thus testMethod2 should not be found.
+	We go out of the package once so it's normal hat the test is not found."
+	"In order to be sure that this test is not considered as a caller of the modified method and a reference to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method"
+	
+	| testsFound |
+	testsFound := self searchTestMethodsFor: ( ('SmTClass','P1') asClass >> ('method1','SecondLevelSendersOutsidePackageWithTestInside') asSymbol).
+	self assert: (testsFound isEmpty ).	
+	self deny: (testsFound includes: testMethod2SecondLevelSendersOutsidePackageWithTestInside ).
+	
+	
+	
+]
+
+{ #category : #'test - standard method - second level sender' }
+SmTFilterAbstractTest >> testStandardMethodSecondLevelSendersOutsidePackageWithTestOutside [
+	<CORATestBlacklisted>
+	"method1 is called by method2, which itself is called by testMethod2, thus testMethod2 should not be found.
+	We go out of the package once so it's normal hat the test is not found."
+	"In order to be sure that this test is not considered as a caller of the modified method and a reference to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method"
+	| testsFound |
+	testsFound := self searchTestMethodsFor: ( ('SmTClass','P1') asClass >> ('method1','SecondLevelSendersOutsidePackageWithTestOutside') asSymbol).
+	self assert: (testsFound isEmpty ).
+	self deny: (testsFound includes: testMethod2SecondLevelSendersOutsidePackageWithTestOutside ).
+	
+	
+	
+]
+
+{ #category : #'test - standard method - second level sender - with references' }
+SmTFilterAbstractTest >> testStandardMethodSecondLevelSendersOutsideTestInsideWithRefInClass [
+	<CORATestBlacklisted>
+	"method1 is called by method 2,itself called by testMethod1"
+	"P1 : method1 and testMethod2
+	 P2 : method2, the reference is made in the class of method2"
+	"In order to be sure that this test is not considered as a caller of the modified method and a reference to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method"
+	
+	| testsFound |
+	testsFound := self searchTestMethodsFor: ( ('SmTClassP1SecondLevelSendersOutsideTestInsideWithRefIn','Class') asClass >> ('method1SecondLevelSendersOutsideTestInsideWithRefIn','Class') asSymbol).
+	self assert: testsFound isEmpty.
+	self deny: (testsFound includes: (('SmTClassTest','P1') asClass >> ('testMethod2SecondLevelSendersOutsideTestInsideWithRefIn','Class') asSymbol) asRingDefinition ).
+	
+]
+
+{ #category : #'test - standard method - second level sender - with references' }
+SmTFilterAbstractTest >> testStandardMethodSecondLevelSendersOutsideTestInsideWithRefInMethod [
+	<CORATestBlacklisted>
+	"method1 is called by method 2,itself called by testMethod1"
+	"P1 : method1 and testMethod2
+	 P2 : method2, the reference is made in method2"
+	"In order to be sure that this test is not considered as a caller of the modified method and a reference to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method"
+	
+	| testsFound |
+	testsFound := self searchTestMethodsFor: ( ('SmTClassP1SecondLevelSendersOutsideTestInsideWithRefIn','Method') asClass >> ('method1SecondLevelSendersOutsideTestInsideWithRefIn','Method') asSymbol).
+	self assert: testsFound isEmpty.
+	self deny: (testsFound includes: (('SmTClassTest','P1') asClass >> ('testMethod2SecondLevelSendersOutsideTestInsideWithRefIn','Method') asSymbol) asRingDefinition ).
+	
+]
+
+{ #category : #'test - standard method - second level sender - with references' }
+SmTFilterAbstractTest >> testStandardMethodSecondLevelSendersOutsideTestInsideWithRefInPackage [
+	<CORATestBlacklisted>
+	"method1 is called by method 2,itself called by testMethod1"
+	"P1 : method1 and testMethod2
+	 P2 : method2, the reference is made in the package of method2"
+	"In order to be sure that this test is not considered as a caller of the modified method and a reference to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method"
+	
+	| testsFound |
+	testsFound := self searchTestMethodsFor: ( ('SmTClassP1SecondLevelSendersOutsideTestInsideWithRefIn','Package') asClass >> ('method1SecondLevelSendersOutsideTestInsideWithRefIn','Package') asSymbol).
+	self assert: testsFound isEmpty.
+	self deny: (testsFound includes: (('SmTClassTest','P1') asClass >> ('testMethod2SecondLevelSendersOutsideTestInsideWithRefIn','Package') asSymbol) asRingDefinition ).
+	
+]
+
+{ #category : #'test - standard method - second level sender - with references' }
+SmTFilterAbstractTest >> testStandardMethodSecondLevelSendersOutsideTestOutsideWithRefInMethod [
+	<CORATestBlacklisted>
+	"method1 is called by method 2,itself called by testMethod1"
+	"P1 : Class1 >> method1 
+	 P2 : Class2 >> method2, the reference to Class1 is made in method2
+	 P3 : Class3 >> testMethod2, the reference to Class1 is made in testMethod2"
+	"In order to be sure that this test is not considered as a caller of the modified method and a reference to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method"
+	
+	| testsFound |
+	testsFound := self searchTestMethodsFor: ( ('SmTClassP1SecondLevelSendersOutsideTestOutsideWithRefIn','Method') asClass >> ('method1SecondLevelSendersOutsideTestOutsideWithRefIn','Method') asSymbol).
+	self assert: testsFound isEmpty.
+	self deny: (testsFound includes: (('SmTClassTestP3SecondLevelSenderOutsideTestOutsideWithRefIn','Method') asClass >> ('testMethod2SecondLevelSenderOutsideTestOutsideWithRefIn','Method') asSymbol) asRingDefinition ).
+	
+]
diff --git a/src/SmartTest-Tests/SmTFinderAbstractTest.class.st b/src/SmartTest-Tests/SmTFinderAbstractTest.class.st
new file mode 100644
index 0000000..751b833
--- /dev/null
+++ b/src/SmartTest-Tests/SmTFinderAbstractTest.class.st
@@ -0,0 +1,207 @@
+"
+This class exists to test the behaviour of the different finders with diffeent settings.
+TODO
+
+	- test setUp method with teardown
+	- test setUp method with setup
+	- test tearDown with setup
+	- test tearDown with teardown
+"
+Class {
+	#name : #SmTFinderAbstractTest,
+	#superclass : #TestCase,
+	#instVars : [
+		'cache',
+		'smartFinder',
+		'testMethod2',
+		'testMethod1',
+		'testMethod3',
+		'testMethod4',
+		'testMethod5',
+		'testInheritedMethod1',
+		'testMethodOutsidePackage1',
+		'testMethod1OutsidePackage'
+	],
+	#category : 'SmartTest-Tests-Finder'
+}
+
+{ #category : #testing }
+SmTFinderAbstractTest class >> isAbstract [
+
+	^ self  == SmTFinderAbstractTest
+]
+
+{ #category : #helpers }
+SmTFinderAbstractTest >> searchTestMethodsFor: aCompiledMethod [
+	
+	^ smartFinder researchTestsForMethod: aCompiledMethod .
+]
+
+{ #category : #helpers }
+SmTFinderAbstractTest >> searchTestsForASetUpMethod: aCompiledMethod [
+	^ smartFinder searchTestsForASetUpMethod: aCompiledMethod
+]
+
+{ #category : #helpers }
+SmTFinderAbstractTest >> searchTestsForATearDownMethod: aCompiledMethod [
+	^ smartFinder searchTestsForATearDownMethod: aCompiledMethod
+]
+
+{ #category : #helpers }
+SmTFinderAbstractTest >> searchTestsForATestMethod: aCompiledMethod [
+	^ smartFinder searchTestsForATestMethod: aCompiledMethod
+]
+
+{ #category : #running }
+SmTFinderAbstractTest >> setUp [
+	super setUp.
+	self timeLimit: 45 seconds.	"super super long time for travis CI"
+	smartFinder := SmartFinder new.
+	smartFinder filter: SmTDefaultClassPackagesFilter new.
+	testMethod1 := (SmTClassTest >> #testMethod1) asRingDefinition.
+	testMethod2 := (SmTClassTest >> #testMethod2) asRingDefinition.
+	testMethod3 := (SmTClassTest >> #testMethod3) asRingDefinition.
+	testMethod4 := (SmTClassTest >> #testMethod4) asRingDefinition.
+	testMethod5 := (SmTClassTest >> #testMethod5) asRingDefinition.
+	testInheritedMethod1 := RGMethodDefinition className: 'SmTInheritClassTest' selector: #testMethod1 isMetaSide: false
+]
+
+{ #category : #running }
+SmTFinderAbstractTest >> tearDown [
+	"reset the cache"
+	smartFinder resetCache.
+	smartFinder clean.
+	super tearDown
+]
+
+{ #category : #tests }
+SmTFinderAbstractTest >> testInheritance [
+	<CORATestBlacklisted>
+	| testsFound testMethod |
+	testsFound := self searchTestMethodsFor: ('SmTP1' , 'Inheritance') asClass >> ('method1','Inheritance') asSymbol .
+testMethod := RGMethodDefinition className: ('SmTP1InheritanceSubClass2','Test') selector:('testMethod1','Inheritance') asSymbol isMetaSide:	false.
+	self assert: testsFound size equals: 2.
+	self assert: (testsFound includes: ((('SmTP1InheritanceSubClass1Test') asClass >> ('testMethod1Inheritance') asSymbol) asRingDefinition  )).
+	self assert: (testsFound includes: (testMethod) ).
+]
+
+{ #category : #tests }
+SmTFinderAbstractTest >> testModificationOnInitialize [
+	<CORATestBlacklisted>
+	| testsFound |self
+		timeLimit:
+			35
+				seconds.	
+					"this one needs more time than the other"
+					self flag: 'Takes a very long time'.
+	testsFound := self searchTestMethodsFor: SmTClass2 >> #initialize.
+
+	self deny: (testsFound includes: testMethod1).
+	self deny: (testsFound includes: testMethod2).
+	self deny: (testsFound includes: testMethod3).
+	self deny: (testsFound includes: testMethod4).
+	self assert: (testsFound includes: testMethod5).
+]
+
+{ #category : #tests }
+SmTFinderAbstractTest >> testModificationOnTest [
+"asserts that if a test method is modified, the tests founds includes itself."
+	<CORATestBlacklisted>
+	| testsFound |
+	testsFound := self searchTestMethodsFor: SmTClassTest >> #testMethod4.
+	self deny: (testsFound includes: testMethod1).
+	self deny: (testsFound includes: testMethod2).
+	self deny: (testsFound includes: testMethod3).
+	self assert: (testsFound includes: testMethod4).
+]
+
+{ #category : #tests }
+SmTFinderAbstractTest >> testSetupMethodFindsTests [
+"asserts that the method SmTClassTest>>setup is related to the testMethods 1 to 4 and that 'testsForASetupMethod' finds all the good tests related to a setup method."
+	<CORATestBlacklisted>
+	| testsFound |
+	testsFound := self searchTestsForASetUpMethod: SmTClassTest >> #setUp.
+
+	self assert: testsFound isNotEmpty.
+	self assert: (testsFound includes: testMethod1).
+	self assert: (testsFound includes: testMethod2).
+	self assert: (testsFound includes: testMethod3).
+	self assert: (testsFound includes: testMethod4).
+]
+
+{ #category : #tests }
+SmTFinderAbstractTest >> testSetupMethodWithNonSetupFindsNoTests [
+"asserts that if we use the method 'testsForASetupMethod' with a non setup method as a parameter, the method returns nothing"
+	<CORATestBlacklisted>
+	| testsFound |
+	testsFound := self searchTestsForASetUpMethod: SmTClassTest >> #testMethod1.
+
+	self assert: testsFound isEmpty.
+]
+
+{ #category : #tests }
+SmTFinderAbstractTest >> testStandardMethodFirstLevelSenders [
+	<CORATestBlacklisted>
+	| testsFound |
+	testsFound := self searchTestMethodsFor: SmTClass >> #method2.
+	self deny: (testsFound includes: testMethod1).
+	self assert: (testsFound includes: testMethod2).
+	self deny: (testsFound includes: testMethod3).
+	self deny: (testsFound includes: testMethod4).
+]
+
+{ #category : #tests }
+SmTFinderAbstractTest >> testStandardMethodSecondLevelSenders [
+	<CORATestBlacklisted>
+	| testsFound |
+	testsFound := self searchTestMethodsFor: SmTClass >> #method1.
+	self assert: (testsFound includes: testMethod1).
+	self assert: (testsFound includes: testMethod2).
+	self assert: (testsFound includes: testInheritedMethod1).
+	self deny: (testsFound includes: testMethod3).
+	self deny: (testsFound includes: testMethod4).
+]
+
+{ #category : #tests }
+SmTFinderAbstractTest >> testStandardMethodThirdLevelSenders [
+	<CORATestBlacklisted>
+	| testsFound | 
+	testsFound := self searchTestMethodsFor: SmTClass >> #method4.
+
+	self deny: (testsFound includes: testMethod1).
+	self assert: (testsFound includes: testMethod2).
+	self assert: (testsFound includes: testMethod3).
+	self assert: (testsFound includes: testMethod4).
+]
+
+{ #category : #tests }
+SmTFinderAbstractTest >> testTearDownMethodFindsTests [
+	<CORATestBlacklisted>
+	| testsFound |
+	testsFound := self searchTestsForATearDownMethod: SmTClassTest >> #tearDown.
+
+	self assert: testsFound isNotEmpty.
+	self assert: (testsFound includes: testMethod1).
+	self assert: (testsFound includes: testMethod2).
+	self assert: (testsFound includes: testMethod3).
+	self assert: (testsFound includes: testMethod4).
+]
+
+{ #category : #tests }
+SmTFinderAbstractTest >> testTearDownMethodWithNoneTearDownFindsNoTests [
+	<CORATestBlacklisted>
+
+	self assert: (self searchTestsForATearDownMethod: SmTClassTest >> #testMethod1) isEmpty.
+]
+
+{ #category : #tests }
+SmTFinderAbstractTest >> testTestSelfSelected [
+	<CORATestBlacklisted>
+	| testsFound | 
+	testsFound := self searchTestsForATestMethod: SmTClassTest >> #testMethod1.
+
+	self assert: (testsFound includes: testMethod1).
+	self deny: (testsFound includes: testMethod2).
+	self deny: (testsFound includes: testMethod3).
+	self deny: (testsFound includes: testMethod4).
+]
diff --git a/src/SmartTest-Tests/SmTOnModificationTest.class.st b/src/SmartTest-Tests/SmTOnModificationTest.class.st
new file mode 100644
index 0000000..b466e77
--- /dev/null
+++ b/src/SmartTest-Tests/SmTOnModificationTest.class.st
@@ -0,0 +1,53 @@
+"
+A CORAOnModificationTest is a test class for testing the behavior of CORAOnModification
+"
+Class {
+	#name : #SmTOnModificationTest,
+	#superclass : #TestCase,
+	#instVars : [
+		'onModif'
+	],
+	#category : 'SmartTest-Tests-OnModification'
+}
+
+{ #category : #'tests-adding' }
+SmTOnModificationTest >> setUp [
+	"prepare strategy"
+	onModif := SmTTestingStrategyEachModification new.
+]
+
+{ #category : #'tests-adding' }
+SmTOnModificationTest >> tearDown [
+	"prepare strategy"
+	onModif disable 
+]
+
+{ #category : #'tests-adding' }
+SmTOnModificationTest >> testAdd [
+	| el |
+	onModif := SmTTestingStrategyEachModification new.
+	self assert: onModif bag isEmpty.
+	el := SmTRunnerTest >> #noop.
+	onModif addToElementBag: el.
+	self assert: onModif bag size equals: 1.
+	self assert: (onModif bag includes: el).
+	onModif disable
+]
+
+{ #category : #'tests-adding' }
+SmTOnModificationTest >> testGet [
+	| el |
+	onModif := SmTTestingStrategyEachModification new.
+	el := SmTRunnerTest >> #noop.
+	onModif addToElementBag: el.
+	self
+		assert: (onModif getElementFromBag: SmTRunnerTest >> #testIconForTestResultGreen)
+		equals: nil.
+	self assert: onModif bag size equals: 1.
+	self
+		assert: (onModif getElementFromBag: SmTRunnerTest >> #testIconForTestResultGreen)
+		equals: nil.
+	self assert: (onModif getElementFromBag: el) equals: el.
+	self assert: onModif bag size equals: 0.
+	self assert: (onModif getElementFromBag: el) equals: nil
+]
diff --git a/src/SmartTest-Tests/SmTRunnerTest.class.st b/src/SmartTest-Tests/SmTRunnerTest.class.st
new file mode 100644
index 0000000..903e2bd
--- /dev/null
+++ b/src/SmartTest-Tests/SmTRunnerTest.class.st
@@ -0,0 +1,136 @@
+"
+I test the behavior of the runner
+"
+Class {
+	#name : #SmTRunnerTest,
+	#superclass : #TestCase,
+	#instVars : [
+		'runner'
+	],
+	#category : 'SmartTest-Tests-Runner'
+}
+
+{ #category : #private }
+SmTRunnerTest >> noop [
+	
+]
+
+{ #category : #tests }
+SmTRunnerTest >> setUp [
+	runner := SmTRunnerStrategySmart.
+]
+
+{ #category : #tests }
+SmTRunnerTest >> testIconForTestResultGreen [ 
+	| case result  |
+	case := self class selector: #noop.
+	result := case run.
+	self assert: (runner iconForTestResultOf: result) equals: (self iconNamed: #testGreenIcon)
+]
+
+{ #category : #tests }
+SmTRunnerTest >> testIconForTestResultRed [
+	| case result |
+	case := self class selector: #error.
+	result := case run.
+	self assert: (runner iconForTestResultOf: result) equals: (self iconNamed: #testRedIcon)
+	
+]
+
+{ #category : #tests }
+SmTRunnerTest >> testIconForTestResultWhite [
+	| result | 
+	result := TestResult new.
+	self
+		assert: (runner iconForTestResultOf: result)
+		equals: (self iconNamed: #testGreenIcon)
+]
+
+{ #category : #tests }
+SmTRunnerTest >> testIconForTestResultYellow [
+	| case result |
+	case := self class selector: #fail.
+	result := case run.
+	self
+		assert: (runner iconForTestResultOf: result)
+		equals: (self iconNamed: #testYellowIcon)
+]
+
+{ #category : #tests }
+SmTRunnerTest >> testRunCaseNotifyIconGreen [
+	| case result anIcon |
+	case := self class selector: #noop.
+	anIcon := IconicButton new.
+	result := runner runCase: case notifyIcon: anIcon.
+	self assert: result passed size equals: 1.
+	self assert: result errors size equals: 0.
+	self assert: result failures size equals: 0.
+	self
+		assert: anIcon labelGraphic
+		equals:
+			(self iconNamed: #testGreenIcon)
+]
+
+{ #category : #tests }
+SmTRunnerTest >> testRunCaseNotifyIconRed [
+	| case anIcon |
+	case := self class selector: #error.
+	anIcon := IconicButton new.
+	self should: [runner runCase: case notifyIcon: anIcon] raise: Error .
+	self assert: anIcon labelGraphic equals: (self iconNamed: #testRedIcon)
+]
+
+{ #category : #tests }
+SmTRunnerTest >> testRunCaseNotifyIconYellow [
+	| case anIcon |
+	case := self class selector: #fail.
+	anIcon := IconicButton new.
+	self should: [ runner runCase: case notifyIcon: anIcon ] raise: TestFailure.
+	self assert: anIcon labelGraphic equals: (self iconNamed: #testYellowIcon)
+]
+
+{ #category : #tests }
+SmTRunnerTest >> testRunCasesNotifyIconGreen [
+	| case1 case2 case3 anIcon result |
+	case1 := self class selector: #noop.
+	case2 := self class selector: #noop.
+	case3 := self class selector: #noop.
+	anIcon := IconicButton new.
+	result := runner
+		runCases:
+			{case1.
+			case2.
+			case3}
+		notifyIcon: anIcon.
+	self assert: result passed size equals: 3.
+	self assert: result errors size equals: 0.
+	self assert: result failures size equals: 0.
+	self assert: anIcon labelGraphic equals: (self iconNamed: #testGreenIcon)
+]
+
+{ #category : #tests }
+SmTRunnerTest >> testRunCasesNotifyIconRed [
+	| case1 case2 case3 anIcon |
+	case1 := self class selector: #error.
+	case2 := self class selector: #fail.
+	case3 := self class selector: #error.
+	anIcon := IconicButton new.
+	runner
+		runCases:
+			{case1.
+			case2.
+			case3}
+		notifyIcon: anIcon.
+	self assert: anIcon labelGraphic equals: (self iconNamed: #testRedIcon)
+]
+
+{ #category : #tests }
+SmTRunnerTest >> testRunCasesNotifyIconYellow [
+	| case1 case2 case3 anIcon |
+	case1 := self class selector: #noop.
+	case2 := self class selector: #fail.
+	case3 := self class selector: #noop.
+	anIcon := IconicButton new.
+	runner runCases: {case1.case2.case3} notifyIcon: anIcon.
+	self assert: anIcon labelGraphic equals: (self iconNamed: #testYellowIcon)
+]
diff --git a/src/SmartTest-Tests/SmTSendersFilterTestDefaultClassPackage.class.st b/src/SmartTest-Tests/SmTSendersFilterTestDefaultClassPackage.class.st
new file mode 100644
index 0000000..1df8a30
--- /dev/null
+++ b/src/SmartTest-Tests/SmTSendersFilterTestDefaultClassPackage.class.st
@@ -0,0 +1,190 @@
+"
+I test the strategy SendersFinder with the filterDefaultClassPackage.
+The filter should accept any test that is owned by :
+	- the package of the modified method;
+	- a package that references the class of the modified method.
+	
+In order to be sure that those test are not considered as callers of the modified method and as references to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method.
+"
+Class {
+	#name : #SmTSendersFilterTestDefaultClassPackage,
+	#superclass : #SmTFilterAbstractTest,
+	#category : 'SmartTest-Tests-Filter'
+}
+
+{ #category : #running }
+SmTSendersFilterTestDefaultClassPackage >> setUp [
+"Here we want to test the SmTDefaultPackagesFilter with the static strategy 'sendersFinder' "
+	super setUp.
+	smartFinder filter: SmTDefaultClassPackagesFilter new.
+]
+
+{ #category : #tests }
+SmTSendersFilterTestDefaultClassPackage >> testExtensionTestInside [
+	<CORATestBlacklisted>
+	| testsFound |
+	testsFound := self searchTestMethodsFor:( ('SmT','ExtensionP4') asClass >> ('method1ExtensionTest','Inside') asSymbol).
+	
+	self assert: (testsFound includes: ((('SmT','ClassTestP3') asClass >> ('testMethod1ExtensionTest','Inside') asSymbol) asRingDefinition )).
+	
+]
+
+{ #category : #tests }
+SmTSendersFilterTestDefaultClassPackage >> testInstVarOutsidePackage [
+"In this test we want to assert that if the modified class has subclasses, SmartTest finds all the inherited methods (implemented or not)"
+	<CORATestBlacklisted>
+	| testsFound aInstVar|
+	aInstVar := self instanceVariableNamed: 'instVarModificationOnVariableOutsidePackage' fromClass: ('SmTClassP1ModificationOnVariable') asClass .
+	testsFound := self searchTestsForInstVar: aInstVar ofClass: ('SmTClassP1ModificationOnVariable') asClass.
+	self assert: testsFound size equals: 0.
+	
+]
+
+{ #category : #tests }
+SmTSendersFilterTestDefaultClassPackage >> testStandardMethodFirstLevelSendersOutsidePackageWithRefInClass [
+	<CORATestBlacklisted>
+	"method1 is called by testMethod1"
+	"P1 : method1
+	 P2 : testMethod1, the reference is made in the class of testMethod1"
+	"In order to be sure that this test is not considered as a caller of the modified method and a reference to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method"
+	 
+	| testsFound |
+	testsFound := self searchTestMethodsFor: ( ('SmTClassP1FirstLevelSendersOutsideWithRefIn','Class') asClass >> ('method1','FirstLevelSendersWithRefInClass') asSymbol).
+	self assert: testsFound size equals: 1.
+	self assert: (testsFound includes: (('SmTClassTest','P2Test') asClass >> ('testMethod1FirstLevelSendersOutsideWithRefIn','Class') asSymbol) asRingDefinition ).
+]
+
+{ #category : #tests }
+SmTSendersFilterTestDefaultClassPackage >> testStandardMethodFirstLevelSendersOutsidePackageWithRefInMethod [
+	<CORATestBlacklisted>
+	"method1 is called by testMethod1"
+	"P1 : method1
+	 P2 : testMethod1, the reference is made in testMethod1"
+	"In order to be sure that this test is not considered as a caller of the modified method and a reference to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method"
+	
+	| testsFound |
+	testsFound := self searchTestMethodsFor: ( ('SmTClassP1FirstLevelSendersOutsideWithRefIn','Method') asClass >> ('method1','FirstLevelSendersWithRefInMethod') asSymbol).
+	self assert: testsFound size equals: 1.
+	self assert: (testsFound includes: (('SmTClassTest','P2Test') asClass >> ('testMethod1FirstLevelSendersOutsideWithRefIn','Method') asSymbol) asRingDefinition ).
+]
+
+{ #category : #tests }
+SmTSendersFilterTestDefaultClassPackage >> testStandardMethodFirstLevelSendersOutsidePackageWithRefInPackage [
+	<CORATestBlacklisted>
+	"method1 is called by testMethod1"
+	"P1 : method1
+	 P2 : testMethod1, the reference is made in the package of testMethod1"
+	"In order to be sure that this test is not considered as a caller of the modified method and a reference to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method"
+	
+	| testsFound |
+	testsFound := self searchTestMethodsFor: ( ('SmTClassP1FirstLevelSendersOutsideWithRefIn','Package') asClass >> ('method1FirstLevelSendersWithRefIn','Package') asSymbol).
+	self assert: testsFound size equals: 1.
+	self assert: (testsFound includes: (('SmTClassTest','P2Test') asClass >> ('testMethod1FirstLevelSendersOutsideWithRefIn','Package') asSymbol) asRingDefinition ).
+	
+]
+
+{ #category : #tests }
+SmTSendersFilterTestDefaultClassPackage >> testStandardMethodSecondLevelSendersInsideTestOutsideWithRefInClass [
+	<CORATestBlacklisted>
+	"method1 is called by method 2,itself called by testMethod1"
+	"P1 : method1 and method2
+	 P2 : testMethod2, the reference is made in the class of testMethod2"
+	"In order to be sure that this test is not considered as a caller of the modified method and a reference to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method"
+	
+	| testsFound |
+	testsFound := self searchTestMethodsFor: ( ('SmTClassP1SecondLevelSendersInsideTestOutsideWithRefIn','Class') asClass >> ('method1SecondLevelSendersInsideTestOutsideWithRefIn','Class') asSymbol).
+	self assert: testsFound size equals: 1.
+	self assert: (testsFound includes: (('SmTClassTest','P2Test') asClass >> ('testMethod2SecondLevelSenderInsideTestOutsideWithRefIn','Class') asSymbol) asRingDefinition ).
+	
+]
+
+{ #category : #tests }
+SmTSendersFilterTestDefaultClassPackage >> testStandardMethodSecondLevelSendersInsideTestOutsideWithRefInMethod [
+	<CORATestBlacklisted>
+	"method1 is called by method 2,itself called by testMethod1"
+	"P1 : method1 and method2
+	 P2 : testMethod2, the reference is made in testMethod2"
+	"In order to be sure that this test is not considered as a caller of the modified method and a reference to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method"
+	
+	| testsFound |
+	testsFound := self searchTestMethodsFor: ( ('SmTClassP1SecondLevelSendersInsideTestOutsideWithRefIn','Method') asClass >> ('method1SecondLevelSendersInsideTestOutsideWithRefIn','Method') asSymbol).
+	self assert: testsFound size equals: 1.
+	self assert: (testsFound includes: (('SmTClassTest','P2Test') asClass >> ('testMethod2SecondLevelSenderInsideTestOutsideWithRefIn','Method')asSymbol) asRingDefinition ).
+	
+]
+
+{ #category : #tests }
+SmTSendersFilterTestDefaultClassPackage >> testStandardMethodSecondLevelSendersInsideTestOutsideWithRefInPackage [
+	<CORATestBlacklisted>
+	"method1 is called by method 2,itself called by testMethod1"
+	"P1 : method1 and method2
+	 P2 : testMethod2, the reference is made in the package of testMethod2"
+	"In order to be sure that this test is not considered as a caller of the modified method and a reference to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method"
+	
+	| testsFound |
+	testsFound := self searchTestMethodsFor: ( ('SmTClassP1SecondLevelSendersInsideTestOutsideWithRefIn','Package') asClass >> ('method1SecondLevelSendersInsideTestOutsideWithRefIn','Package') asSymbol).
+	self assert: testsFound size equals: 1.
+	self assert: (testsFound includes: (('SmTClassTest','P2Test') asClass >> ('testMethod2SecondLevelSenderInsideTestOutsideWithRefIn','Package') asSymbol) asRingDefinition ).
+	
+]
+
+{ #category : #tests }
+SmTSendersFilterTestDefaultClassPackage >> testStandardMethodSecondLevelSendersOutsideTestInsideWithRefInClass [
+	<CORATestBlacklisted>
+	"method1 is called by method 2,itself called by testMethod1"
+	"P1 : method1 and testMethod2
+	 P2 : method2, the reference is made in the class of method2"
+	"In order to be sure that this test is not considered as a caller of the modified method and a reference to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method"
+	
+	| testsFound |
+	testsFound := self searchTestMethodsFor: ( ('SmTClassP1SecondLevelSendersOutsideTestInsideWithRefIn','Class') asClass >> ('method1SecondLevelSendersOutsideTestInsideWithRefIn','Class') asSymbol).
+	self assert: testsFound size equals: 1.
+	self assert: (testsFound includes: (('SmTClassTest','P1') asClass >> ('testMethod2SecondLevelSendersOutsideTestInsideWithRefIn','Class') asSymbol) asRingDefinition ).
+	
+]
+
+{ #category : #tests }
+SmTSendersFilterTestDefaultClassPackage >> testStandardMethodSecondLevelSendersOutsideTestInsideWithRefInMethod [
+	<CORATestBlacklisted>
+	"method1 is called by method 2,itself called by testMethod1"
+	"P1 : method1 and testMethod2
+	 P2 : method2, the reference is made in method2"
+	"In order to be sure that this test is not considered as a caller of the modified method and a reference to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method"
+	
+	| testsFound |
+	testsFound := self searchTestMethodsFor: ( ('SmTClassP1SecondLevelSendersOutsideTestInsideWithRefIn','Method') asClass >> ('method1SecondLevelSendersOutsideTestInsideWithRefIn','Method') asSymbol).
+	self assert: testsFound size equals: 1.
+	self assert: (testsFound includes: (('SmTClassTest','P1') asClass >> ('testMethod2SecondLevelSendersOutsideTestInsideWithRefIn','Method') asSymbol) asRingDefinition ).
+	
+]
+
+{ #category : #tests }
+SmTSendersFilterTestDefaultClassPackage >> testStandardMethodSecondLevelSendersOutsideTestInsideWithRefInPackage [
+	<CORATestBlacklisted>
+	"method1 is called by method 2,itself called by testMethod1"
+	"P1 : method1 and testMethod2
+	 P2 : method2, the reference is made in the package of method2"
+	"In order to be sure that this test is not considered as a caller of the modified method and a reference to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method"
+	
+	| testsFound |
+	testsFound := self searchTestMethodsFor: ( ('SmTClassP1SecondLevelSendersOutsideTestInsideWithRefIn','Package') asClass >> ('method1SecondLevelSendersOutsideTestInsideWithRefIn','Package') asSymbol).
+	self assert: testsFound size equals: 1.
+	self assert: (testsFound includes: (('SmTClassTest','P1') asClass >> ('testMethod2SecondLevelSendersOutsideTestInsideWithRefIn','Package') asSymbol) asRingDefinition ).
+	
+]
+
+{ #category : #tests }
+SmTSendersFilterTestDefaultClassPackage >> testStandardMethodSecondLevelSendersOutsideTestOutsideWithRefInMethod [
+	<CORATestBlacklisted>
+	"method1 is called by method 2,itself called by testMethod1"
+	"P1 : Class1 >> method1 
+	 P2 : Class2 >> method2, the reference to Class1 is made in method2
+	 P3 : Class3 >> testMethod2, the reference to Class1 is made in testMethod2"
+	"In order to be sure that this test is not considered as a caller of the modified method and a reference to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method"
+	
+	| testsFound |
+	testsFound := self searchTestMethodsFor: ( ('SmTClassP1SecondLevelSendersOutsideTestOutsideWithRefIn','Method') asClass >> ('method1SecondLevelSendersOutsideTestOutsideWithRefIn','Method') asSymbol).
+	self assert: testsFound size equals: 1.
+	self assert: (testsFound includes: (('SmTClassTestP3SecondLevelSenderOutsideTestOutsideWithRefIn','Method') asClass >> ('testMethod2SecondLevelSenderOutsideTestOutsideWithRefIn','Method') asSymbol) asRingDefinition ).
+	
+]
diff --git a/src/SmartTest-Tests/SmTSendersFilterTestDefaultPackage.class.st b/src/SmartTest-Tests/SmTSendersFilterTestDefaultPackage.class.st
new file mode 100644
index 0000000..369a44a
--- /dev/null
+++ b/src/SmartTest-Tests/SmTSendersFilterTestDefaultPackage.class.st
@@ -0,0 +1,32 @@
+"
+I test the strategy SendersFinder with the filter DefaultPackage.
+The filter should accept any test that is owned by :
+	- the package of the modified method;
+	
+In order to be sure that those test are not considered as callers of the modified method and as references to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method.
+"
+Class {
+	#name : #SmTSendersFilterTestDefaultPackage,
+	#superclass : #SmTFilterAbstractTest,
+	#category : 'SmartTest-Tests-Filter'
+}
+
+{ #category : #tests }
+SmTSendersFilterTestDefaultPackage >> testClassOutsidePackageWithRef [
+"In this test, we want to assert that if the class is used in a method, we find the tests related to this method."
+	<CORATestBlacklisted>
+	| testsFound  |
+	testsFound := self searchTestMethodsForAClass: ('SmTClassModificationOnClass','OutsidePackageWithRef') asClass.
+	self assert: testsFound size equals: 0.
+]
+
+{ #category : #tests }
+SmTSendersFilterTestDefaultPackage >> testInstVarOutsidePackage [
+"In this test we want to assert that if the modified class has subclasses, SmartTest finds all the inherited methods (implemented or not)"
+	<CORATestBlacklisted>
+	| testsFound aInstVar|
+	aInstVar := self instanceVariableNamed: 'instVarModificationOnVariableOutsidePackage' fromClass: ('SmTClassP1ModificationOnVariable') asClass .
+	testsFound := self searchTestsForInstVar: aInstVar ofClass: ('SmTClassP1ModificationOnVariable') asClass.
+	self assert: testsFound size equals: 0.
+	
+]
diff --git a/src/SmartTest-Tests/SmTSendersFilterTestWithMultipleRestrictedPackage.class.st b/src/SmartTest-Tests/SmTSendersFilterTestWithMultipleRestrictedPackage.class.st
new file mode 100644
index 0000000..67f7d36
--- /dev/null
+++ b/src/SmartTest-Tests/SmTSendersFilterTestWithMultipleRestrictedPackage.class.st
@@ -0,0 +1,216 @@
+"
+I test the strategy SendersFinder with the filter RestrictedPackage.
+The filter should accept any test that is owned by a package whose name matches the regex.
+
+Here we look for tests in the package SmartDataTestOutsideP1 AND SmartDataTestOutsideP2  End of statement list encountered ->(this is defined in the SetUp method).
+The results are different than the results with only one package.
+
+In order to be sure that those test are not considered as callers of the modified method and as references to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method.
+"
+Class {
+	#name : #SmTSendersFilterTestWithMultipleRestrictedPackage,
+	#superclass : #SmTFilterAbstractTest,
+	#category : 'SmartTest-Tests-Filter'
+}
+
+{ #category : #running }
+SmTSendersFilterTestWithMultipleRestrictedPackage >> setUp [
+	"Here we want to test the SmTRestrictedPackageFilter with the static strategy 'sendersFinder'. We look for the tests located in both SmartTestDataOutsideP1 and P2."
+
+	super setUp.
+	self timeLimit: 60 seconds.
+	smartFinder
+		filter:
+			(SmTSpecifyPackagesNameFilter packagesRegex: 'SmartTestDataOutsideP1|SmartTestDataOutsideP2')
+]
+
+{ #category : #tests }
+SmTSendersFilterTestWithMultipleRestrictedPackage >> testStandardMethodFirstLevelSendersOutsidePackage [
+	<CORATestBlacklisted>
+	"MyMethod1 is called by testMyMethod2, a test not owned by the same package as myMethod1 but its package matches the regex so it should be found"
+	"In order to be sure that this test is not considered as a caller of the modified method and a reference to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method"
+	
+	| testsFound |
+	testsFound := self searchTestMethodsFor: ( ('SmTClass','P1') asClass >> ('method1','FirstLevelSendersOutsidePackage') asSymbol).
+	self assert: testsFound size equals: 1 .
+	self assert:   (testsFound includes: testMethod1FirstLevelSendersOutsidePackage).
+	
+	
+	
+]
+
+{ #category : #tests }
+SmTSendersFilterTestWithMultipleRestrictedPackage >> testStandardMethodFirstLevelSendersOutsidePackageWithRefInClass [
+	<CORATestBlacklisted>
+	"method1 is called by testMethod1"
+	"P1 : method1
+	 P2 : testMethod1, the reference is made in the class of testMethod1"
+	"In order to be sure that this test is not considered as a caller of the modified method and a reference to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method"
+	 
+	| testsFound |
+	testsFound := self searchTestMethodsFor: ( ('SmTClassP1FirstLevelSendersOutsideWithRefIn','Class') asClass >> ('method1','FirstLevelSendersWithRefInClass') asSymbol).
+	self assert: testsFound size equals: 1.
+	self assert: (testsFound includes: (('SmTClassTest','P2Test') asClass >> ('testMethod1FirstLevelSendersOutsideWithRefIn','Class') asSymbol) asRingDefinition ).
+]
+
+{ #category : #tests }
+SmTSendersFilterTestWithMultipleRestrictedPackage >> testStandardMethodFirstLevelSendersOutsidePackageWithRefInMethod [
+	<CORATestBlacklisted>
+	"method1 is called by testMethod1"
+	"P1 : method1
+	 P2 : testMethod1, the reference is made in testMethod1"
+	"In order to be sure that this test is not considered as a caller of the modified method and a reference to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method"
+	
+	| testsFound |
+	testsFound := self searchTestMethodsFor: ( ('SmTClassP1FirstLevelSendersOutsideWithRefIn','Method') asClass >> ('method1','FirstLevelSendersWithRefInMethod') asSymbol).
+	self assert: testsFound size equals: 1.
+	self assert: (testsFound includes: (('SmTClassTest','P2Test') asClass >> ('testMethod1FirstLevelSendersOutsideWithRefIn','Method') asSymbol) asRingDefinition ).
+]
+
+{ #category : #tests }
+SmTSendersFilterTestWithMultipleRestrictedPackage >> testStandardMethodFirstLevelSendersOutsidePackageWithRefInPackage [
+	<CORATestBlacklisted>
+	"method1 is called by testMethod1"
+	"P1 : method1
+	 P2 : testMethod1, the reference is made in the package of testMethod1"
+	"In order to be sure that this test is not considered as a caller of the modified method and a reference to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method"
+	
+	| testsFound |
+	testsFound := self searchTestMethodsFor: ( ('SmTClassP1FirstLevelSendersOutsideWithRefIn','Package') asClass >> ('method1FirstLevelSendersWithRefIn','Package') asSymbol).
+	self assert: testsFound size equals: 1.
+	self assert: (testsFound includes: (('SmTClassTest','P2Test') asClass >> ('testMethod1FirstLevelSendersOutsideWithRefIn','Package') asSymbol) asRingDefinition ).
+	
+]
+
+{ #category : #running }
+SmTSendersFilterTestWithMultipleRestrictedPackage >> testStandardMethodSecondLevelSendersInsidePackageWithTestOutside [
+	<CORATestBlacklisted>
+	"method1 is called by method2, which itself is called by testMethod2, both methods (the test and the method) are not owned by the same package as myMethod1 but their packages matches the regex so it should be found"
+	"In order to be sure that this test is not considered as a caller of the modified method and a reference to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method"
+
+	| testsFound |
+	testsFound := self searchTestMethodsFor: ( ('SmTClass','P1') asClass >> ('method1','SecondLevelSendersInsidePackageWithTestOutside') asSymbol).
+	self assert: testsFound size equals: 1 .
+	self assert:    (testsFound includes: testMethod2SecondLevelSendersInsidePackageWithTestOutside ).
+	
+	
+	
+]
+
+{ #category : #tests }
+SmTSendersFilterTestWithMultipleRestrictedPackage >> testStandardMethodSecondLevelSendersInsideTestOutsideWithRefInClass [
+	<CORATestBlacklisted>
+	"method1 is called by method 2,itself called by testMethod1"
+	"P1 : method1 and method2
+	 P2 : testMethod2, the reference is made in the class of testMethod2"
+	"In order to be sure that this test is not considered as a caller of the modified method and a reference to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method"
+	
+	| testsFound |
+	testsFound := self searchTestMethodsFor: ( ('SmTClassP1SecondLevelSendersInsideTestOutsideWithRefIn','Class') asClass >> ('method1SecondLevelSendersInsideTestOutsideWithRefIn','Class') asSymbol).
+	self assert: testsFound size equals: 1.
+	self assert: (testsFound includes: (('SmTClassTest','P2Test') asClass >> ('testMethod2SecondLevelSenderInsideTestOutsideWithRefIn','Class') asSymbol) asRingDefinition ).
+	
+]
+
+{ #category : #tests }
+SmTSendersFilterTestWithMultipleRestrictedPackage >> testStandardMethodSecondLevelSendersInsideTestOutsideWithRefInMethod [
+	<CORATestBlacklisted>
+	"method1 is called by method 2,itself called by testMethod1"
+	"P1 : method1 and method2
+	 P2 : testMethod2, the reference is made in testMethod2"
+	"In order to be sure that this test is not considered as a caller of the modified method and a reference to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method"
+	
+	| testsFound |
+	testsFound := self searchTestMethodsFor: ( ('SmTClassP1SecondLevelSendersInsideTestOutsideWithRefIn','Method') asClass >> ('method1SecondLevelSendersInsideTestOutsideWithRefIn','Method') asSymbol).
+	self assert: testsFound size equals: 1.
+	self assert: (testsFound includes: (('SmTClassTest','P2Test') asClass >> ('testMethod2SecondLevelSenderInsideTestOutsideWithRefIn','Method')asSymbol) asRingDefinition ).
+	
+]
+
+{ #category : #tests }
+SmTSendersFilterTestWithMultipleRestrictedPackage >> testStandardMethodSecondLevelSendersInsideTestOutsideWithRefInPackage [
+	<CORATestBlacklisted>
+	"method1 is called by method 2,itself called by testMethod1"
+	"P1 : method1 and method2
+	 P2 : testMethod2, the reference is made in the package of testMethod2"
+	"In order to be sure that this test is not considered as a caller of the modified method and a reference to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method"
+	
+	| testsFound |
+	testsFound := self searchTestMethodsFor: ( ('SmTClassP1SecondLevelSendersInsideTestOutsideWithRefIn','Package') asClass >> ('method1SecondLevelSendersInsideTestOutsideWithRefIn','Package') asSymbol).
+	self assert: testsFound size equals: 1.
+	self assert: (testsFound includes: (('SmTClassTest','P2Test') asClass >> ('testMethod2SecondLevelSenderInsideTestOutsideWithRefIn','Package') asSymbol) asRingDefinition ).
+	
+]
+
+{ #category : #running }
+SmTSendersFilterTestWithMultipleRestrictedPackage >> testStandardMethodSecondLevelSendersOutsidePackageWithTestInside [
+	<CORATestBlacklisted>
+	"method1 is called by method2, which itself is called by testMethod2, both methods (the test and the method) are not owned by the same package as myMethod1 but their packages matches the regex so it should be found"
+	"In order to be sure that this test is not considered as a caller of the modified method and a reference to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method"
+	| testsFound |
+	testsFound := self searchTestMethodsFor: ( ('SmTClass','P1') asClass >> ('method1','SecondLevelSendersOutsidePackageWithTestInside') asSymbol).
+	self assert: testsFound size equals: 1 .
+	self assert:    (testsFound includes: testMethod2SecondLevelSendersOutsidePackageWithTestInside ).
+	
+	
+	
+]
+
+{ #category : #running }
+SmTSendersFilterTestWithMultipleRestrictedPackage >> testStandardMethodSecondLevelSendersOutsidePackageWithTestOutside [
+	<CORATestBlacklisted>
+	"method1 is called by method2, which itself is called by testMethod2, both methods (the test and the method) are not owned by the same package as myMethod1 but their packages matches the regex so it should be found"
+	"In order to be sure that this test is not considered as a caller of the modified method and a reference to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method"
+	| testsFound |
+	testsFound := self searchTestMethodsFor: ( ('SmTClass','P1') asClass >> ('method1','SecondLevelSendersOutsidePackageWithTestOutside') asSymbol).
+	self assert: testsFound size equals: 1 .
+	self assert: (testsFound includes: testMethod2SecondLevelSendersOutsidePackageWithTestOutside ).
+	
+	
+	
+]
+
+{ #category : #tests }
+SmTSendersFilterTestWithMultipleRestrictedPackage >> testStandardMethodSecondLevelSendersOutsideTestInsideWithRefInClass [
+	<CORATestBlacklisted>
+	"method1 is called by method 2,itself called by testMethod1"
+	"P1 : method1 and testMethod2
+	 P2 : method2, the reference is made in the class of method2"
+	"In order to be sure that this test is not considered as a caller of the modified method and a reference to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method"
+	
+	| testsFound |
+	testsFound := self searchTestMethodsFor: ( ('SmTClassP1SecondLevelSendersOutsideTestInsideWithRefIn','Class') asClass >> ('method1SecondLevelSendersOutsideTestInsideWithRefIn','Class') asSymbol).
+	self assert: testsFound size equals: 1.
+	self assert: (testsFound includes: (('SmTClassTest','P1') asClass >> ('testMethod2SecondLevelSendersOutsideTestInsideWithRefIn','Class') asSymbol) asRingDefinition ).
+	
+]
+
+{ #category : #tests }
+SmTSendersFilterTestWithMultipleRestrictedPackage >> testStandardMethodSecondLevelSendersOutsideTestInsideWithRefInMethod [
+	<CORATestBlacklisted>
+	"method1 is called by method 2,itself called by testMethod1"
+	"P1 : method1 and testMethod2
+	 P2 : method2, the reference is made in method2"
+	"In order to be sure that this test is not considered as a caller of the modified method and a reference to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method"
+	
+	| testsFound |
+	testsFound := self searchTestMethodsFor: ( ('SmTClassP1SecondLevelSendersOutsideTestInsideWithRefIn','Method') asClass >> ('method1SecondLevelSendersOutsideTestInsideWithRefIn','Method') asSymbol).
+	self assert: testsFound size equals: 1.
+	self assert: (testsFound includes: (('SmTClassTest','P1') asClass >> ('testMethod2SecondLevelSendersOutsideTestInsideWithRefIn','Method') asSymbol) asRingDefinition ).
+	
+]
+
+{ #category : #tests }
+SmTSendersFilterTestWithMultipleRestrictedPackage >> testStandardMethodSecondLevelSendersOutsideTestInsideWithRefInPackage [
+	<CORATestBlacklisted>
+	"method1 is called by method 2,itself called by testMethod1"
+	"P1 : method1 and testMethod2
+	 P2 : method2, the reference is made in the package of method2"
+	"In order to be sure that this test is not considered as a caller of the modified method and a reference to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method"
+	
+	| testsFound |
+	testsFound := self searchTestMethodsFor: ( ('SmTClassP1SecondLevelSendersOutsideTestInsideWithRefIn','Package') asClass >> ('method1SecondLevelSendersOutsideTestInsideWithRefIn','Package') asSymbol).
+	self assert: testsFound size equals: 1.
+	self assert: (testsFound includes: (('SmTClassTest','P1') asClass >> ('testMethod2SecondLevelSendersOutsideTestInsideWithRefIn','Package') asSymbol) asRingDefinition ).
+	
+]
diff --git a/src/SmartTest-Tests/SmTSendersFilterTestWithRestrictedPackage.class.st b/src/SmartTest-Tests/SmTSendersFilterTestWithRestrictedPackage.class.st
new file mode 100644
index 0000000..46d0be3
--- /dev/null
+++ b/src/SmartTest-Tests/SmTSendersFilterTestWithRestrictedPackage.class.st
@@ -0,0 +1,50 @@
+"
+I test the strategy SendersFinder with the filter RestrictedPackage.
+The filter should accept any test that is owned by a package whose name matches the regex.
+
+Here we look for tests in the package SmartDataTestOutsideP1 (this is defined in the SetUp method).
+
+In order to be sure that those test are not considered as callers of the modified method and as references to its class, we don't use directly the class and the method but go through their name with a concatenation and then transform them into class or method.
+"
+Class {
+	#name : #SmTSendersFilterTestWithRestrictedPackage,
+	#superclass : #SmTFilterAbstractTest,
+	#category : 'SmartTest-Tests-Filter'
+}
+
+{ #category : #running }
+SmTSendersFilterTestWithRestrictedPackage >> setUp [
+	"Here we want to test the SmTRestrictedPackageFilter with the static strategy 'sendersFinder'. We only look for the tests located in SmartTestDataOutsideP1."
+
+	super setUp.
+	self timeLimit: 60 seconds.
+	smartFinder filter: (SmTSpecifyPackagesNameFilter packagesRegex: 'SmartTestDataOutsideP1')
+]
+
+{ #category : #tests }
+SmTSendersFilterTestWithRestrictedPackage >> testClassOutsidePackageWithRef [
+"In this test, we want to assert that if the class is used in a method, we find the tests related to this method."
+	<CORATestBlacklisted>
+	| testsFound  |
+	testsFound := self searchTestMethodsForAClass: ('SmTClassModificationOnClass','OutsidePackageWithRef') asClass.
+	self assert: testsFound size equals: 0.
+]
+
+{ #category : #tests }
+SmTSendersFilterTestWithRestrictedPackage >> testExtensionMethodFirstLevelSendersOutside [
+	<CORATestBlacklisted>
+	| testsFound |
+	testsFound := self searchTestMethodsFor:( ('SmT','ExtensionP2Test') asClass >> ('extensionMethod1FirstLevelSenders','Outside') asSymbol).
+	self deny: (testsFound includes: ((('SmT','ClassTestP2Test') asClass >> ('testExtensionMethod1FirstLevelSenders','Outside') asSymbol) asRingDefinition )).
+]
+
+{ #category : #tests }
+SmTSendersFilterTestWithRestrictedPackage >> testInstVarOutsidePackage [
+"In this test we want to assert that if the modified class has subclasses, SmartTest finds all the inherited methods (implemented or not)"
+	<CORATestBlacklisted>
+	| testsFound aInstVar|
+	aInstVar := self instanceVariableNamed: 'instVarModificationOnVariableOutsidePackage' fromClass: ('SmTClassP1ModificationOnVariable') asClass .
+	testsFound := self searchTestsForInstVar: aInstVar ofClass:('SmTClassP1ModificationOnVariable') asClass .
+	self assert: testsFound size equals: 0.
+	
+]
diff --git a/src/SmartTest-Tests/SmTSettingsBasicCacheTest.class.st b/src/SmartTest-Tests/SmTSettingsBasicCacheTest.class.st
new file mode 100644
index 0000000..c0399a7
--- /dev/null
+++ b/src/SmartTest-Tests/SmTSettingsBasicCacheTest.class.st
@@ -0,0 +1,10 @@
+Class {
+	#name : #SmTSettingsBasicCacheTest,
+	#superclass : #SmTSettingsCacheTest,
+	#category : 'SmartTest-Tests-Settings'
+}
+
+{ #category : #settings }
+SmTSettingsBasicCacheTest >> cacheStrategy [
+	^ SmTBasicCacheStrategy
+]
diff --git a/src/SmartTest-Tests/SmTSettingsCacheTest.class.st b/src/SmartTest-Tests/SmTSettingsCacheTest.class.st
new file mode 100644
index 0000000..76851af
--- /dev/null
+++ b/src/SmartTest-Tests/SmTSettingsCacheTest.class.st
@@ -0,0 +1,24 @@
+Class {
+	#name : #SmTSettingsCacheTest,
+	#superclass : #SmTSettingsTest,
+	#category : 'SmartTest-Tests-Settings'
+}
+
+{ #category : #testing }
+SmTSettingsCacheTest class >> isAbstract [
+	^ self = SmTSettingsCacheTest 
+]
+
+{ #category : #settings }
+SmTSettingsCacheTest >> cacheStrategy [
+	self subclassResponsibility 
+]
+
+{ #category : #tests }
+SmTSettingsCacheTest >> testChangeCacheStrategy [
+	"Test changement of the runner in the setting (throught SmTRules methods)"
+
+	SmTRules cacheStrategy: self cacheStrategy.
+	self assert: (SmTRules testFinder cacheStrategy isKindOf: self cacheStrategy).
+	self assert: (SmTRules testFinder smtFinder cache isKindOf: self cacheStrategy)
+]
diff --git a/src/SmartTest-Tests/SmTSettingsFilterDefaultClassPackagesTest.class.st b/src/SmartTest-Tests/SmTSettingsFilterDefaultClassPackagesTest.class.st
new file mode 100644
index 0000000..c3d9568
--- /dev/null
+++ b/src/SmartTest-Tests/SmTSettingsFilterDefaultClassPackagesTest.class.st
@@ -0,0 +1,10 @@
+Class {
+	#name : #SmTSettingsFilterDefaultClassPackagesTest,
+	#superclass : #SmTSettingsFilterTest,
+	#category : 'SmartTest-Tests-Settings'
+}
+
+{ #category : #running }
+SmTSettingsFilterDefaultClassPackagesTest >> filterStrategy [
+	^ SmTDefaultClassPackagesFilter 
+]
diff --git a/src/SmartTest-Tests/SmTSettingsFilterDefaultPackagesTest.class.st b/src/SmartTest-Tests/SmTSettingsFilterDefaultPackagesTest.class.st
new file mode 100644
index 0000000..88edf4b
--- /dev/null
+++ b/src/SmartTest-Tests/SmTSettingsFilterDefaultPackagesTest.class.st
@@ -0,0 +1,10 @@
+Class {
+	#name : #SmTSettingsFilterDefaultPackagesTest,
+	#superclass : #SmTSettingsFilterTest,
+	#category : 'SmartTest-Tests-Settings'
+}
+
+{ #category : #running }
+SmTSettingsFilterDefaultPackagesTest >> filterStrategy [
+	^ SmTDefaultPackagesFilter 
+]
diff --git a/src/SmartTest-Tests/SmTSettingsFilterIcebergTest.class.st b/src/SmartTest-Tests/SmTSettingsFilterIcebergTest.class.st
new file mode 100644
index 0000000..a0d74c8
--- /dev/null
+++ b/src/SmartTest-Tests/SmTSettingsFilterIcebergTest.class.st
@@ -0,0 +1,10 @@
+Class {
+	#name : #SmTSettingsFilterIcebergTest,
+	#superclass : #SmTSettingsFilterTest,
+	#category : 'SmartTest-Tests-Settings'
+}
+
+{ #category : #running }
+SmTSettingsFilterIcebergTest >> filterStrategy [
+	^ SmTIcebergLoadedPackagesFilter 
+]
diff --git a/src/SmartTest-Tests/SmTSettingsFilterNoFilterTest.class.st b/src/SmartTest-Tests/SmTSettingsFilterNoFilterTest.class.st
new file mode 100644
index 0000000..ddf7fc3
--- /dev/null
+++ b/src/SmartTest-Tests/SmTSettingsFilterNoFilterTest.class.st
@@ -0,0 +1,10 @@
+Class {
+	#name : #SmTSettingsFilterNoFilterTest,
+	#superclass : #SmTSettingsFilterTest,
+	#category : 'SmartTest-Tests-Settings'
+}
+
+{ #category : #running }
+SmTSettingsFilterNoFilterTest >> filterStrategy [
+	^ SmTNoFilter 
+]
diff --git a/src/SmartTest-Tests/SmTSettingsFilterSpecifyPackagesNameTest.class.st b/src/SmartTest-Tests/SmTSettingsFilterSpecifyPackagesNameTest.class.st
new file mode 100644
index 0000000..c6a6952
--- /dev/null
+++ b/src/SmartTest-Tests/SmTSettingsFilterSpecifyPackagesNameTest.class.st
@@ -0,0 +1,38 @@
+Class {
+	#name : #SmTSettingsFilterSpecifyPackagesNameTest,
+	#superclass : #SmTSettingsFilterTest,
+	#instVars : [
+		'oldRegex'
+	],
+	#category : 'SmartTest-Tests-Settings'
+}
+
+{ #category : #running }
+SmTSettingsFilterSpecifyPackagesNameTest >> dataForTestRegex [
+	^ 'SmartTes*|StarWars'
+]
+
+{ #category : #running }
+SmTSettingsFilterSpecifyPackagesNameTest >> filterStrategy [
+	^ SmTSpecifyPackagesNameFilter 
+]
+
+{ #category : #running }
+SmTSettingsFilterSpecifyPackagesNameTest >> setUp [
+	super setUp.
+	oldRegex := SmTRules packagesRegex.
+	SmTRules packagesRegex: self dataForTestRegex 
+]
+
+{ #category : #running }
+SmTSettingsFilterSpecifyPackagesNameTest >> tearDown [
+	
+	SmTRules packagesRegex: oldRegex.
+	super tearDown 
+]
+
+{ #category : #running }
+SmTSettingsFilterSpecifyPackagesNameTest >> testChangeRegexWhenChanged [
+	SmTRules filter: self filterStrategy.
+	self assert: SmTRules testFinder filter packagesRegex equals: self dataForTestRegex 
+]
diff --git a/src/SmartTest-Tests/SmTSettingsFilterTest.class.st b/src/SmartTest-Tests/SmTSettingsFilterTest.class.st
new file mode 100644
index 0000000..6f8bc83
--- /dev/null
+++ b/src/SmartTest-Tests/SmTSettingsFilterTest.class.st
@@ -0,0 +1,24 @@
+Class {
+	#name : #SmTSettingsFilterTest,
+	#superclass : #SmTSettingsTest,
+	#category : 'SmartTest-Tests-Settings'
+}
+
+{ #category : #testing }
+SmTSettingsFilterTest class >> isAbstract [
+	^ self = SmTSettingsFilterTest 
+]
+
+{ #category : #running }
+SmTSettingsFilterTest >> filterStrategy [
+	self subclassResponsibility 
+]
+
+{ #category : #tests }
+SmTSettingsFilterTest >> testChangeFilterStrategy [
+	"Test changement of the runner in the setting (throught SmTRules methods)"
+
+	SmTRules filter: self filterStrategy.
+	self assert: (SmTRules testFinder filter isKindOf: self filterStrategy).
+	self assert: (SmTRules testFinder smtFinder filter isKindOf: self filterStrategy)
+]
diff --git a/src/SmartTest-Tests/SmTSettingsFinderReflectivityTest.class.st b/src/SmartTest-Tests/SmTSettingsFinderReflectivityTest.class.st
new file mode 100644
index 0000000..eb5b5c8
--- /dev/null
+++ b/src/SmartTest-Tests/SmTSettingsFinderReflectivityTest.class.st
@@ -0,0 +1,10 @@
+Class {
+	#name : #SmTSettingsFinderReflectivityTest,
+	#superclass : #SmTSettingsFinderTest,
+	#category : 'SmartTest-Tests-Settings'
+}
+
+{ #category : #running }
+SmTSettingsFinderReflectivityTest >> finderStrategy [
+	^ SmTReflectivityTestFinderStrategy 
+]
diff --git a/src/SmartTest-Tests/SmTSettingsFinderSenderTestTest.class.st b/src/SmartTest-Tests/SmTSettingsFinderSenderTestTest.class.st
new file mode 100644
index 0000000..68bf3db
--- /dev/null
+++ b/src/SmartTest-Tests/SmTSettingsFinderSenderTestTest.class.st
@@ -0,0 +1,10 @@
+Class {
+	#name : #SmTSettingsFinderSenderTestTest,
+	#superclass : #SmTSettingsFinderTest,
+	#category : 'SmartTest-Tests-Settings'
+}
+
+{ #category : #running }
+SmTSettingsFinderSenderTestTest >> finderStrategy [
+	 ^ SmTSenderTestFinderStrategy 
+]
diff --git a/src/SmartTest-Tests/SmTSettingsFinderTest.class.st b/src/SmartTest-Tests/SmTSettingsFinderTest.class.st
new file mode 100644
index 0000000..578c8a1
--- /dev/null
+++ b/src/SmartTest-Tests/SmTSettingsFinderTest.class.st
@@ -0,0 +1,26 @@
+Class {
+	#name : #SmTSettingsFinderTest,
+	#superclass : #SmTSettingsTest,
+	#category : 'SmartTest-Tests-Settings'
+}
+
+{ #category : #testing }
+SmTSettingsFinderTest class >> isAbstract [
+	^ self = SmTSettingsFinderTest 
+]
+
+{ #category : #running }
+SmTSettingsFinderTest >> finderStrategy [
+	self subclassResponsibility 
+]
+
+{ #category : #tests }
+SmTSettingsFinderTest >> testChangeFinderStrategy [
+	"Test changement of the runner in the setting (throught SmTRules methods)"
+
+	SmTRules finder: self finderStrategy.
+	self assert: (SmTRules testFinder smtFinder isKindOf: self finderStrategy).
+	self assert: (SmTRules testFinder smtFinder filter isKindOf: SmTRules filter).
+	self assert: (SmTRules testFinder smtFinder cache isKindOf: SmTRules cacheStrategy).
+	self assert: (SmTRules testFinder smtFinder filter isKindOf: SmTRules filter)
+]
diff --git a/src/SmartTest-Tests/SmTSettingsFinderTestCoverageTest.class.st b/src/SmartTest-Tests/SmTSettingsFinderTestCoverageTest.class.st
new file mode 100644
index 0000000..34fbd7f
--- /dev/null
+++ b/src/SmartTest-Tests/SmTSettingsFinderTestCoverageTest.class.st
@@ -0,0 +1,10 @@
+Class {
+	#name : #SmTSettingsFinderTestCoverageTest,
+	#superclass : #SmTSettingsFinderTest,
+	#category : 'SmartTest-Tests-Settings'
+}
+
+{ #category : #running }
+SmTSettingsFinderTestCoverageTest >> finderStrategy [
+	^ SmTTestCoverageTestFinderStrategy 
+]
diff --git a/src/SmartTest-Tests/SmTSettingsNoCacheTest.class.st b/src/SmartTest-Tests/SmTSettingsNoCacheTest.class.st
new file mode 100644
index 0000000..588c5b6
--- /dev/null
+++ b/src/SmartTest-Tests/SmTSettingsNoCacheTest.class.st
@@ -0,0 +1,10 @@
+Class {
+	#name : #SmTSettingsNoCacheTest,
+	#superclass : #SmTSettingsCacheTest,
+	#category : 'SmartTest-Tests-Settings'
+}
+
+{ #category : #settings }
+SmTSettingsNoCacheTest >> cacheStrategy [
+	^ SmTNoCacheStrategy 
+]
diff --git a/src/SmartTest-Tests/SmTSettingsPackagesRegexTest.class.st b/src/SmartTest-Tests/SmTSettingsPackagesRegexTest.class.st
new file mode 100644
index 0000000..a34eaae
--- /dev/null
+++ b/src/SmartTest-Tests/SmTSettingsPackagesRegexTest.class.st
@@ -0,0 +1,44 @@
+"
+We test if we correctly changed the regex when we changed it (or not) in the settings.
+"
+Class {
+	#name : #SmTSettingsPackagesRegexTest,
+	#superclass : #SmTSettingsTest,
+	#instVars : [
+		'oldRegex',
+		'oldFilter'
+	],
+	#category : 'SmartTest-Tests-Settings'
+}
+
+{ #category : #testing }
+SmTSettingsPackagesRegexTest class >> isAbstract [
+	 ^ false
+]
+
+{ #category : #running }
+SmTSettingsPackagesRegexTest >> dataForTestRegex [
+	^ 'SmartTes*|StarWars'
+]
+
+{ #category : #running }
+SmTSettingsPackagesRegexTest >> setUp [
+	super setUp.
+	
+	oldRegex := SmTRules packagesRegex.
+	oldFilter := SmTRules filter.
+]
+
+{ #category : #running }
+SmTSettingsPackagesRegexTest >> tearDown [
+	SmTRules packagesRegex: oldRegex.
+	SmTRules filter: oldFilter.
+	super tearDown
+]
+
+{ #category : #tests }
+SmTSettingsPackagesRegexTest >> testChangeRegexSmTSpecifyPackagesNameFilter [
+	SmTRules filter: SmTSpecifyPackagesNameFilter.
+	SmTRules packagesRegex: self dataForTestRegex.
+	self assert: SmTRules testFinder filter packagesRegex equals: self dataForTestRegex
+]
diff --git a/src/SmartTest-Tests/SmTSettingsRunnerDebugTest.class.st b/src/SmartTest-Tests/SmTSettingsRunnerDebugTest.class.st
new file mode 100644
index 0000000..ee032f6
--- /dev/null
+++ b/src/SmartTest-Tests/SmTSettingsRunnerDebugTest.class.st
@@ -0,0 +1,10 @@
+Class {
+	#name : #SmTSettingsRunnerDebugTest,
+	#superclass : #SmTSettingsRunnerTest,
+	#category : 'SmartTest-Tests-Settings'
+}
+
+{ #category : #running }
+SmTSettingsRunnerDebugTest >> runnerStrategy [
+	^ SmTRunnerStrategyDebug
+]
diff --git a/src/SmartTest-Tests/SmTSettingsRunnerNoticeTest.class.st b/src/SmartTest-Tests/SmTSettingsRunnerNoticeTest.class.st
new file mode 100644
index 0000000..317aa9c
--- /dev/null
+++ b/src/SmartTest-Tests/SmTSettingsRunnerNoticeTest.class.st
@@ -0,0 +1,10 @@
+Class {
+	#name : #SmTSettingsRunnerNoticeTest,
+	#superclass : #SmTSettingsRunnerTest,
+	#category : 'SmartTest-Tests-Settings'
+}
+
+{ #category : #running }
+SmTSettingsRunnerNoticeTest >> runnerStrategy [
+	^ SmTRunnerStrategyNotice
+]
diff --git a/src/SmartTest-Tests/SmTSettingsRunnerSmartTest.class.st b/src/SmartTest-Tests/SmTSettingsRunnerSmartTest.class.st
new file mode 100644
index 0000000..6e93d57
--- /dev/null
+++ b/src/SmartTest-Tests/SmTSettingsRunnerSmartTest.class.st
@@ -0,0 +1,10 @@
+Class {
+	#name : #SmTSettingsRunnerSmartTest,
+	#superclass : #SmTSettingsRunnerTest,
+	#category : 'SmartTest-Tests-Settings'
+}
+
+{ #category : #running }
+SmTSettingsRunnerSmartTest >> runnerStrategy [
+	^ SmTRunnerStrategySmart
+]
diff --git a/src/SmartTest-Tests/SmTSettingsRunnerTest.class.st b/src/SmartTest-Tests/SmTSettingsRunnerTest.class.st
new file mode 100644
index 0000000..0782815
--- /dev/null
+++ b/src/SmartTest-Tests/SmTSettingsRunnerTest.class.st
@@ -0,0 +1,24 @@
+Class {
+	#name : #SmTSettingsRunnerTest,
+	#superclass : #SmTSettingsTest,
+	#category : 'SmartTest-Tests-Settings'
+}
+
+{ #category : #testing }
+SmTSettingsRunnerTest class >> isAbstract [
+	^ self = SmTSettingsRunnerTest
+]
+
+{ #category : #running }
+SmTSettingsRunnerTest >> runnerStrategy [
+	self subclassResponsibility
+]
+
+{ #category : #tests }
+SmTSettingsRunnerTest >> testChangeRunnerStrategy [
+	"Test changement of the runner in the setting (throught SmTRules methods)"
+
+	SmTRules runner: self runnerStrategy.
+	self assert: SmTRules testFinder testRunner equals: self runnerStrategy.
+	self assert: SmTRules testFinder testingStrategy runner equals: self runnerStrategy.
+]
diff --git a/src/SmartTest-Tests/SmTSettingsTest.class.st b/src/SmartTest-Tests/SmTSettingsTest.class.st
new file mode 100644
index 0000000..7be0dcb
--- /dev/null
+++ b/src/SmartTest-Tests/SmTSettingsTest.class.st
@@ -0,0 +1,28 @@
+"
+These tests are here to assert that when we change the settings of SmartTest in the environnement, they are indeed changed.
+"
+Class {
+	#name : #SmTSettingsTest,
+	#superclass : #TestCase,
+	#instVars : [
+		'oldSettings'
+	],
+	#category : 'SmartTest-Tests-Settings'
+}
+
+{ #category : #testing }
+SmTSettingsTest class >> isAbstract [
+	^ true
+]
+
+{ #category : #running }
+SmTSettingsTest >> setUp [
+	super setUp.
+	oldSettings := SmTRules testFinder
+]
+
+{ #category : #running }
+SmTSettingsTest >> tearDown [
+	SmTRules testFinder: oldSettings.
+	super tearDown 
+]
diff --git a/src/SmartTest-Tests/SmTSettingsTestingStrategyAlwaysTest.class.st b/src/SmartTest-Tests/SmTSettingsTestingStrategyAlwaysTest.class.st
new file mode 100644
index 0000000..0a155e0
--- /dev/null
+++ b/src/SmartTest-Tests/SmTSettingsTestingStrategyAlwaysTest.class.st
@@ -0,0 +1,10 @@
+Class {
+	#name : #SmTSettingsTestingStrategyAlwaysTest,
+	#superclass : #SmTSettingsTestingStrategyTest,
+	#category : 'SmartTest-Tests-Settings'
+}
+
+{ #category : #running }
+SmTSettingsTestingStrategyAlwaysTest >> getTestingStrategy [
+	^ SmTTestingStrategyAlways 
+]
diff --git a/src/SmartTest-Tests/SmTSettingsTestingStrategyEachModificationTest.class.st b/src/SmartTest-Tests/SmTSettingsTestingStrategyEachModificationTest.class.st
new file mode 100644
index 0000000..0254d70
--- /dev/null
+++ b/src/SmartTest-Tests/SmTSettingsTestingStrategyEachModificationTest.class.st
@@ -0,0 +1,10 @@
+Class {
+	#name : #SmTSettingsTestingStrategyEachModificationTest,
+	#superclass : #SmTSettingsTestingStrategyTest,
+	#category : 'SmartTest-Tests-Settings'
+}
+
+{ #category : #running }
+SmTSettingsTestingStrategyEachModificationTest >> getTestingStrategy [
+	^ SmTTestingStrategyEachModification
+]
diff --git a/src/SmartTest-Tests/SmTSettingsTestingStrategyFiveMinutesTest.class.st b/src/SmartTest-Tests/SmTSettingsTestingStrategyFiveMinutesTest.class.st
new file mode 100644
index 0000000..1956cad
--- /dev/null
+++ b/src/SmartTest-Tests/SmTSettingsTestingStrategyFiveMinutesTest.class.st
@@ -0,0 +1,10 @@
+Class {
+	#name : #SmTSettingsTestingStrategyFiveMinutesTest,
+	#superclass : #SmTSettingsTestingStrategyTest,
+	#category : 'SmartTest-Tests-Settings'
+}
+
+{ #category : #running }
+SmTSettingsTestingStrategyFiveMinutesTest >> getTestingStrategy [
+	^ SmTTestingStrategyFiveMinutes 
+]
diff --git a/src/SmartTest-Tests/SmTSettingsTestingStrategyNeverTest.class.st b/src/SmartTest-Tests/SmTSettingsTestingStrategyNeverTest.class.st
new file mode 100644
index 0000000..360a67f
--- /dev/null
+++ b/src/SmartTest-Tests/SmTSettingsTestingStrategyNeverTest.class.st
@@ -0,0 +1,10 @@
+Class {
+	#name : #SmTSettingsTestingStrategyNeverTest,
+	#superclass : #SmTSettingsTestingStrategyTest,
+	#category : 'SmartTest-Tests-Settings'
+}
+
+{ #category : #running }
+SmTSettingsTestingStrategyNeverTest >> getTestingStrategy [
+	^ SmTTestingStrategyNever
+]
diff --git a/src/SmartTest-Tests/SmTSettingsTestingStrategyTest.class.st b/src/SmartTest-Tests/SmTSettingsTestingStrategyTest.class.st
new file mode 100644
index 0000000..9dad409
--- /dev/null
+++ b/src/SmartTest-Tests/SmTSettingsTestingStrategyTest.class.st
@@ -0,0 +1,25 @@
+Class {
+	#name : #SmTSettingsTestingStrategyTest,
+	#superclass : #SmTSettingsTest,
+	#category : 'SmartTest-Tests-Settings'
+}
+
+{ #category : #testing }
+SmTSettingsTestingStrategyTest class >> isAbstract [
+	^ self = SmTSettingsTestingStrategyTest 
+]
+
+{ #category : #running }
+SmTSettingsTestingStrategyTest >> getTestingStrategy [
+	 self subclassResponsibility 
+]
+
+{ #category : #tests }
+SmTSettingsTestingStrategyTest >> testChangeTestingStrategyStrategy [
+	"Test changement of the runner in the setting (throught SmTRules methods)"
+
+	SmTRules strategy: self getTestingStrategy .
+	self assert: (SmTRules testFinder testingStrategy isKindOf:  self getTestingStrategy ).
+	self assert: SmTRules testFinder testingStrategy runner equals: SmTRules runner.
+	self assert: SmTRules testFinder testingStrategy finder equals: SmTRules testFinder smtFinder
+]
diff --git a/src/SmartTest-Tests/SmTStaticDefaultClassPackageBasicCacheTest.class.st b/src/SmartTest-Tests/SmTStaticDefaultClassPackageBasicCacheTest.class.st
new file mode 100644
index 0000000..b076ed8
--- /dev/null
+++ b/src/SmartTest-Tests/SmTStaticDefaultClassPackageBasicCacheTest.class.st
@@ -0,0 +1,26 @@
+"
+I test the static finder with DefaultClassPackageFilter and BasicCache
+"
+Class {
+	#name : #SmTStaticDefaultClassPackageBasicCacheTest,
+	#superclass : #SmTFinderAbstractTest,
+	#category : 'SmartTest-Tests-Finder'
+}
+
+{ #category : #running }
+SmTStaticDefaultClassPackageBasicCacheTest >> setUp [
+	super setUp.
+	smartFinder resetCache
+]
+
+{ #category : #tests }
+SmTStaticDefaultClassPackageBasicCacheTest >> testStandardMethodSecondLevelSenders [
+	<CORATestBlacklisted>
+	| testsFound |
+	testsFound := self searchTestMethodsFor: SmTClass >> #method1.
+	
+	self assert: (testsFound includes: testMethod1).
+	self assert: (testsFound includes: testMethod2).
+	self deny: (testsFound includes: testMethod3).
+	self deny: (testsFound includes: testMethod4).
+]
diff --git a/src/SmartTest-Tests/SmTStaticDefaultClassPackageWithoutCacheTest.class.st b/src/SmartTest-Tests/SmTStaticDefaultClassPackageWithoutCacheTest.class.st
new file mode 100644
index 0000000..0a33079
--- /dev/null
+++ b/src/SmartTest-Tests/SmTStaticDefaultClassPackageWithoutCacheTest.class.st
@@ -0,0 +1,23 @@
+"
+In this class, the research is limited to the SmartTest-Tests-Data package, the research is static (it is using the SenderStrategy finder) and no cache is used.
+
+This comment is false, the research is not limited to SmartTest-Tests-Data package ! Should we change the comment or the tests ??
+"
+Class {
+	#name : #SmTStaticDefaultClassPackageWithoutCacheTest,
+	#superclass : #SmTFinderAbstractTest,
+	#category : 'SmartTest-Tests-Finder'
+}
+
+{ #category : #running }
+SmTStaticDefaultClassPackageWithoutCacheTest >> setUp [
+	super setUp.
+	smartFinder cacheStrategy: SmTNoCacheStrategy new.
+	cache := SmTNoCacheStrategy new
+]
+
+{ #category : #initialization }
+SmTStaticDefaultClassPackageWithoutCacheTest >> tearDown [
+	super tearDown.
+	smartFinder resetCache
+]
diff --git a/src/SmartTest-Tests/SmTStaticSpecifyPackageNameBasicCacheTest.class.st b/src/SmartTest-Tests/SmTStaticSpecifyPackageNameBasicCacheTest.class.st
new file mode 100644
index 0000000..7748651
--- /dev/null
+++ b/src/SmartTest-Tests/SmTStaticSpecifyPackageNameBasicCacheTest.class.st
@@ -0,0 +1,71 @@
+"
+In this class, the research is limited to the SmartTest-Tests-Data package and the research is static (it is using the SenderStrategy finder).
+"
+Class {
+	#name : #SmTStaticSpecifyPackageNameBasicCacheTest,
+	#superclass : #SmTFinderAbstractTest,
+	#category : 'SmartTest-Tests-Finder'
+}
+
+{ #category : #running }
+SmTStaticSpecifyPackageNameBasicCacheTest >> setUp [
+	super setUp.
+	smartFinder filter: (SmTSpecifyPackagesNameFilter packagesRegex: 'SmartTest-Tests-Data').
+	smartFinder resetCache
+]
+
+{ #category : #tests }
+SmTStaticSpecifyPackageNameBasicCacheTest >> testInheritance [
+	<CORATestBlacklisted>
+	"The test is outside of the scope of the test"
+	| testsFound |
+	testsFound := self searchTestMethodsFor: ('SmTP1' , 'Inheritance') asClass >> #method1Inheritance.
+
+	self assert: testsFound isEmpty.
+	self deny: (testsFound includes: ((('SmTP1InheritanceSubClass1','Test')asClass >> ('testMethod1','Inheritance')asSymbol) asRingDefinition  )).
+	self deny: (testsFound includes: ( (RGMethodDefinition className: ('SmTP1InheritanceSubClass2','Test') selector:	('testMethod1','Inheritance') asSymbol isMetaSide:	false) asRingDefinition  )).
+]
+
+{ #category : #tests }
+SmTStaticSpecifyPackageNameBasicCacheTest >> testStandardMethodFirstLevelSenders [
+	"Same test as in the superclass, but here there should be only one test found (there are many in the superclass)"
+
+	<CORATestBlacklisted>
+	| testsFound |
+	testsFound := self searchTestMethodsFor: SmTClass >> #method2.
+	self assert: testsFound size equals: 1.
+	self assert: (testsFound includes: testMethod2).
+	self deny: (testsFound includes: testMethod1).
+	self deny: (testsFound includes: testMethod3).
+	self deny: (testsFound includes: testMethod4)
+]
+
+{ #category : #tests }
+SmTStaticSpecifyPackageNameBasicCacheTest >> testStandardMethodSecondLevelSenders [
+	"In class, the research is limited to the SmartTest-Tests-Data package and is static. So the assertions are different. There should be only one test found that call the method2 message"
+	"Here the test founds should not include the test 'testInheritedMethod1' because 
+	- it is not in the package SmartTest-Tests-Data 
+	- it makes a reference to SmTClassOutSide new method2 and NOT SmTClass >> method2"
+
+	<CORATestBlacklisted>
+	| testsFound |
+	testsFound := self searchTestMethodsFor: SmTClass >> #method1.
+	self assert: testsFound size equals: 3.
+	self assert: (testsFound includes: testMethod1).
+	self assert: (testsFound includes: testMethod2).
+	self assert: (testsFound includes: testInheritedMethod1).
+	self deny: (testsFound includes: testMethod3).
+	self deny: (testsFound includes: testMethod4)
+]
+
+{ #category : #tests }
+SmTStaticSpecifyPackageNameBasicCacheTest >> testStandardMethodThirdLevelSenders [
+	<CORATestBlacklisted>
+	| testsFound | 
+	testsFound := self searchTestMethodsFor: SmTClass >> #method4.
+	self assert: testsFound size equals: 3.
+	self deny: (testsFound includes: (SmTClassTest  >> #testMethod1  )asRingDefinition).
+	self assert: (testsFound includes: (SmTClassTest  >> #testMethod2  )asRingDefinition).
+	self assert: (testsFound includes: (SmTClassTest  >> #testMethod3  )asRingDefinition).
+	self assert: (testsFound includes: (SmTClassTest  >> #testMethod4  )asRingDefinition).
+]
diff --git a/src/SmartTest-Tests/SmartFinderTest.class.st b/src/SmartTest-Tests/SmartFinderTest.class.st
new file mode 100644
index 0000000..d138e01
--- /dev/null
+++ b/src/SmartTest-Tests/SmartFinderTest.class.st
@@ -0,0 +1,121 @@
+"
+A SmartFinderTest is a test class for testing the behavior of SmartFinder
+"
+Class {
+	#name : #SmartFinderTest,
+	#superclass : #TestCase,
+	#instVars : [
+		'smartFinder'
+	],
+	#category : 'SmartTest-Tests-Finder'
+}
+
+{ #category : #initialization }
+SmartFinderTest >> initCache [
+	^ {((SmTClass >> #method1 )asRingDefinition
+		->
+			{(SmTClassTest >> #testMethod1 )asRingDefinition.
+			(SmTClassTest >> #testMethod2 )asRingDefinition.
+			(RGMethodDefinition className: 'SmTInheritClassTest' selector: #testMethod1 isMetaSide: false)} asSet).
+	((SmTClass >> #method2 )asRingDefinition
+		->
+			{(SmTClassTest >> #testMethod2 )asRingDefinition}
+				asSet).
+	((SmTClass >> #method3: )asRingDefinition
+		->
+			{(SmTClassTest >> #testMethod1 )asRingDefinition.
+			(SmTClassTest >> #testMethod2 )asRingDefinition.
+			(SmTClassTest >> #testMethod3 )asRingDefinition}
+				asSet).
+	((SmTClass >> #method4 )asRingDefinition
+		->
+			{(SmTClassTest >> #testMethod2 )asRingDefinition.
+			(SmTClassTest >> #testMethod3 )asRingDefinition.
+			(SmTClassTest >> #testMethod4 )asRingDefinition}
+				asSet).
+	((SmTClass2 >> #initialize )asRingDefinition
+		->
+			{(SmTClassTest >> #testMethod5 )asRingDefinition}
+				asSet).
+	((SmTClassTest >> #testMethod4 )asRingDefinition
+		->
+			{(SmTClassTest >> #testMethod4 )asRingDefinition}
+				asSet)} asDictionary
+]
+
+{ #category : #initialization }
+SmartFinderTest >> setUp [
+	smartFinder := SmartFinder new
+		cacheStrategy: SmTBasicCacheStrategy new;
+		filter: SmTNoFilter new;
+		testRunner: SmTRunnerStrategyDebug;
+		smtFinder: SmTSenderTestFinderStrategy new;
+		testingStrategy: SmTTestingStrategyEachModification new;
+		shouldTryToFindTestForDynamic: false
+]
+
+{ #category : #initialization }
+SmartFinderTest >> tearDown [
+	smartFinder clean
+]
+
+{ #category : #initialization }
+SmartFinderTest >> testChangeCacheClassFinder [
+	| cacheTmp |
+	smartFinder smtFinder.
+	cacheTmp := SmTBasicCacheStrategy new.
+	smartFinder cacheStrategy: cacheTmp.
+	self assert: smartFinder smtFinder cache equals: cacheTmp
+]
+
+{ #category : #initialization }
+SmartFinderTest >> testChangeFilterFinder [
+	| filterTmp |
+	smartFinder smtFinder.
+	filterTmp := SmTDefaultPackagesFilter new.
+	smartFinder filter: filterTmp.
+	self assert: smartFinder smtFinder filter equals: filterTmp
+]
+
+{ #category : #initialization }
+SmartFinderTest >> testChangeFilterTryFindTestFinder [
+	smartFinder smtFinder.
+	smartFinder shouldTryToFindTestForDynamic: true. 
+	self assert: smartFinder smtFinder shouldTryToFindTestForDynamic.
+	smartFinder shouldTryToFindTestForDynamic: false.
+	self deny: smartFinder smtFinder shouldTryToFindTestForDynamic
+]
+
+{ #category : #initialization }
+SmartFinderTest >> testChangeFinderTestingStrategy [
+	| finderTmp |
+	smartFinder testingStrategy.
+	finderTmp := SmTSenderTestFinderStrategy new.
+	smartFinder smtFinder: finderTmp.
+	self assert: smartFinder testingStrategy finder equals: finderTmp
+]
+
+{ #category : #initialization }
+SmartFinderTest >> testChangeRunnerTestingStrategy [
+	smartFinder testingStrategy.
+	smartFinder testRunner: SmTRunnerStrategyDebug.
+	self assert: smartFinder testingStrategy runner equals: SmTRunnerStrategyDebug.
+	smartFinder testRunner: SmTRunnerStrategyNotice.
+	self assert: smartFinder testingStrategy runner equals: SmTRunnerStrategyNotice
+]
+
+{ #category : #'tests-api' }
+SmartFinderTest >> testResetCache [
+	self assert: smartFinder currentCache isEmpty .
+	smartFinder setCacheValues: self initCache.
+	self assert: smartFinder currentCache isNotEmpty .
+	smartFinder resetCache.
+	self assert: smartFinder currentCache isEmpty 
+]
+
+{ #category : #initialization }
+SmartFinderTest >> testTwoSmartFinderhaveTwoDifferentCache [
+	| smartFinder2 |
+	smartFinder2 := SmartFinder new.
+	self deny: smartFinder currentCache == smartFinder2 currentCache
+]
diff --git a/src/SmartTest-Tests/package.st b/src/SmartTest-Tests/package.st
new file mode 100644
index 0000000..a8dea7b
--- /dev/null
+++ b/src/SmartTest-Tests/package.st
@@ -0,0 +1 @@
+Package { #name : #'SmartTest-Tests' }
diff --git a/src/SmartTest-UI/ClyOpenClassRelatedTestsCommand.class.st b/src/SmartTest-UI/ClyOpenClassRelatedTestsCommand.class.st
new file mode 100644
index 0000000..2eb1422
--- /dev/null
+++ b/src/SmartTest-UI/ClyOpenClassRelatedTestsCommand.class.st
@@ -0,0 +1,35 @@
+"
+I represent the button that open details of tests you should run from SmartTest (for a class)
+"
+Class {
+	#name : #ClyOpenClassRelatedTestsCommand,
+	#superclass : #ClyCritiqueCommand,
+	#category : 'SmartTest-UI-CalypsoExtension'
+}
+
+{ #category : #testing }
+ClyOpenClassRelatedTestsCommand class >> canBeExecutedInContext: aCriticContext [
+	^ SmTRelativeTestsCritique subclasses includes: aCriticContext selectedCritique class
+]
+
+{ #category : #execution }
+ClyOpenClassRelatedTestsCommand >> decorateTableCell: anItemCellMorph using: aCommandActivator [
+	anItemCellMorph
+		addExtraTool:
+			(IconicButton new
+				labelGraphic: (Smalltalk iconNamed: #smallWindow);
+				color: Color transparent;
+				borderColor: Color transparent;
+				target: self;
+				actionSelector: #execute)
+]
+
+{ #category : #'table decoration' }
+ClyOpenClassRelatedTestsCommand >> description [
+	^'Open Tests Selection'
+]
+
+{ #category : #execution }
+ClyOpenClassRelatedTestsCommand >> execute [
+	critique openTestsWindowWith: critique tests
+]
diff --git a/src/SmartTest-UI/ClyRunClassRelatedTestsCommand.class.st b/src/SmartTest-UI/ClyRunClassRelatedTestsCommand.class.st
new file mode 100644
index 0000000..0f267d1
--- /dev/null
+++ b/src/SmartTest-UI/ClyRunClassRelatedTestsCommand.class.st
@@ -0,0 +1,33 @@
+"
+I represent the button that run the tests that SmartTest's found about a class
+"
+Class {
+	#name : #ClyRunClassRelatedTestsCommand,
+	#superclass : #ClyCritiqueCommand,
+	#category : 'SmartTest-UI-CalypsoExtension'
+}
+
+{ #category : #execution }
+ClyRunClassRelatedTestsCommand >> canBeExecutedInContext: aCriticContext [
+
+	^ (self canBeExecutedInDropContext: aCriticContext) and: [ SmTRelativeTestsCritique subclasses includes: aCriticContext class ]
+]
+
+{ #category : #'table decoration' }
+ClyRunClassRelatedTestsCommand >> decorateTableCell: anItemCellMorph using: aCommandActivator [
+
+	| button |
+	(self canBeExecutedInContext: critique) ifFalse: [ ^ self ].
+	button := SmTIconFabric createIconForMethods: critique tests.
+		
+	self decorateTableCell: anItemCellMorph with: button
+]
+
+{ #category : #'table decoration' }
+ClyRunClassRelatedTestsCommand >> description [
+	^'Run tests'
+]
+
+{ #category : #execution }
+ClyRunClassRelatedTestsCommand >> execute [
+]
diff --git a/src/SmartTest-UI/SmTAutoTestsWindows.class.st b/src/SmartTest-UI/SmTAutoTestsWindows.class.st
new file mode 100644
index 0000000..97e792a
--- /dev/null
+++ b/src/SmartTest-UI/SmTAutoTestsWindows.class.st
@@ -0,0 +1,78 @@
+"
+The windows where we can select test
+"
+Class {
+	#name : #SmTAutoTestsWindows,
+	#superclass : #ComposableModel,
+	#instVars : [
+		'testList',
+		'button',
+		'icons'
+	],
+	#category : 'SmartTest-UI-Morph'
+}
+
+{ #category : #specs }
+SmTAutoTestsWindows class >> defaultSpec [
+	^ SpecLayout composed
+		newRow: [ :row | row  add: #testList] top: 0 bottom: 0.2 ;
+		newRow: [ :row | row  add: #button]  top: 0.8 bottom: 0;
+		yourself
+]
+
+{ #category : #accessing }
+SmTAutoTestsWindows >> button [
+	^button
+	
+]
+
+{ #category : #accessing }
+SmTAutoTestsWindows >> extent [
+	^ 400 @ 200
+]
+
+{ #category : #accessing }
+SmTAutoTestsWindows >> icons [ 
+	^icons ifNil: [ icons := OrderedCollection new ]
+	
+]
+
+{ #category : #initialization }
+SmTAutoTestsWindows >> initializePresenter [
+	"Currently useless"
+
+	button
+		action:
+			[ testList listItems withIndexDo: [ :el :id | (self icons at: id) doButtonAction ] ]
+]
+
+{ #category : #initialization }
+SmTAutoTestsWindows >> initializeWidgets [
+	testList := IconListModel new.
+	button := self newButton.
+	button label: 'Run all test'.
+	self focusOrder add: testList.
+	
+
+]
+
+{ #category : #accessing }
+SmTAutoTestsWindows >> setList: aTestList [
+	^ testList
+		items: aTestList;
+		icons: [ :testMethod | 
+			| ib |
+			ib := SmTIconFabric createIconForMethod: testMethod.
+			self icons add: ib ]
+]
+
+{ #category : #accessing }
+SmTAutoTestsWindows >> testList [
+	^testList
+	
+]
+
+{ #category : #accessing }
+SmTAutoTestsWindows >> title [
+	^ 'AutoTest Selection'.
+]
diff --git a/src/SmartTest-UI/SmTBigButtonCollector.class.st b/src/SmartTest-UI/SmTBigButtonCollector.class.st
new file mode 100644
index 0000000..0883232
--- /dev/null
+++ b/src/SmartTest-UI/SmTBigButtonCollector.class.st
@@ -0,0 +1,167 @@
+"
+The collector used by the Listener to save all the relative test method
+"
+Class {
+	#name : #SmTBigButtonCollector,
+	#superclass : #SmTCollector,
+	#instVars : [
+		'morph',
+		'collector'
+	],
+	#classInstVars : [
+		'activated',
+		'bigButton'
+	],
+	#category : 'SmartTest-UI-Collector'
+}
+
+{ #category : #accessing }
+SmTBigButtonCollector class >> activated [
+	^ activated ifNil: [ activated := false ]
+]
+
+{ #category : #accessing }
+SmTBigButtonCollector class >> activated: aSelector [
+	activated := aSelector.
+	bigButton activated: aSelector
+]
+
+{ #category : #accessing }
+SmTBigButtonCollector class >> bigButton [
+	^ bigButton
+]
+
+{ #category : #accessing }
+SmTBigButtonCollector class >> initialize [
+	bigButton := self new
+]
+
+{ #category : #accessing }
+SmTBigButtonCollector class >> reset [
+	self bigButton collector: nil
+]
+
+{ #category : #accessing }
+SmTBigButtonCollector class >> settingsOn: aBuilder [
+	<systemsettings>
+	(aBuilder setting: #activated)
+		parent: 'SmartTest';
+		target: self;
+		order: 0.01;
+		label: 'SmartTest Collect Button';
+		description: 'Toogle to activate/disable the Big Button'.
+	(aBuilder group: #reset)
+		label: 'Big Button Reset Cache';
+		target: self;
+		parent: #SmartTest;
+		order: 8;
+		dialog: [ SimpleButtonMorph new
+				target: self;
+				label: 'Reset Collect Button Cache';
+				actionSelector: #reset;
+				themeChanged;
+				yourself ];
+		description:
+			'Reset the cache of SmartTest
+		SmTTestFinderStrategy methodToTest'
+]
+
+{ #category : #'initialize - release' }
+SmTBigButtonCollector class >> unload [
+	self activated: false
+]
+
+{ #category : #accessing }
+SmTBigButtonCollector >> activated: aSelector [
+	aSelector ifTrue: [ self enable ] ifFalse: [ self disable ].
+]
+
+{ #category : #accessing }
+SmTBigButtonCollector >> changeColorFromTestResult: aTestResult [
+	morph buttonMorph color: Color gray.
+	aTestResult passedCount > 0
+		ifTrue: [ morph buttonMorph color: Color green ].
+	aTestResult hasFailures
+		ifTrue: [ morph buttonMorph color: Color yellow ].
+	aTestResult hasErrors
+		ifTrue: [ morph buttonMorph color: Color red ].
+]
+
+{ #category : #accessing }
+SmTBigButtonCollector >> collector [
+	^ collector ifNil: [ collector := Set new ]
+]
+
+{ #category : #accessing }
+SmTBigButtonCollector >> collector: anObject [
+
+	collector := anObject
+]
+
+{ #category : #accessing }
+SmTBigButtonCollector >> disable [
+	"Do not receiver any system change notification anymore"
+	morph window isClosed ifFalse: [ morph window close] .
+	SystemAnnouncer uniqueInstance unsubscribe: self
+]
+
+{ #category : #accessing }
+SmTBigButtonCollector >> enable [
+	morph openWithSpec.
+	SystemAnnouncer uniqueInstance unsubscribe: self.
+	{(MethodModified -> #methodModified:)} do: [ :pair | SystemAnnouncer uniqueInstance weak when: pair key send: pair value to: self ].
+
+]
+
+{ #category : #accessing }
+SmTBigButtonCollector >> initialize [
+	collector := Set new.
+	morph := SmTButtonResultWindow new.
+	morph controler: self.
+]
+
+{ #category : #accessing }
+SmTBigButtonCollector >> methodModified: anAnnouncement [
+	
+	[| listOfTest |
+	listOfTest := SmTRules testFinder researchTestsForMethod: anAnnouncement newMethod. 
+	self collector
+		addAll: listOfTest.
+	self updateUIAfterAddingMethod: listOfTest.] forkAt: 20 named: 'BigButton'
+]
+
+{ #category : #accessing }
+SmTBigButtonCollector >> notify [
+	| aTestResult |
+	aTestResult := SmTRules runner
+		runCases:
+			(self collector
+				collect:
+					[ :aMethodReference | aMethodReference methodClass selector: aMethodReference selector ]).
+	self
+		collector:
+			(self collector
+				reject: [ :a | 
+					((TestResult historyAt: a methodClass) at: #passed)
+						includes: a selector ]).
+	self updateNumberOfTheProgressCircle.
+	self changeColorFromTestResult: aTestResult.
+	morph fillFailedTestListFromTestResult: aTestResult
+]
+
+{ #category : #accessing }
+SmTBigButtonCollector >> updateList: listOfTest [
+	morph addToListTestsMethods: listOfTest
+]
+
+{ #category : #accessing }
+SmTBigButtonCollector >> updateNumberOfTheProgressCircle [
+	morph buttonText acceptValue: self collector size asTwoCharacterString.
+	morph buttonMorph color: Color gray.
+]
+
+{ #category : #accessing }
+SmTBigButtonCollector >> updateUIAfterAddingMethod: listOfTest [
+	self updateNumberOfTheProgressCircle.
+	self updateList: listOfTest
+]
diff --git a/src/SmartTest-UI/SmTButtonResultWindow.class.st b/src/SmartTest-UI/SmTButtonResultWindow.class.st
new file mode 100644
index 0000000..e52945e
--- /dev/null
+++ b/src/SmartTest-UI/SmTButtonResultWindow.class.st
@@ -0,0 +1,147 @@
+"
+I show all the results in a window.
+"
+Class {
+	#name : #SmTButtonResultWindow,
+	#superclass : #ComposablePresenter,
+	#instVars : [
+		'testList',
+		'button',
+		'icons',
+		'controler',
+		'buttonText'
+	],
+	#category : 'SmartTest-UI-Morph'
+}
+
+{ #category : #specs }
+SmTButtonResultWindow class >> defaultSpec [
+	^ SpecLayout composed
+		newColumn: [ :row | row add: #button ] left: 0 right: 0.6;
+		newColumn: [ :row | row add: #testList ] left: 0.4 right: 1;
+		yourself
+]
+
+{ #category : #accessing }
+SmTButtonResultWindow >> addToListTestsMethods: newTestMethod [
+	| list |
+	list := testList listItems asOrderedCollection.
+	list := (list collect: [ :a | (a class lookupSelector: a selector) methodReference  ]) asSet.
+	list addAll: newTestMethod.
+	self setList: ((list collect: [:methodReference | methodReference methodClass selector: methodReference selector]) asOrderedCollection sort: [ :a :b | a asString < b asString ] ) 
+]
+
+{ #category : #accessing }
+SmTButtonResultWindow >> button [
+	^ button
+]
+
+{ #category : #accessing }
+SmTButtonResultWindow >> button: anObject [
+	button := anObject
+]
+
+{ #category : #accessing }
+SmTButtonResultWindow >> buttonMorph [
+	^ button morph
+]
+
+{ #category : #accessing }
+SmTButtonResultWindow >> buttonText [
+	^ buttonText
+]
+
+{ #category : #accessing }
+SmTButtonResultWindow >> buttonText: anObject [
+	buttonText := anObject
+]
+
+{ #category : #accessing }
+SmTButtonResultWindow >> controler [
+	^controler
+]
+
+{ #category : #accessing }
+SmTButtonResultWindow >> controler: anObject [
+	 self button morph controler: anObject
+]
+
+{ #category : #accessing }
+SmTButtonResultWindow >> extent [
+	^ 600 @ 300
+]
+
+{ #category : #accessing }
+SmTButtonResultWindow >> fillFailedTestListFromTestResult: aTestResult [
+	
+	| list list2 |
+	list := testList listItems asOrderedCollection.
+	list := list
+		reject: [ :a | ((TestResult historyAt: a class) at: #passed) includes: a selector ].
+	list addAll: aTestResult errors.
+	list addAll: aTestResult failures.
+	list := (list collect: [ :a | (a class lookupSelector: a selector) methodReference ])
+		asSet.
+	self
+		setList:
+			((list
+				collect: [ :methodReference | methodReference methodClass selector: methodReference selector ])
+				asOrderedCollection sort: [ :a :b | a asString < b asString ])
+]
+
+{ #category : #accessing }
+SmTButtonResultWindow >> icons [
+	^icons ifNil: [ icons := OrderedCollection new ]
+	
+]
+
+{ #category : #accessing }
+SmTButtonResultWindow >> icons: anObject [
+	icons := anObject
+]
+
+{ #category : #accessing }
+SmTButtonResultWindow >> initializeWidgets [
+	testList := IconListModel new.
+	button := (SmTProgressCircle new
+		controler: self;
+		percentage: 100;
+		extent: 400@200;
+		color: Color gray) asSpecAdapter.
+	
+	buttonText := ('00' asStringMorph
+		font: (LogicalFont familyName: 'Source Sans Pro' pointSize: 50) emphasis: 2;
+		position: 60@60;
+		color: Color white;
+		yourself).
+	
+	self buttonMorph addMorphFront: buttonText.
+		
+
+	self focusOrder add: testList.
+]
+
+{ #category : #initialization }
+SmTButtonResultWindow >> setList: aTestList [
+	^ testList
+		items: aTestList;
+		icons: [ :testMethod | 
+			| ib |
+			ib := SmTIconFabric createIconForMethod: testMethod.
+			self icons add: ib ]
+]
+
+{ #category : #accessing }
+SmTButtonResultWindow >> testList [
+	^ testList
+]
+
+{ #category : #accessing }
+SmTButtonResultWindow >> testList: anObject [
+	testList := anObject
+]
+
+{ #category : #accessing }
+SmTButtonResultWindow >> title [
+	^ 'Tests Results'.
+]
diff --git a/src/SmartTest-UI/SmTCollector.class.st b/src/SmartTest-UI/SmTCollector.class.st
new file mode 100644
index 0000000..c455567
--- /dev/null
+++ b/src/SmartTest-UI/SmTCollector.class.st
@@ -0,0 +1,28 @@
+"
+This collector exists to describe all the ways the tests can be collected.
+"
+Class {
+	#name : #SmTCollector,
+	#superclass : #Object,
+	#category : 'SmartTest-UI-Collector'
+}
+
+{ #category : #accessing }
+SmTCollector >> addTestMethod: aTestMethod [  
+	self collector add: aTestMethod 
+]
+
+{ #category : #accessing }
+SmTCollector >> addTestMethods: aCollectionOfTestsMethod [
+	self collector addAll: aCollectionOfTestsMethod 
+]
+
+{ #category : #accessing }
+SmTCollector >> collector [
+	self subclassResponsibility 
+]
+
+{ #category : #accessing }
+SmTCollector >> flush [
+	self collector removeAll
+]
diff --git a/src/SmartTest-UI/SmTFivesMinutesCollector.class.st b/src/SmartTest-UI/SmTFivesMinutesCollector.class.st
new file mode 100644
index 0000000..e1c4637
--- /dev/null
+++ b/src/SmartTest-UI/SmTFivesMinutesCollector.class.st
@@ -0,0 +1,88 @@
+"
+I collect all the tests and run it each 5 minutes
+"
+Class {
+	#name : #SmTFivesMinutesCollector,
+	#superclass : #SmTCollector,
+	#instVars : [
+		'process'
+	],
+	#classVars : [
+		'Collector',
+		'UniqueInstance'
+	],
+	#category : 'SmartTest-UI-Collector'
+}
+
+{ #category : #accessing }
+SmTFivesMinutesCollector class >> addTestMethod: aTestMethod [
+	self uniqueInstance addTestMethod: aTestMethod
+]
+
+{ #category : #accessing }
+SmTFivesMinutesCollector class >> addTestMethods: aCollectionOfTestMethods [
+	self uniqueInstance addTestMethods: aCollectionOfTestMethods
+]
+
+{ #category : #accessing }
+SmTFivesMinutesCollector class >> start [
+	self uniqueInstance start
+]
+
+{ #category : #accessing }
+SmTFivesMinutesCollector class >> stop [
+	self uniqueInstance stop
+]
+
+{ #category : #accessing }
+SmTFivesMinutesCollector class >> uniqueInstance [
+	^UniqueInstance ifNil: [ UniqueInstance := self new]
+]
+
+{ #category : #accessing }
+SmTFivesMinutesCollector >> collector [
+	^Collector ifNil: [ Collector := Set new. ]
+]
+
+{ #category : #accessing }
+SmTFivesMinutesCollector >> process [
+	^ process
+		ifNil: [ process := [ [ true ]
+				whileTrue: [ (Delay forSeconds: 300) wait.
+					self collector
+						ifNotEmpty: [ | tempOrderedCollection |
+							tempOrderedCollection := OrderedCollection new.
+							tempOrderedCollection add: self collector .
+							([ :aCollectionOfTest | 
+							| tempResult |
+							tempResult := SmTRules runner runCases: aCollectionOfTest.
+							self showResult: tempResult ] newProcessWith: tempOrderedCollection) resume.
+							self reset ] ] ] newProcess ]
+]
+
+{ #category : #action }
+SmTFivesMinutesCollector >> reset [
+	Collector := nil.
+]
+
+{ #category : #'UI specific' }
+SmTFivesMinutesCollector >> showResult: aTestResult [
+	| ui |
+
+	(aTestResult hasErrors or: aTestResult hasFailures)
+		ifFalse: [ ^ self ].
+	ui := SmTAutoTestsWindows new.
+	ui setList: aTestResult tests.
+	ui openWithSpec.
+
+]
+
+{ #category : #action }
+SmTFivesMinutesCollector >> start [
+	self process resume.
+]
+
+{ #category : #action }
+SmTFivesMinutesCollector >> stop [
+	self process suspend 
+]
diff --git a/src/SmartTest-UI/SmTIconFabric.class.st b/src/SmartTest-UI/SmTIconFabric.class.st
new file mode 100644
index 0000000..ba0e03f
--- /dev/null
+++ b/src/SmartTest-UI/SmTIconFabric.class.st
@@ -0,0 +1,46 @@
+"
+I'm a tool which create the icons
+"
+Class {
+	#name : #SmTIconFabric,
+	#superclass : #Object,
+	#category : 'SmartTest-UI-Tools'
+}
+
+{ #category : #creation }
+SmTIconFabric class >> createIconForMethod: testMethod [
+	| ib |
+	ib := IconicButton new.
+	ib
+		target: SmTRules runner;
+		actionSelector: #runCase:notifyIcon:;
+		arguments:
+			{testMethod.
+			ib};
+		labelGraphic:
+			(self
+				iconNamed: (SmTRules runner iconForTestFromTestCaseHistory: testMethod));
+		color: Color transparent;
+		borderColor: Color transparent;
+		helpText: 'Run the test'.
+	^ ib
+]
+
+{ #category : #creation }
+SmTIconFabric class >> createIconForMethods: aTestCollection [
+	| ib |
+	ib := IconicButton new.
+	ib
+		target: SmTRules runner;
+		actionSelector: #runCases:notifyIcon:;
+		arguments:
+			{aTestCollection.
+			ib};
+		labelGraphic:
+			(self
+				iconNamed: (SmTRules runner iconForTestFromTestsCasesHistory: aTestCollection));
+		color: Color transparent;
+		borderColor: Color transparent;
+		helpText: 'Run the test'.
+	^ ib
+]
diff --git a/src/SmartTest-UI/SmTProgressCircle.class.st b/src/SmartTest-UI/SmTProgressCircle.class.st
new file mode 100644
index 0000000..8f3b47a
--- /dev/null
+++ b/src/SmartTest-UI/SmTProgressCircle.class.st
@@ -0,0 +1,64 @@
+"
+pc := ProgressCircle new color: Color blue.
+pc extent: 500@500.
+pc percentage: 0.3.
+pc position: pc topRight.
+pc openInWorld.
+
+mes := MorphEventSubscription new
+	recipient: CORAEventRecipient new;
+	selector: #hello.
+
+meh := MorphicEventHandler new 
+	addSubscription: mes toEvent: #click.
+
+pc eventHandler: meh.
+
+
+"
+Class {
+	#name : #SmTProgressCircle,
+	#superclass : #CircleMorph,
+	#instVars : [
+		'percentage',
+		'controler'
+	],
+	#category : 'SmartTest-UI-Collector'
+}
+
+{ #category : #accessing }
+SmTProgressCircle >> controler: anObject [
+	controler := anObject
+]
+
+{ #category : #drawing }
+SmTProgressCircle >> drawOn: aCanvas [
+	aCanvas
+		fillOval: bounds
+		fillStyle: self fillStyle
+		withPercentage: self percentage
+		borderWidth: borderWidth
+		borderColor: borderColor
+]
+
+{ #category : #drawing }
+SmTProgressCircle >> handlesMouseDown: anEvent [ 
+    ^ true
+]
+
+{ #category : #drawing }
+SmTProgressCircle >> mouseDown: anEvent [
+	controler notify
+     
+]
+
+{ #category : #accessing }
+SmTProgressCircle >> percentage [
+	^ percentage
+]
+
+{ #category : #accessing }
+SmTProgressCircle >> percentage: anObject [
+	percentage := anObject.
+	self changed
+]
diff --git a/src/SmartTest-UI/package.st b/src/SmartTest-UI/package.st
new file mode 100644
index 0000000..a6344c0
--- /dev/null
+++ b/src/SmartTest-UI/package.st
@@ -0,0 +1 @@
+Package { #name : #'SmartTest-UI' }
diff --git a/SmartTest.package/ASTCacheResetTest.extension/instance/testCacheResetPreserveLinks.st b/src/SmartTest/ASTCacheResetTest.extension.st
similarity index 57%
rename from SmartTest.package/ASTCacheResetTest.extension/instance/testCacheResetPreserveLinks.st
rename to src/SmartTest/ASTCacheResetTest.extension.st
index 461c8ea..e83f8c3 100644
--- a/SmartTest.package/ASTCacheResetTest.extension/instance/testCacheResetPreserveLinks.st
+++ b/src/SmartTest/ASTCacheResetTest.extension.st
@@ -1,9 +1,12 @@
-*SmartTest
-testCacheResetPreserveLinks
+Extension { #name : #ASTCacheResetTest }
+
+{ #category : #'*SmartTest' }
+ASTCacheResetTest >> testCacheResetPreserveLinks [
 	<CORATestBlacklisted>
 	self annotatedMethod.
 	self assert: counter equals: 1.
 	ASTCache reset.
 	self assert: (self class >> #annotatedMethod) ast statements last value links anyOne == link.
 	self annotatedMethod.
-	self assert: counter equals: 2
\ No newline at end of file
+	self assert: counter equals: 2
+]
diff --git a/src/SmartTest/CompiledMethod.extension.st b/src/SmartTest/CompiledMethod.extension.st
new file mode 100644
index 0000000..810599b
--- /dev/null
+++ b/src/SmartTest/CompiledMethod.extension.st
@@ -0,0 +1,29 @@
+Extension { #name : #CompiledMethod }
+
+{ #category : #'*SmartTest' }
+CompiledMethod >> asTestCase [
+	^ self methodClass selector: self selector
+]
+
+{ #category : #'*SmartTest' }
+CompiledMethod >> belongsToTestCase [
+	^ self methodClass isKindOf: TestCase class.
+]
+
+{ #category : #'*SmartTest' }
+CompiledMethod >> isTestMethod [ 
+  	^ 	self belongsToTestCase
+		and: [ self methodClass allTestSelectors includes: self selector].
+]
+
+{ #category : #'*SmartTest' }
+CompiledMethod >> isTestSetUpMethod [
+	^ (self selector = #setUp) 
+	   and: [self belongsToTestCase].
+]
+
+{ #category : #'*SmartTest' }
+CompiledMethod >> isTestTearDownMethod [
+	^ (self selector = #tearDown) 
+	   and:[self belongsToTestCase]. 
+]
diff --git a/src/SmartTest/FormCanvas.extension.st b/src/SmartTest/FormCanvas.extension.st
new file mode 100644
index 0000000..b4f8b89
--- /dev/null
+++ b/src/SmartTest/FormCanvas.extension.st
@@ -0,0 +1,49 @@
+Extension { #name : #FormCanvas }
+
+{ #category : #'*SmartTest' }
+FormCanvas >> fillOval: r color: fillColor withPercentage: aFloat borderWidth: borderWidth borderColor: borderColor [
+	| rect |
+
+	"draw the border of the oval"
+	rect := (r translateBy: origin) truncated.
+	(borderWidth = 0 or: [borderColor isTransparent]) ifFalse:[
+		self setFillColor: borderColor.
+		(r area > 10000 or: [fillColor isTranslucent]) 
+			ifTrue: [port frameOval: rect borderWidth: borderWidth]
+			ifFalse: [port fillOval: rect]]. "faster this way"
+	"fill the inside"
+	fillColor isTransparent ifFalse:
+		[self setFillColor: fillColor.
+		port fillOval: (rect insetBy: borderWidth)].
+
+]
+
+{ #category : #'*SmartTest' }
+FormCanvas >> fillOval: aRectangle fillStyle: aFillStyle withPercentage: aFloat borderWidth: bw borderColor: bc [
+	"Fill the given oval."
+
+	(aFillStyle isBitmapFill and:[aFillStyle isKindOf: InfiniteForm]) ifTrue:[
+		^self fillOval: aRectangle color: aFillStyle borderWidth: bw borderColor: bc].
+	(aFillStyle isSolidFill) ifTrue:[
+		^self fillOval: aRectangle withPercentage: aFloat color: aFillStyle asColor borderWidth: bw borderColor: bc].
+	"Use a BalloonCanvas instead"
+	self balloonFillOval: aRectangle fillStyle: aFillStyle borderWidth: bw borderColor: bc
+]
+
+{ #category : #'*SmartTest' }
+FormCanvas >> fillOval: r withPercentage: aFloat color: fillColor borderWidth: borderWidth borderColor: borderColor [
+	| rect |
+
+	"draw the border of the oval"
+	rect := (r translateBy: origin) truncated.
+	(borderWidth = 0 or: [borderColor isTransparent]) ifFalse:[
+		self setFillColor: borderColor.
+		(r area > 10000 or: [fillColor isTranslucent]) 
+			ifTrue: [port frameOval: rect borderWidth: borderWidth]
+			ifFalse: [port fillOval: rect]]. "faster this way"
+	"fill the inside"
+	fillColor isTransparent ifFalse:
+		[self setFillColor: fillColor.
+		port fillOval: (rect insetBy: borderWidth) withPercentage: aFloat].
+
+]
diff --git a/SmartTest.package/GrafPort.extension/instance/fillOval.withPercentage..st b/src/SmartTest/GrafPort.extension.st
similarity index 85%
rename from SmartTest.package/GrafPort.extension/instance/fillOval.withPercentage..st
rename to src/SmartTest/GrafPort.extension.st
index 6f1b5c6..9ead032 100644
--- a/SmartTest.package/GrafPort.extension/instance/fillOval.withPercentage..st
+++ b/src/SmartTest/GrafPort.extension.st
@@ -1,5 +1,7 @@
-*SmartTest
-fillOval: rect withPercentage: aFloat
+Extension { #name : #GrafPort }
+
+{ #category : #'*SmartTest' }
+GrafPort >> fillOval: rect withPercentage: aFloat [
 	| centerX centerY nextY yBias xBias outer nextOuterX |
 	rect area <= 0
 		ifTrue: [ ^ self ].
@@ -27,4 +29,5 @@ fillOval: rect withPercentage: aFloat
 	height := 1 + yBias.
 	width := rect width.
 	destX := rect left.
-	self copyBits
\ No newline at end of file
+	self copyBits
+]
diff --git a/src/SmartTest/HDTestCoverage.extension.st b/src/SmartTest/HDTestCoverage.extension.st
new file mode 100644
index 0000000..299d1c0
--- /dev/null
+++ b/src/SmartTest/HDTestCoverage.extension.st
@@ -0,0 +1,6 @@
+Extension { #name : #HDTestCoverage }
+
+{ #category : #'*SmartTest' }
+HDTestCoverage >> unmark [
+	hasRun := false
+]
diff --git a/src/SmartTest/ManifestSmartTest.class.st b/src/SmartTest/ManifestSmartTest.class.st
new file mode 100644
index 0000000..d0783b8
--- /dev/null
+++ b/src/SmartTest/ManifestSmartTest.class.st
@@ -0,0 +1,20 @@
+"
+I store metadata for this package. These meta data are used by other tools such as the SmalllintManifestChecker and the critics Browser
+
+THIS CLASS SHOULD BE RENAMED BECAUSE IT IS NOT AN EVENT
+"
+Class {
+	#name : #ManifestSmartTest,
+	#superclass : #PackageManifest,
+	#category : 'SmartTest'
+}
+
+{ #category : #'meta-data' }
+ManifestSmartTest class >> description [ ^ 'CORA is an extention of QA which display information about test'
+]
+
+{ #category : #'meta-data' }
+ManifestSmartTest class >> preUnload [
+	super
+		preUnload.
+]
diff --git a/SmartTest.package/NautilusRefactoring.extension/instance/undoLabel.st b/src/SmartTest/NautilusRefactoring.extension.st
similarity index 69%
rename from SmartTest.package/NautilusRefactoring.extension/instance/undoLabel.st
rename to src/SmartTest/NautilusRefactoring.extension.st
index d5195d0..e88b957 100644
--- a/SmartTest.package/NautilusRefactoring.extension/instance/undoLabel.st
+++ b/src/SmartTest/NautilusRefactoring.extension.st
@@ -1,5 +1,7 @@
-*SmartTest
-undoLabel
+Extension { #name : #NautilusRefactoring }
+
+{ #category : #'*SmartTest' }
+NautilusRefactoring >> undoLabel [
 	| stream |
 	stream := WriteStream with: 'Undo'.
 	self changeManager hasUndoableOperations
@@ -12,4 +14,5 @@ undoLabel
 			stream
 				position: 40;
 				nextPutAll: '...' ].
-	^ stream contents
\ No newline at end of file
+	^ stream contents
+]
diff --git a/src/SmartTest/RGMethodDefinition.extension.st b/src/SmartTest/RGMethodDefinition.extension.st
new file mode 100644
index 0000000..e0e4fbd
--- /dev/null
+++ b/src/SmartTest/RGMethodDefinition.extension.st
@@ -0,0 +1,11 @@
+Extension { #name : #RGMethodDefinition }
+
+{ #category : #'*SmartTest' }
+RGMethodDefinition >> isInitializer [
+	^ self selector = #initialize
+]
+
+{ #category : #'*SmartTest' }
+RGMethodDefinition >> senders [
+	^ SystemNavigation default allSendersOf: self selector
+]
diff --git a/src/SmartTest/ReProperty.extension.st b/src/SmartTest/ReProperty.extension.st
new file mode 100644
index 0000000..b148b94
--- /dev/null
+++ b/src/SmartTest/ReProperty.extension.st
@@ -0,0 +1,7 @@
+Extension { #name : #ReProperty }
+
+{ #category : #'*SmartTest' }
+ReProperty >> iconicButtons [
+
+	^ #()
+]
diff --git a/src/SmartTest/SmTAnnouncer.class.st b/src/SmartTest/SmTAnnouncer.class.st
new file mode 100644
index 0000000..7901039
--- /dev/null
+++ b/src/SmartTest/SmTAnnouncer.class.st
@@ -0,0 +1,21 @@
+"
+The announcer process announces that some event has occurred and disseminates it to all the listeners that are interested in the event. 
+"
+Class {
+	#name : #SmTAnnouncer,
+	#superclass : #Announcer,
+	#classInstVars : [
+		'announcer'
+	],
+	#category : 'SmartTest-Listener'
+}
+
+{ #category : #accessing }
+SmTAnnouncer class >> announcer [
+	^ announcer ifNil: [ announcer := SmTAnnouncer new ]
+]
+
+{ #category : #accessing }
+SmTAnnouncer class >> shouldAnnounce [
+	^ SmTTestListener activated
+]
diff --git a/src/SmartTest/SmTBasicCacheNeverResetStrategy.class.st b/src/SmartTest/SmTBasicCacheNeverResetStrategy.class.st
new file mode 100644
index 0000000..533ac81
--- /dev/null
+++ b/src/SmartTest/SmTBasicCacheNeverResetStrategy.class.st
@@ -0,0 +1,15 @@
+"
+This strategy always adds the tests to the cache and always gives the tests when asked.
+
+When using this strategy, the cache is never reseted, even when told so.
+"
+Class {
+	#name : #SmTBasicCacheNeverResetStrategy,
+	#superclass : #SmTBasicCacheStrategy,
+	#category : 'SmartTest-Cache'
+}
+
+{ #category : #private }
+SmTBasicCacheNeverResetStrategy >> resetCache [
+	"Never reset the cache for this strategy."
+]
diff --git a/src/SmartTest/SmTBasicCacheResetEvery5ChangesStrategy.class.st b/src/SmartTest/SmTBasicCacheResetEvery5ChangesStrategy.class.st
new file mode 100644
index 0000000..b848b29
--- /dev/null
+++ b/src/SmartTest/SmTBasicCacheResetEvery5ChangesStrategy.class.st
@@ -0,0 +1,35 @@
+"
+This strategy always adds the tests to the cache and always gives the tests when asked.
+
+When using this strategy, the cache is reseted each 5 changes (changes manageable by SmartTest, for exemple changes on methods and classes). 
+"
+Class {
+	#name : #SmTBasicCacheResetEvery5ChangesStrategy,
+	#superclass : #SmTBasicCacheStrategy,
+	#instVars : [
+		'numberOfChange'
+	],
+	#category : 'SmartTest-Cache'
+}
+
+{ #category : #initialization }
+SmTBasicCacheResetEvery5ChangesStrategy >> initialize [
+self numberOfChange: 0.
+]
+
+{ #category : #accessing }
+SmTBasicCacheResetEvery5ChangesStrategy >> numberOfChange [
+	^ numberOfChange
+]
+
+{ #category : #accessing }
+SmTBasicCacheResetEvery5ChangesStrategy >> numberOfChange: anObject [
+	numberOfChange := anObject
+]
+
+{ #category : #private }
+SmTBasicCacheResetEvery5ChangesStrategy >> resetCache [
+	numberOfChange := numberOfChange + 1.
+	numberOfChange \\ 5 == 0
+		ifTrue: [ cache removeAll. numberOfChange := 0]
+]
diff --git a/src/SmartTest/SmTBasicCacheResetEveryCommitStrategy.class.st b/src/SmartTest/SmTBasicCacheResetEveryCommitStrategy.class.st
new file mode 100644
index 0000000..424669c
--- /dev/null
+++ b/src/SmartTest/SmTBasicCacheResetEveryCommitStrategy.class.st
@@ -0,0 +1,16 @@
+"
+This strategy always adds the tests to the cache and always gives the tests when asked.
+
+When using this strategy, the cache is reseted only when a commit is peformed. It is mostly used with SmartTest Experiment. 
+"
+Class {
+	#name : #SmTBasicCacheResetEveryCommitStrategy,
+	#superclass : #SmTBasicCacheStrategy,
+	#category : 'SmartTest-Cache'
+}
+
+{ #category : #private }
+SmTBasicCacheResetEveryCommitStrategy >> resetCacheForChange: aChange [
+	(aChange isKindOf: EpMonticelloVersionSave) ifTrue:[self resetCache].
+	
+]
diff --git a/src/SmartTest/SmTBasicCacheStrategy.class.st b/src/SmartTest/SmTBasicCacheStrategy.class.st
new file mode 100644
index 0000000..5cb0e0a
--- /dev/null
+++ b/src/SmartTest/SmTBasicCacheStrategy.class.st
@@ -0,0 +1,48 @@
+"
+This strategy always adds the tests to the cache and always gives the tests when asked.
+"
+Class {
+	#name : #SmTBasicCacheStrategy,
+	#superclass : #SmTCacheStrategy,
+	#category : 'SmartTest-Cache'
+}
+
+{ #category : #accessing }
+SmTBasicCacheStrategy >> at: aMethodReference [
+	^ self currentCache at: aMethodReference 
+]
+
+{ #category : #accessing }
+SmTBasicCacheStrategy >> at: methodReference ifAbsent: aBlock [
+	^ self currentCache at: methodReference ifAbsent: aBlock
+]
+
+{ #category : #accessing }
+SmTBasicCacheStrategy >> at: key ifPresent: aPresentBlock [
+	^ self currentCache at: key ifPresent: aPresentBlock
+]
+
+{ #category : #accessing }
+SmTBasicCacheStrategy >> at: key ifPresent: aPresentBlock ifAbsent: anAbsentBlock [
+	^ self currentCache at: key ifPresent: aPresentBlock ifAbsent: anAbsentBlock
+]
+
+{ #category : #accessing }
+SmTBasicCacheStrategy >> at: aMethodReference put: aCacheElement [
+	^ self currentCache at: aMethodReference put: aCacheElement 
+]
+
+{ #category : #accessing }
+SmTBasicCacheStrategy >> currentCache [
+	^ cache
+]
+
+{ #category : #private }
+SmTBasicCacheStrategy >> relevantTestsFor: aCompiledMethod [
+	^ self currentCache at: aCompiledMethod methodReference ifAbsentPut: [ Set new ]
+]
+
+{ #category : #private }
+SmTBasicCacheStrategy >> searchTestsForMethodReference: aMethodReference [
+	^ self currentCache at: aMethodReference ifAbsentPut: [ Set new ]
+]
diff --git a/src/SmartTest/SmTCacheStrategy.class.st b/src/SmartTest/SmTCacheStrategy.class.st
new file mode 100644
index 0000000..9762f59
--- /dev/null
+++ b/src/SmartTest/SmTCacheStrategy.class.st
@@ -0,0 +1,78 @@
+"
+This setting defines how the cache should behave.
+"
+Class {
+	#name : #SmTCacheStrategy,
+	#superclass : #Object,
+	#instVars : [
+		'cache'
+	],
+	#category : 'SmartTest-Cache'
+}
+
+{ #category : #accessing }
+SmTCacheStrategy >> at: aMethodReference [
+	self subclassResponsibility 
+]
+
+{ #category : #accessing }
+SmTCacheStrategy >> at: aCompiledMethod ifAbsent: aBlock [
+	^ self subclassResponsibility 
+]
+
+{ #category : #accessing }
+SmTCacheStrategy >> at: key ifPresent: aPresentBlock [
+	self subclassResponsibility 
+]
+
+{ #category : #accessing }
+SmTCacheStrategy >> at: key ifPresent: aPresentBlock ifAbsent: anAbsentBlock [
+	self subclassResponsibility 
+]
+
+{ #category : #accessing }
+SmTCacheStrategy >> at: aMethodReference put: aCacheElement [
+	self subclassResponsibility 
+]
+
+{ #category : #accessing }
+SmTCacheStrategy >> cache: aDictionary [
+	cache := aDictionary 
+]
+
+{ #category : #accessing }
+SmTCacheStrategy >> currentCache [
+	self subclassResponsibility 
+]
+
+{ #category : #private }
+SmTCacheStrategy >> disable [
+	"If you need something to work"
+
+	
+]
+
+{ #category : #private }
+SmTCacheStrategy >> enable [
+	"If you need something to work"
+]
+
+{ #category : #private }
+SmTCacheStrategy >> relevantTestsFor: aCompiledMethod [
+	self subclassResponsibility
+]
+
+{ #category : #private }
+SmTCacheStrategy >> resetCache [
+	cache removeAll
+]
+
+{ #category : #private }
+SmTCacheStrategy >> resetCacheForChange: aChange [
+self resetCache 
+]
+
+{ #category : #private }
+SmTCacheStrategy >> searchTestsForMethodReference: aMethodReference [
+	self subclassResponsibility 
+]
diff --git a/src/SmartTest/SmTClassNeedTestsCritique.class.st b/src/SmartTest/SmTClassNeedTestsCritique.class.st
new file mode 100644
index 0000000..c3d5d60
--- /dev/null
+++ b/src/SmartTest/SmTClassNeedTestsCritique.class.st
@@ -0,0 +1,18 @@
+"
+The critique that explains you need to write tests for this class
+"
+Class {
+	#name : #SmTClassNeedTestsCritique,
+	#superclass : #SmTNeedTestsCritique,
+	#category : 'SmartTest-Critiques'
+}
+
+{ #category : #accessing }
+SmTClassNeedTestsCritique >> description [
+	^'You should always write tests your classes to ensure the fiability of your code'
+]
+
+{ #category : #accessing }
+SmTClassNeedTestsCritique >> title [
+	^ 'You should write tests for your class'
+]
diff --git a/src/SmartTest/SmTClassRelativeTestsCritique.class.st b/src/SmartTest/SmTClassRelativeTestsCritique.class.st
new file mode 100644
index 0000000..c6f4c7a
--- /dev/null
+++ b/src/SmartTest/SmTClassRelativeTestsCritique.class.st
@@ -0,0 +1,20 @@
+"
+The critique that explains you need to run test for this class
+"
+Class {
+	#name : #SmTClassRelativeTestsCritique,
+	#superclass : #SmTRelativeTestsCritique,
+	#category : 'SmartTest-Critiques'
+}
+
+{ #category : #'instance creation' }
+SmTClassRelativeTestsCritique class >> for: anEntity by: aRule tests: aTestList [
+	^ self basicNew
+		initializeRule: aRule target: anEntity testsList: aTestList;
+		yourself
+]
+
+{ #category : #accessing }
+SmTClassRelativeTestsCritique >> description [
+	^'You should always run tests your classes to ensure the fiability of your code'
+]
diff --git a/src/SmartTest/SmTClassTestedRule.class.st b/src/SmartTest/SmTClassTestedRule.class.st
new file mode 100644
index 0000000..212980c
--- /dev/null
+++ b/src/SmartTest/SmTClassTestedRule.class.st
@@ -0,0 +1,88 @@
+"
+I check class tests
+"
+Class {
+	#name : #SmTClassTestedRule,
+	#superclass : #SmTRules,
+	#classVars : [
+		'ClassActivated'
+	],
+	#category : 'SmartTest-Rules'
+}
+
+{ #category : #'testing-interest' }
+SmTClassTestedRule class >> checksClass [
+	^ true
+]
+
+{ #category : #'testing-interest' }
+SmTClassTestedRule class >> classActivated [
+	^ ClassActivated ifNil: [ ClassActivated  := false ]
+]
+
+{ #category : #'testing-interest' }
+SmTClassTestedRule class >> classActivated: aSelector [
+	ClassActivated := aSelector
+]
+
+{ #category : #'testing-interest' }
+SmTClassTestedRule class >> initialize [
+	ReRuleManager cleanUp 
+]
+
+{ #category : #'testing-interest' }
+SmTClassTestedRule class >> settingsOn: aBuilder [
+	<systemsettings>
+	(aBuilder setting: #classActivated)
+		parent: #SmTActivationRenrakuOption;
+		target: self;
+		order: 0.1;
+		label: 'SmartTest class analyse activated';
+		description: 'Toogle to activate/disable the analyse for class'
+]
+
+{ #category : #'testing-interest' }
+SmTClassTestedRule class >> unload [
+	
+]
+
+{ #category : #running }
+SmTClassTestedRule >> basicCheck: anEntity [
+	^ (super basicCheck: anEntity) and: [(anEntity isKindOf: Class) and: [ self class classActivated] ]
+
+]
+
+{ #category : #enumerating }
+SmTClassTestedRule >> check: anEntity forCritiquesDo: aCriticBlock [
+
+	(self basicCheck: anEntity)
+		ifTrue: [ (self findTestsForClass: anEntity) isEmpty
+				ifTrue: [ aCriticBlock value: (SmTClassNeedTestsCritique for: anEntity by: self) ]
+				ifFalse: [ aCriticBlock value: (SmTClassRelativeTestsCritique for: anEntity by: self tests: self tests) ] ]
+]
+
+{ #category : #'instance creation' }
+SmTClassTestedRule >> findTestsForClass: aClass [
+	| aCollectionOfCompiledTest |
+	aCollectionOfCompiledTest :=  self findTestsForMethods: (self methodUsingVariablesOfClass: aClass).
+	^tests := aCollectionOfCompiledTest 
+]
+
+{ #category : #'instance creation' }
+SmTClassTestedRule >> findTestsForMethods: aCollectionOfCompiledMethod [
+	^tests := aCollectionOfCompiledMethod flatCollect: [ :aCompiledMethod | self findTestsForMethod: aCompiledMethod]
+]
+
+{ #category : #running }
+SmTClassTestedRule >> methodUsingVariablesOfClass: aClass [
+	| aSet |
+	aSet := Set new.
+	aSet addAll: (aClass classLayout allVisibleSlots flatCollect: #usingMethods).
+"	aSet addAll: ((aClass classVariables flatCollect: #usingMethods) collect: #compiledMethod)."
+	^tests := aSet 
+]
+
+{ #category : #accessing }
+SmTClassTestedRule >> name [ 
+	^ 'SmartTest Class Tested'
+]
diff --git a/src/SmartTest/SmTDefaultClassPackagesFilter.class.st b/src/SmartTest/SmTDefaultClassPackagesFilter.class.st
new file mode 100644
index 0000000..4acabd0
--- /dev/null
+++ b/src/SmartTest/SmTDefaultClassPackagesFilter.class.st
@@ -0,0 +1,22 @@
+"
+This filter looks in the packages of all methods that reference the class of the changed entity (method or class)
+
+"
+Class {
+	#name : #SmTDefaultClassPackagesFilter,
+	#superclass : #SmTDefaultPackagesFilter,
+	#category : 'SmartTest-Filter'
+}
+
+{ #category : #accessing }
+SmTDefaultClassPackagesFilter >> extractPackagesFrom: anEntity [
+	"This method is supposed to find (in addition of the supermethod) for the compiled method:
+		- the packages of the senders of the compiled method
+		- the packages that contains at least one method of the compiled method class"
+	| packages class|
+	packages := (super extractPackagesFrom: anEntity) asSet.
+	(anEntity isClass) ifTrue: [ class := anEntity  ]ifFalse:[class := anEntity methodClass].
+	class allCallsOn do: [ :rgMethod | packages add: (self extractCompiledMethodPackageBaseName: rgMethod compiledMethod) ].
+	class extendingPackages do: [ :aPackage | packages add: (self extractCompiledMethodPackageBaseName: aPackage) ].
+	^ packages
+]
diff --git a/src/SmartTest/SmTDefaultPackagesFilter.class.st b/src/SmartTest/SmTDefaultPackagesFilter.class.st
new file mode 100644
index 0000000..7560024
--- /dev/null
+++ b/src/SmartTest/SmTDefaultPackagesFilter.class.st
@@ -0,0 +1,62 @@
+"
+This filter only looks in the package owning the changed entity (method or class)
+"
+Class {
+	#name : #SmTDefaultPackagesFilter,
+	#superclass : #SmTFilterStrategy,
+	#category : 'SmartTest-Filter'
+}
+
+{ #category : #settings }
+SmTDefaultPackagesFilter class >> settingsOn: aBuilder [
+	<systemsettings>
+	(aBuilder group: #SmTFilter) parent: #SmartFinder; order: 0.6
+]
+
+{ #category : #parsing }
+SmTDefaultPackagesFilter >> extractClassPackageBaseName: aClass [
+	^ self extractPackageBaseName: aClass package name 
+]
+
+{ #category : #parsing }
+SmTDefaultPackagesFilter >> extractCompiledMethodPackageBaseName: aCompiledMethod [
+	^ self extractPackageBaseName: aCompiledMethod package packageName
+]
+
+{ #category : #parsing }
+SmTDefaultPackagesFilter >> extractMethodDefinitionPackageBaseName: aRGMethodDefinition [
+	^ self extractPackageBaseName: aRGMethodDefinition package realPackage packageName 
+]
+
+{ #category : #parsing }
+SmTDefaultPackagesFilter >> extractPackageBaseName: aPackageName [
+	^(aPackageName substrings: '-') at: 1
+]
+
+{ #category : #accessing }
+SmTDefaultPackagesFilter >> extractPackagesFrom: anEntity [
+	"Thid method find:
+		- the package of the classes that owned the method
+		- the package that contains the method if its an extension"
+
+	| packages |
+	packages := Set new.
+	anEntity isClass
+		ifTrue: [ packages add: (self extractClassPackageBaseName: anEntity)]
+		ifFalse: [ packages := {(self extractCompiledMethodPackageBaseName: anEntity)} asSet.
+			anEntity isExtension
+				ifTrue: [ anEntity package extendedClasses do: [ :aClass | packages add: aClass package name ] ] ].
+	^ packages
+]
+
+{ #category : #asserting }
+SmTDefaultPackagesFilter >> extractPackagesFromTrait: aTrait [
+	^ self extractPackageBaseName: aTrait package name
+]
+
+{ #category : #asserting }
+SmTDefaultPackagesFilter >> shouldEntityBeFilteredOut: anEntity inPackages: packages [
+ "(anEntity methodClass allCallsOn collect: #ciPackage) not."
+	(anEntity isClass )ifTrue: [^(packages includes: (anEntity package name)) not].
+	^ (packages includes: (self extractMethodDefinitionPackageBaseName: anEntity )) not
+]
diff --git a/src/SmartTest/SmTEventRecipient.class.st b/src/SmartTest/SmTEventRecipient.class.st
new file mode 100644
index 0000000..0738954
--- /dev/null
+++ b/src/SmartTest/SmTEventRecipient.class.st
@@ -0,0 +1,17 @@
+"
+I collect tests, run tests and notify the big button of my work
+"
+Class {
+	#name : #SmTEventRecipient,
+	#superclass : #Object,
+	#category : 'SmartTest-Event'
+}
+
+{ #category : #action }
+SmTEventRecipient >> actionForEvent: anEvent fromMorph: aMorph [
+	self runTestAndShowProgressIn: aMorph
+]
+
+{ #category : #action }
+SmTEventRecipient >> runTestAndShowProgressIn: aMorph [
+]
diff --git a/src/SmartTest/SmTFilterStrategy.class.st b/src/SmartTest/SmTFilterStrategy.class.st
new file mode 100644
index 0000000..128715b
--- /dev/null
+++ b/src/SmartTest/SmTFilterStrategy.class.st
@@ -0,0 +1,18 @@
+"
+This class is used to define the filter used by SmartTest.
+"
+Class {
+	#name : #SmTFilterStrategy,
+	#superclass : #Object,
+	#category : 'SmartTest-Filter'
+}
+
+{ #category : #asserting }
+SmTFilterStrategy >> extractPackagesFrom: aCompiledMethod [
+	"Can be implemented to init the filter for a specific research"
+]
+
+{ #category : #asserting }
+SmTFilterStrategy >> shouldEntityBeFilteredOut: anEntity inPackages: anObject [
+	self subclassResponsibility 
+]
diff --git a/src/SmartTest/SmTIcebergLoadedPackagesFilter.class.st b/src/SmartTest/SmTIcebergLoadedPackagesFilter.class.st
new file mode 100644
index 0000000..d68c7ad
--- /dev/null
+++ b/src/SmartTest/SmTIcebergLoadedPackagesFilter.class.st
@@ -0,0 +1,20 @@
+"
+This filter only looks in the packages that are loaded with Iceberg
+"
+Class {
+	#name : #SmTIcebergLoadedPackagesFilter,
+	#superclass : #SmTFilterStrategy,
+	#category : 'SmartTest-Filter'
+}
+
+{ #category : #asserting }
+SmTIcebergLoadedPackagesFilter >> extractPackagesFrom: aCompiledMethod [
+	"Can be implemented to init the filter for a specific research"
+
+	^ ((IceRepository registry reject: [ :registry | registry name = 'pharo' ]) flatCollect: [ :repository | repository loadedPackages])
+]
+
+{ #category : #asserting }
+SmTIcebergLoadedPackagesFilter >> shouldEntityBeFilteredOut: anEntity inPackages: packages [
+	^ ((packages collect: #name) includes: anEntity package name) not
+]
diff --git a/src/SmartTest/SmTMethodNeedTestsCritique.class.st b/src/SmartTest/SmTMethodNeedTestsCritique.class.st
new file mode 100644
index 0000000..24cf635
--- /dev/null
+++ b/src/SmartTest/SmTMethodNeedTestsCritique.class.st
@@ -0,0 +1,52 @@
+"
+The critique that explains you need to write test for a method
+"
+Class {
+	#name : #SmTMethodNeedTestsCritique,
+	#superclass : #SmTNeedTestsCritique,
+	#category : 'SmartTest-Critiques'
+}
+
+{ #category : #accessing }
+SmTMethodNeedTestsCritique >> change [
+]
+
+{ #category : #accessing }
+SmTMethodNeedTestsCritique >> description [
+	^'You should always test your methods to ensure the fiability of your code'
+]
+
+{ #category : #accessing }
+SmTMethodNeedTestsCritique >> execute [
+	SmTTestGenerator new generateTestMethodFor: self sourceAnchor entity
+]
+
+{ #category : #accessing }
+SmTMethodNeedTestsCritique >> nameToDisplay [
+	^ 'Add a Test for ', self sourceAnchor entity name 
+]
+
+{ #category : #accessing }
+SmTMethodNeedTestsCritique >> oldVersionTextToDisplay [
+	^''
+]
+
+{ #category : #testing }
+SmTMethodNeedTestsCritique >> providesChange [
+	^true
+]
+
+{ #category : #accessing }
+SmTMethodNeedTestsCritique >> textToDisplay [
+	^''
+]
+
+{ #category : #accessing }
+SmTMethodNeedTestsCritique >> title [
+	^ 'You should write tests for your method'
+]
+
+{ #category : #accessing }
+SmTMethodNeedTestsCritique >> whatToDisplayIn: aBrowser [
+	^ { self }
+]
diff --git a/src/SmartTest/SmTMethodRelativeTestsCritique.class.st b/src/SmartTest/SmTMethodRelativeTestsCritique.class.st
new file mode 100644
index 0000000..4ec8635
--- /dev/null
+++ b/src/SmartTest/SmTMethodRelativeTestsCritique.class.st
@@ -0,0 +1,23 @@
+"
+The critique that explains you should run test for this method
+"
+Class {
+	#name : #SmTMethodRelativeTestsCritique,
+	#superclass : #SmTRelativeTestsCritique,
+	#instVars : [
+		'entity'
+	],
+	#category : 'SmartTest-Critiques'
+}
+
+{ #category : #'instance creation' }
+SmTMethodRelativeTestsCritique class >> for: anEntity by: aRule tests: aTestList [
+	^ self basicNew
+		initializeRule: aRule target: anEntity testsList: aTestList;
+		yourself
+]
+
+{ #category : #accessing }
+SmTMethodRelativeTestsCritique >> description [
+	^'You should always test your methods to ensure the fiability of your code'
+]
diff --git a/src/SmartTest/SmTMethodTestedOnModificationRule.class.st b/src/SmartTest/SmTMethodTestedOnModificationRule.class.st
new file mode 100644
index 0000000..010f842
--- /dev/null
+++ b/src/SmartTest/SmTMethodTestedOnModificationRule.class.st
@@ -0,0 +1,66 @@
+Class {
+	#name : #SmTMethodTestedOnModificationRule,
+	#superclass : #SmTMethodTestedRule,
+	#instVars : [
+		'bag'
+	],
+	#classInstVars : [
+		'bag'
+	],
+	#category : 'SmartTest-Rules'
+}
+
+{ #category : #protocol }
+SmTMethodTestedOnModificationRule class >> addToElementBag: anElement [
+	self bag add: anElement
+]
+
+{ #category : #protocol }
+SmTMethodTestedOnModificationRule class >> bag [
+	^ bag ifNil: [ bag := Bag new ]
+]
+
+{ #category : #protocol }
+SmTMethodTestedOnModificationRule class >> disable [
+	super disable.
+	SystemAnnouncer uniqueInstance unsubscribe: self
+]
+
+{ #category : #protocol }
+SmTMethodTestedOnModificationRule class >> enable [
+	super enable.
+	SystemAnnouncer uniqueInstance unsubscribe: self.
+	{(MethodModified -> #methodModified:).
+	(MethodAdded -> #methodAdded:)}
+		do: [ :pair | SystemAnnouncer uniqueInstance weak when: pair key send: pair value to: self ]
+]
+
+{ #category : #protocol }
+SmTMethodTestedOnModificationRule class >> getElementFromBag: anElement [
+	"return nil if element absent. The object else"
+
+	self bag remove: anElement ifAbsent: [ ^ nil ].
+	^ anElement
+]
+
+{ #category : #protocol }
+SmTMethodTestedOnModificationRule class >> methodAdded: anAnnouncement [
+	self addToElementBag: anAnnouncement methodAdded
+]
+
+{ #category : #protocol }
+SmTMethodTestedOnModificationRule class >> methodModified: anAnnouncement [
+	self addToElementBag: anAnnouncement newMethod
+]
+
+{ #category : #accessing }
+SmTMethodTestedOnModificationRule >> basicCheck: anEntity [
+	^ (super basicCheck: anEntity)
+		and: [ (anEntity isKindOf: CompiledMethod) and: [ self class isMethodActivated and: [ (self class getElementFromBag: anEntity) isNotNil ] ] ]
+]
+
+{ #category : #accessing }
+SmTMethodTestedOnModificationRule >> name [
+	"Answer a human readable name of the rule."
+	 ^ 'SmartTest Method Tested On modification'
+]
diff --git a/src/SmartTest/SmTMethodTestedRule.class.st b/src/SmartTest/SmTMethodTestedRule.class.st
new file mode 100644
index 0000000..64f9af3
--- /dev/null
+++ b/src/SmartTest/SmTMethodTestedRule.class.st
@@ -0,0 +1,106 @@
+"
+I check method tests
+"
+Class {
+	#name : #SmTMethodTestedRule,
+	#superclass : #SmTRules,
+	#classVars : [
+		'MethodActivated'
+	],
+	#classInstVars : [
+		'methodRuleStrategy'
+	],
+	#category : 'SmartTest-Rules'
+}
+
+{ #category : #'testing-interest' }
+SmTMethodTestedRule class >> checksMethod [
+	^ true
+]
+
+{ #category : #protocol }
+SmTMethodTestedRule class >> disable [
+]
+
+{ #category : #protocol }
+SmTMethodTestedRule class >> enable [
+]
+
+{ #category : #'testing-interest' }
+SmTMethodTestedRule class >> initialize [
+	ReRuleManager cleanUp 
+]
+
+{ #category : #'testing-interest' }
+SmTMethodTestedRule class >> isMethodActivated [
+	^ self methodActivated and: [ self methodRuleStrategy = self ]
+]
+
+{ #category : #'testing-interest' }
+SmTMethodTestedRule class >> methodActivated [
+	^ MethodActivated ifNil: [ MethodActivated := true ]
+]
+
+{ #category : #'testing-interest' }
+SmTMethodTestedRule class >> methodActivated: aSelector [
+	MethodActivated := aSelector
+]
+
+{ #category : #accessing }
+SmTMethodTestedRule class >> methodRuleStrategy [
+	^ methodRuleStrategy ifNil: [ methodRuleStrategy := SmTMethodTestedOnModificationRule. methodRuleStrategy enable ]
+]
+
+{ #category : #accessing }
+SmTMethodTestedRule class >> methodRuleStrategy: aMethodRuleStrategy [
+	methodRuleStrategy disable.
+	methodRuleStrategy := aMethodRuleStrategy.
+	aMethodRuleStrategy enable
+]
+
+{ #category : #'testing-interest' }
+SmTMethodTestedRule class >> settingsOn: aBuilder [
+	<systemsettings>
+	(aBuilder setting: #methodActivated)
+		parent: #SmTActivationRenrakuOption;
+		target: self;
+		order: 0.2;
+		label: 'SmartTest method analyse activated';
+		description: 'Toogle to activate/disable the analyse for method'.
+	(aBuilder pickOne: #methodRuleStrategy)
+		order: 0.3;
+		parent: #SmTActivationRenrakuOption;
+		label: 'Method Rule';
+		target: self;
+		domainValues: SmTMethodTestedRule withAllSubclasses;
+		description: 'Select Rule strategy to begin the research of element'
+]
+
+{ #category : #'initialization-release' }
+SmTMethodTestedRule class >> unload [
+	self disable
+]
+
+{ #category : #running }
+SmTMethodTestedRule >> basicCheck: anEntity [
+	^ (super basicCheck: anEntity) and: [ (anEntity isKindOf: CompiledMethod) and: [ self class isMethodActivated ] ]
+]
+
+{ #category : #enumerating }
+SmTMethodTestedRule >> check: anEntity forCritiquesDo: aCriticBlock [
+	(self basicCheck: anEntity)
+		ifTrue: [ (self findTestsForMethod: anEntity) isEmpty
+				ifTrue: [ aCriticBlock value: (SmTMethodNeedTestsCritique for: anEntity by: self) ]
+				ifFalse: [ aCriticBlock
+						value: (SmTMethodRelativeTestsCritique for: anEntity by: self tests: self tests) ] ]
+]
+
+{ #category : #running }
+SmTMethodTestedRule >> isVisible [
+	^ true
+]
+
+{ #category : #running }
+SmTMethodTestedRule >> name [
+	^ 'SmartTest Method Tested'
+]
diff --git a/src/SmartTest/SmTNeedTestsCritique.class.st b/src/SmartTest/SmTNeedTestsCritique.class.st
new file mode 100644
index 0000000..9d96fd2
--- /dev/null
+++ b/src/SmartTest/SmTNeedTestsCritique.class.st
@@ -0,0 +1,28 @@
+"
+I represent a critique when there are no tests for an entity
+"
+Class {
+	#name : #SmTNeedTestsCritique,
+	#superclass : #ReAbstractCritique,
+	#category : 'SmartTest-Critiques'
+}
+
+{ #category : #accessing }
+SmTNeedTestsCritique >> description [
+	self subclassResponsibility 
+]
+
+{ #category : #accessing }
+SmTNeedTestsCritique >> icon [
+	^#warning asIcon
+]
+
+{ #category : #testing }
+SmTNeedTestsCritique >> providesChange [
+	^false
+]
+
+{ #category : #accessing }
+SmTNeedTestsCritique >> title [
+	self subclassResponsibility 
+]
diff --git a/src/SmartTest/SmTNoCacheStrategy.class.st b/src/SmartTest/SmTNoCacheStrategy.class.st
new file mode 100644
index 0000000..b4893bd
--- /dev/null
+++ b/src/SmartTest/SmTNoCacheStrategy.class.st
@@ -0,0 +1,48 @@
+"
+This strategy never adds the tests found to the cache.
+"
+Class {
+	#name : #SmTNoCacheStrategy,
+	#superclass : #SmTCacheStrategy,
+	#category : 'SmartTest-Cache'
+}
+
+{ #category : #accessing }
+SmTNoCacheStrategy >> at: aMethodReference [
+	^ Set new
+]
+
+{ #category : #accessing }
+SmTNoCacheStrategy >> at: aCompiled ifAbsent: aBlock [
+	^ aBlock value
+]
+
+{ #category : #accessing }
+SmTNoCacheStrategy >> at: aMethodReference ifPresent: aPresentBlock [
+	^ nil
+]
+
+{ #category : #accessing }
+SmTNoCacheStrategy >> at: key ifPresent: aPresentBlock ifAbsent: anAbsentBlock [
+	^ anAbsentBlock value
+]
+
+{ #category : #accessing }
+SmTNoCacheStrategy >> at: aMethodReference put: aCacheElement [
+	^ self 
+]
+
+{ #category : #accessing }
+SmTNoCacheStrategy >> currentCache [
+	^ Dictionary new
+]
+
+{ #category : #private }
+SmTNoCacheStrategy >> relevantTestsFor: aCompiledMethod [
+	^ Set new
+]
+
+{ #category : #private }
+SmTNoCacheStrategy >> searchTestsForMethodReference: aMethodReference [
+	^ Set new
+]
diff --git a/src/SmartTest/SmTNoFilter.class.st b/src/SmartTest/SmTNoFilter.class.st
new file mode 100644
index 0000000..eb3612b
--- /dev/null
+++ b/src/SmartTest/SmTNoFilter.class.st
@@ -0,0 +1,15 @@
+"
+This filter is ""useless"" because it does not filter anything: it looks everywhere in the image
+"
+Class {
+	#name : #SmTNoFilter,
+	#superclass : #SmTFilterStrategy,
+	#category : 'SmartTest-Filter'
+}
+
+{ #category : #asserting }
+SmTNoFilter >> shouldEntityBeFilteredOut: anEntity inPackages: anObject [
+	"(anEntity methodClass allCallsOn collect: #ciPackage) not."
+
+	^ false
+]
diff --git a/src/SmartTest/SmTReflectivityTestFinderStrategy.class.st b/src/SmartTest/SmTReflectivityTestFinderStrategy.class.st
new file mode 100644
index 0000000..5f8b8b9
--- /dev/null
+++ b/src/SmartTest/SmTReflectivityTestFinderStrategy.class.st
@@ -0,0 +1,148 @@
+"
+I'm a dynamic finder. 
+I use the meta link to discover the coverage of Test
+"
+Class {
+	#name : #SmTReflectivityTestFinderStrategy,
+	#superclass : #SmTTestFinderDynamicStrategy,
+	#category : 'SmartTest-Finder'
+}
+
+{ #category : #testing }
+SmTReflectivityTestFinderStrategy class >> isConcreteFinder [
+	^ true
+]
+
+{ #category : #api }
+SmTReflectivityTestFinderStrategy >> analyseAndRemoveProxyFor: aTestCase [
+		MetaLink uninstallAll
+]
+
+{ #category : #api }
+SmTReflectivityTestFinderStrategy >> buildCacheFromTestSuite: aTestSuite [
+	aTestSuite flatCollectTests do: [ :aTestCase | self installProxyFor: aTestCase. aTestCase run ].
+	MetaLink uninstallAll
+]
+
+{ #category : #search }
+SmTReflectivityTestFinderStrategy >> collectAllRelativePackages: aByteString [
+	^ RPackageOrganizer default packages select: [ :a | (self filter extractPackageBaseName: a packageName) = aByteString ]
+]
+
+{ #category : #search }
+SmTReflectivityTestFinderStrategy >> collectRelativeTestMethodOfMethods: methods [
+	^ (((methods collect: [ :aMethod | aMethod asTestMethod ])
+		select: [ :aTestMethod | aTestMethod isNotNil ])
+		reject: [ :aTestMethod | self isCORAMethodBlacklisted: aTestMethod ])
+		asSet
+		collect: [ :method | method methodClass selector: method selector ]
+]
+
+{ #category : #api }
+SmTReflectivityTestFinderStrategy >> extractCompiledMethodFromReceiver: receiver andSelector: selector [
+	" (self class environment at: aSendNode receiver methodNode compiledMethod) lookupSelector: aSendNode selector"
+	^  receiver class lookupSelector: selector 
+]
+
+{ #category : #api }
+SmTReflectivityTestFinderStrategy >> extractCurrentTestExecutionFromContext: ctxt [
+	| aTestCase aCompiledTestCase |
+ 	aTestCase := ctxt arguments at: 1.
+ 	aCompiledTestCase := aTestCase class >> aTestCase selector.
+ 	^ aCompiledTestCase compiledMethod
+]
+
+{ #category : #initialization }
+SmTReflectivityTestFinderStrategy >> initializeLink [
+	| link |
+	link := MetaLink new
+		metaObject: [ :ctxt | 
+			| aCompiledTestCase |
+			aCompiledTestCase := self extractCurrentTestExecutionFromContext: ctxt.
+			self initializeLinkInCompiledMethod: aCompiledTestCase.
+			self currentTestExecution: aCompiledTestCase ];
+		selector: #value:;
+		arguments: #(context);
+		level: 0;
+		optionOneShot: true.
+	(TestExecutionEnvironment >> #runTestCase:) ast link: link
+]
+
+{ #category : #initialization }
+SmTReflectivityTestFinderStrategy >> initializeLinkInCompiledMethod: aCompiledMethod [
+	| link |
+	link := MetaLink new
+		metaObject: [ :receiver :selector | 
+			| receiverCompiledMethod |
+			receiverCompiledMethod := self extractCompiledMethodFromReceiver: receiver andSelector: selector.
+			(self isCompiledMethod: receiverCompiledMethod alreadyExploredForTest: self currentTestExecution)
+				ifFalse: [ self initializeLinkInCompiledMethod: receiverCompiledMethod ].
+			self addATest: self currentTestExecution toMethod: receiverCompiledMethod ];
+		selector: #value:value:;
+		arguments: #(receiver selector);
+		level: 0;
+		optionOneShot: true.
+	aCompiledMethod sendNodes do: [ :node | node link: link ]
+]
+
+{ #category : #api }
+SmTReflectivityTestFinderStrategy >> installLinkAndRunTest: aTestMethod [
+	| testEnv |
+	self currentTestExecution: aTestMethod.
+	self initializeLinkInCompiledMethod: (aTestMethod class >> aTestMethod selector).
+
+	testEnv := TestExecutionEnvironment new.
+	[testEnv beActiveDuring: [
+		testEnv runTestCase: aTestMethod]] on: Exception do: [  ].
+]
+
+{ #category : #api }
+SmTReflectivityTestFinderStrategy >> installProxyFor: aTestCase [
+	self currentTestExecution: aTestCase.
+	self addATest: aTestCase toMethod: aTestCase.
+	self initializeLinkInCompiledMethod: aTestCase class >> aTestCase selector
+]
+
+{ #category : #testing }
+SmTReflectivityTestFinderStrategy >> isCORAMethodBlacklisted: aCompiledMethod [
+	^ (aCompiledMethod pragmaAt: #CORATestBlacklisted) isNotNil
+]
+
+{ #category : #testing }
+SmTReflectivityTestFinderStrategy >> isCompiledMethod: receiverCompiledMethod alreadyExploredForTest: testInstance [
+	self cache
+		at: receiverCompiledMethod methodReference
+		ifPresent: [ :aSetOfTestInstance | ^ aSetOfTestInstance includes: (testInstance class >> testInstance selector) methodReference  ]
+		ifAbsent: [ ^ false ]
+]
+
+{ #category : #private }
+SmTReflectivityTestFinderStrategy >> methodsInSimilarPackageAs: aCompiledMethod [
+		
+	| packageBaseName packages |
+	packageBaseName := self filter extractCompiledMethodPackageBaseName: aCompiledMethod.
+	packages := self collectAllRelativePackages: packageBaseName.
+	^ packages
+		flatCollect: [ :aPackage | aPackage package correspondingRPackage methods ]
+]
+
+{ #category : #search }
+SmTReflectivityTestFinderStrategy >> searchRelativeTestForMethod: aCompiledMethod [
+	"Search for only one package and NOT relative others method"
+
+	| methods |
+
+	methods := self methodsInSimilarPackageAs: aCompiledMethod.
+	((self collectRelativeTestMethodOfMethods: methods) asOrderedCollection sort: [ :a :b | a printString < b printString ])
+		do: [ :aTestMethod | self installLinkAndRunTest: aTestMethod ]
+		displayingProgress: [ :aClass | 'Processing ' , aClass asString ]
+		every: 1
+]
+
+{ #category : #private }
+SmTReflectivityTestFinderStrategy >> searchTestsForAStandardMethod: aCompiledMethod [
+	self cache
+		at: aCompiledMethod methodReference
+		ifAbsent: [ self searchRelativeTestForMethod: aCompiledMethod ].
+	^ (self searchTestsForMethod: aCompiledMethod) collect: #compiledMethod
+]
diff --git a/src/SmartTest/SmTRelativeTestsCritique.class.st b/src/SmartTest/SmTRelativeTestsCritique.class.st
new file mode 100644
index 0000000..1787721
--- /dev/null
+++ b/src/SmartTest/SmTRelativeTestsCritique.class.st
@@ -0,0 +1,92 @@
+"
+I represent a critique when there are tests to run for an entity
+"
+Class {
+	#name : #SmTRelativeTestsCritique,
+	#superclass : #ReAbstractCritique,
+	#instVars : [
+		'tests',
+		'testButton'
+	],
+	#category : 'SmartTest-Critiques'
+}
+
+{ #category : #'instance creation' }
+SmTRelativeTestsCritique class >> for: anEntity by: aRule tests: aTestList [
+	^ self basicNew
+		initializeRule: aRule target: anEntity testsList: aTestList;
+		yourself
+]
+
+{ #category : #actions }
+SmTRelativeTestsCritique >> actions [
+	^ super actions
+		copyWith:
+			(RePropertyAction new
+				icon: #smallWindow asIcon;
+				description: 'Open Tests Selection';
+				action:
+						[ :crit :package | self openTestsWindowWith: tests ];
+				yourself)
+]
+
+{ #category : #accessing }
+SmTRelativeTestsCritique >> description [
+	self subclassResponsibility 
+]
+
+{ #category : #accessing }
+SmTRelativeTestsCritique >> icon [
+
+	^#smallInfo asIcon
+]
+
+{ #category : #accessing }
+SmTRelativeTestsCritique >> iconicButtons [
+	self testButton: (SmTIconFabric createIconForMethods: self tests).
+	^ {self testButton}
+]
+
+{ #category : #initialization }
+SmTRelativeTestsCritique >> initializeRule: aRule target: anEntity testsList: aTestList [
+	self initializeRule: aRule target: anEntity.
+	tests := aTestList
+]
+
+{ #category : #actions }
+SmTRelativeTestsCritique >> openTestsWindowWith: aTestList [
+	| ui |
+	ui := SmTAutoTestsWindows new.
+	ui setList: aTestList.
+	ui openWithSpec.
+]
+
+{ #category : #testing }
+SmTRelativeTestsCritique >> providesChange [
+	^false
+]
+
+{ #category : #accessing }
+SmTRelativeTestsCritique >> testButton [
+	^ testButton
+]
+
+{ #category : #accessing }
+SmTRelativeTestsCritique >> testButton: anObject [
+	testButton := anObject 
+]
+
+{ #category : #accessing }
+SmTRelativeTestsCritique >> tests [
+	^ tests
+]
+
+{ #category : #accessing }
+SmTRelativeTestsCritique >> tests: anObject [
+	tests := anObject
+]
+
+{ #category : #accessing }
+SmTRelativeTestsCritique >> title [
+	^ 'You should run these tests'
+]
diff --git a/src/SmartTest/SmTRules.class.st b/src/SmartTest/SmTRules.class.st
new file mode 100644
index 0000000..0922eb1
--- /dev/null
+++ b/src/SmartTest/SmTRules.class.st
@@ -0,0 +1,288 @@
+"
+I represent a kind of CORA structure
+"
+Class {
+	#name : #SmTRules,
+	#superclass : #ReAbstractRule,
+	#instVars : [
+		'tests'
+	],
+	#classVars : [
+		'Activated',
+		'SmTSmartFinder'
+	],
+	#classInstVars : [
+		'shouldTryToFindTestForDynamic',
+		'activated',
+		'smTCache',
+		'smTClassTestingStrategy',
+		'smTFilter',
+		'smTFinder',
+		'smTTestRunner',
+		'collectionOfRegex'
+	],
+	#category : 'SmartTest-Rules'
+}
+
+{ #category : #settings }
+SmTRules class >> activated [
+	^ Activated ifNil: [ Activated := true ]
+]
+
+{ #category : #settings }
+SmTRules class >> activated: aSelector [
+	^ Activated := aSelector
+]
+
+{ #category : #settings }
+SmTRules class >> cacheStrategy [
+	^ smTCache ifNil: [ smTCache := SmTBasicCacheStrategy ]
+]
+
+{ #category : #settings }
+SmTRules class >> cacheStrategy: aSelector [
+	self testFinder cacheStrategy: aSelector new.
+	^ smTCache := aSelector
+]
+
+{ #category : #'instance creation' }
+SmTRules class >> fillCache [
+	SmTSelectPackageBrowser openWithSmartFinder: self testFinder
+
+	
+]
+
+{ #category : #settings }
+SmTRules class >> filter [
+	^ smTFilter ifNil: [ smTFilter := SmTIcebergLoadedPackagesFilter  ]
+]
+
+{ #category : #settings }
+SmTRules class >> filter: aSelector [
+	self testFinder filter: aSelector new.
+	self propagateRegexToTestFinder.
+	^ smTFilter := aSelector
+]
+
+{ #category : #settings }
+SmTRules class >> finder [
+	^ smTFinder ifNil: [ smTFinder := SmTSenderTestFinderStrategy ]
+]
+
+{ #category : #settings }
+SmTRules class >> finder: aSelector [
+	smTFinder := aSelector.
+	self testFinder smtFinder: aSelector new.
+	^ smTFinder
+]
+
+{ #category : #settings }
+SmTRules class >> packagesRegex [
+^ collectionOfRegex ifNil: [ collectionOfRegex := '' ] 
+]
+
+{ #category : #settings }
+SmTRules class >> packagesRegex: aRegexStringCollection [
+	collectionOfRegex := aRegexStringCollection.
+	self propagateRegexToTestFinder.
+]
+
+{ #category : #settings }
+SmTRules class >> propagateRegexToTestFinder [
+	self testFinder filter class = SmTSpecifyPackagesNameFilter
+		ifTrue: [ self testFinder filter packagesRegex: self packagesRegex ]
+]
+
+{ #category : #settings }
+SmTRules class >> runner [
+	^ smTTestRunner ifNil: [ smTTestRunner := SmTRunnerStrategySmart ]
+]
+
+{ #category : #settings }
+SmTRules class >> runner: aSelector [
+	smTTestRunner := aSelector.
+	self testFinder testRunner: aSelector
+]
+
+{ #category : #settings }
+SmTRules class >> settingsOn: aBuilder [
+	<systemsettings>
+	(aBuilder group: #SmartTest)
+		with: [ (aBuilder group: #SmartFinder)
+				order: 7;
+				with: [ (aBuilder pickOne: #finder)
+						order: 0;
+						label: 'SmartTest finder';
+						target: self;
+						parent: #SmartFinder;
+						domainValues: (SmTTestFinderStrategy allSubclasses select: #isConcreteFinder);
+						description: 'The finder defines how CORA searchs the relative test of a method'.
+					(aBuilder pickOne: #cacheStrategy)
+						order: 2;
+						label: 'SmartTest Cache';
+						target: self;
+						parent: #SmartFinder;
+						domainValues: SmTCacheStrategy allSubclasses;
+						description:
+							'To visualize the current cache
+				SmTCacheSettings cache new currentCache'.
+					(aBuilder pickOne: #runner)
+						order: 3;
+						label: 'SmartTest test runner';
+						target: self;
+						parent: #SmartFinder;
+						domainValues: SmTRunnerStrategy allSubclasses;
+						description: 'The test runner defines if the tests are run in a debug way or not'.
+					(aBuilder pickOne: #strategy)
+						order: 1;
+						label: 'SmartTest testing strategy';
+						target: self;
+						parent: #SmartFinder;
+						domainValues: SmTTestingStrategy allSubclasses;
+						description: 'The testing strategy defines when SmartTest will run the test it has found.'.
+					(aBuilder pickOne: #filter)
+						order: 0.5;
+						label: 'SmartTest filter';
+						target: self;
+						parent: #SmTFilter;
+						domainValues: SmTFilterStrategy allSubclasses;
+						description: 'The testing strategy defines when SmartTest will run the test it has found.' ].
+					(aBuilder setting: #packagesRegex)
+		label: 'SmartTest filter Regex configuration';
+		target: self;
+		parent: #SmTFilter;
+		ghostHelp: 'SmartTe|Star*Wnrs';
+		notInStyle;
+		default: '';
+		description:
+			'Change the value to scope the package you want to explore.
+If you want to check the packages are well detected,run 
+	SmTFilterSpecifyPackageSettings selectedPackage'.
+			(aBuilder group: #SmTActivationRenrakuOption)
+				order: 6;
+				with: [ (aBuilder setting: #activated)
+						target: self;
+						order: 0.01;
+						label: 'SmartTest Reneraku Integration Activated';
+						description: 'Toogle to activate/disable the reneraku integration of the plugin' ].
+			(aBuilder setting: #shouldTryToFindTestForDynamic)
+				parent: 'Beta';
+				target: self;
+				order: 0.04;
+				label: 'Try to find for Dynamic ';
+				description:
+					'When you click in a method, and have selected a Dynamix finder, we''''are updating the cache for it execution
+	(BETA)'.
+			(aBuilder group: #fill)
+				label: 'Fill cache';
+				target: self;
+				parent: #Beta;
+				dialog: [ SimpleButtonMorph new
+						target: self;
+						label: 'Fill cache';
+						actionSelector: #fillCache;
+						themeChanged;
+						yourself ];
+				description: 'Fill the cache with selected package' ].
+	(aBuilder group: #reset)
+		label: 'Reset Cache';
+		target: self;
+		parent: #SmartTest;
+		order: 9;
+		dialog: [ SimpleButtonMorph new
+				target: self testFinder;
+				label: 'Reset Current SmartTest Cache';
+				actionSelector: #resetCache;
+				themeChanged;
+				yourself ];
+		description:
+			'Reset the cache of SmartTest
+		SmTRules testFinder currentCache'.
+	(aBuilder group: #Beta)
+		parent: #SmartTest;
+		order: 10
+]
+
+{ #category : #'instance creation' }
+SmTRules class >> shouldTryToFindTestForDynamic [
+	^ shouldTryToFindTestForDynamic ifNil: [ shouldTryToFindTestForDynamic := true ]
+]
+
+{ #category : #'instance creation' }
+SmTRules class >> shouldTryToFindTestForDynamic: aBoolean [
+	shouldTryToFindTestForDynamic := aBoolean.
+	self testFinder shouldTryToFindTestForDynamic: aBoolean.
+]
+
+{ #category : #settings }
+SmTRules class >> strategy [
+	^ smTClassTestingStrategy ifNil: [ smTClassTestingStrategy := SmTTestingStrategyEachModification ]
+]
+
+{ #category : #settings }
+SmTRules class >> strategy: aSelector [
+	smTClassTestingStrategy := aSelector.
+	self testFinder testingStrategy: aSelector new 
+]
+
+{ #category : #'instance creation' }
+SmTRules class >> testFinder [
+	^ SmTSmartFinder ifNil: [ SmTSmartFinder := SmartFinder new
+		cacheStrategy: self cacheStrategy new;
+		filter: self filter new;
+		testRunner: self runner;
+		smtFinder: self finder new;
+		testingStrategy: self strategy new;
+		shouldTryToFindTestForDynamic: self shouldTryToFindTestForDynamic ]
+]
+
+{ #category : #'instance creation' }
+SmTRules class >> testFinder: aSmTSmartFinder [
+	"It should be used only for tests"
+	
+	SmTSmartFinder := aSmTSmartFinder
+]
+
+{ #category : #'initialize - release' }
+SmTRules class >> unload [
+	self testFinder clean
+]
+
+{ #category : #accessing }
+SmTRules >> activated [
+	^ self class activated
+]
+
+{ #category : #accessing }
+SmTRules >> basicCheck: anEntity [
+	^ self activated and: [ self isOnNautilusOrCalypso ]
+]
+
+{ #category : #'initialize-release' }
+SmTRules >> findTestsForMethod: aCompiledMethod [
+	^ tests := self class testFinder findTestsForMethod: aCompiledMethod
+]
+
+{ #category : #accessing }
+SmTRules >> isOnNautilusOrCalypso [
+	"20 items means at least Nautilus"
+	| he |
+	he := thisContext stack collect: [ :c | c methodClass asString ] .
+	^ he anySatisfy: [:el | 'ClyNavigationEnvironment' match: el]
+]
+
+{ #category : #accessing }
+SmTRules >> isVisible [
+	^ false
+]
+
+{ #category : #accessing }
+SmTRules >> severity [
+
+	^ #information
+]
+
+{ #category : #accessing }
+SmTRules >> tests [
+	^ tests
+]
diff --git a/src/SmartTest/SmTRunnerStrategy.class.st b/src/SmartTest/SmTRunnerStrategy.class.st
new file mode 100644
index 0000000..7801b87
--- /dev/null
+++ b/src/SmartTest/SmTRunnerStrategy.class.st
@@ -0,0 +1,110 @@
+"
+I'm a tool which help the plugin to run tests and return the result of them
+"
+Class {
+	#name : #SmTRunnerStrategy,
+	#superclass : #Object,
+	#category : 'SmartTest-Runner'
+}
+
+{ #category : #accessing }
+SmTRunnerStrategy class >> colorForTestResultOf: aTestResult [
+	aTestResult hasErrors 
+		ifTrue: [ ^ Color red ].
+	aTestResult hasFailures 
+		ifTrue: [ ^ Color yellow].
+	aTestResult hasPassed
+		ifTrue: [ ^ Color green ].
+	^ Color gray
+]
+
+{ #category : #accessing }
+SmTRunnerStrategy class >> iconForTestFromTestCaseHistory: aTestCase [
+	(aTestCase class methodRaisedError: aTestCase selector)
+		ifTrue: [ ^ #testRedIcon ].
+	(aTestCase class methodFailed: aTestCase selector)
+		ifTrue: [ ^ #testYellowIcon ].
+	(aTestCase class methodPassed: aTestCase selector)
+		ifTrue: [ ^ #testGreenIcon ].
+	^ #testNotRunIcon
+]
+
+{ #category : #accessing }
+SmTRunnerStrategy class >> iconForTestFromTestsCasesHistory: aCollectionOfTestCase [
+	| iconType tempColor |
+	iconType := #testNotRunIcon.
+	aCollectionOfTestCase
+		do: [ :aTestCase | 
+			tempColor := self iconForTestFromTestCaseHistory: aTestCase.
+			(tempColor = #testNotRunIcon)
+				ifTrue: [ ^ #testNotRunIcon ].
+			(tempColor = #testRedIcon)
+				ifTrue: [ iconType := #testRedIcon ].
+			(iconType = #testRedIcon)
+				ifFalse: [ (tempColor = #testYellowIcon)
+						ifTrue: [ iconType := #testYellowIcon ] ifFalse: [ iconType := tempColor  ] ] ].
+				^ iconType 
+]
+
+{ #category : #accessing }
+SmTRunnerStrategy class >> iconForTestResultOf: aTestResult [
+	aTestResult hasErrors 
+		ifTrue: [ ^ self iconNamed: #testRedIcon ].
+	aTestResult hasFailures 
+		ifTrue: [ ^ self iconNamed: #testYellowIcon ].
+	aTestResult hasPassed
+		ifTrue: [ ^ self iconNamed: #testGreenIcon ].
+	^ self iconNamed: #testNotRunIcon.
+]
+
+{ #category : #action }
+SmTRunnerStrategy class >> notifyTitle: title contents: aTestResult [
+
+	 | contents |
+	contents := aTestResult tests size > 3
+		ifTrue: [ String streamContents: [ :aStream | 
+				aStream 
+					<< aTestResult tests size
+					<< ' tests in: '.
+				(aTestResult tests collect: #class as: Set) 
+					do: [ :eachClass | aStream << eachClass name ]
+					separatedBy: [ aStream << ', ' ] ] ]
+		ifFalse: [ aTestResult  ].
+
+	 GrowlMorph 
+		openWithLabel: title
+		contents: contents
+		backgroundColor: (self colorForTestResultOf: aTestResult )
+		labelColor: Color black
+]
+
+{ #category : #action }
+SmTRunnerStrategy class >> runCase: aTestMethod notifyIcon: anIcon [
+	| aTestResult |
+
+	aTestResult := TestResult new.
+	[ aTestResult runCaseForDebug: aTestMethod ]
+		ensure: [ anIcon labelGraphic: (self iconForTestResultOf: aTestResult) ].
+	anIcon labelGraphic: (self iconForTestResultOf: aTestResult).
+	aTestResult updateResultsInHistory.
+	self notifyTitle: 'SmartTest Execution' contents: aTestResult.
+	^aTestResult.
+]
+
+{ #category : #action }
+SmTRunnerStrategy class >> runCases: aTestCollection [
+	| aTestResult |
+	aTestResult := TestResult new.
+	aTestCollection do: [ :aTest |aTestResult runCase: aTest ].
+	aTestResult updateResultsInHistory.
+	self notifyTitle: 'SmartTest Execution' contents: aTestResult.
+	^aTestResult
+]
+
+{ #category : #action }
+SmTRunnerStrategy class >> runCases: aTestCollection notifyIcon: anIcon [
+	| aTestResult |
+	aTestResult := self runCases: aTestCollection.
+	anIcon labelGraphic: (self iconForTestResultOf: aTestResult ) .
+	^aTestResult
+]
diff --git a/src/SmartTest/SmTRunnerStrategyDebug.class.st b/src/SmartTest/SmTRunnerStrategyDebug.class.st
new file mode 100644
index 0000000..f977f90
--- /dev/null
+++ b/src/SmartTest/SmTRunnerStrategyDebug.class.st
@@ -0,0 +1,18 @@
+"
+When a test is run by CORA. If it failled, the debugger will open.
+"
+Class {
+	#name : #SmTRunnerStrategyDebug,
+	#superclass : #SmTRunnerStrategy,
+	#category : 'SmartTest-Runner'
+}
+
+{ #category : #action }
+SmTRunnerStrategyDebug class >> runCases: aTestCollection [
+	| aTestResult |
+	aTestResult := TestResult new.
+	aTestCollection do: [ :aTest |aTestResult runCaseForDebug: aTest ].
+	aTestResult updateResultsInHistory.
+	self notifyTitle: 'SmartTest Execution' contents: aTestResult.
+	^aTestResult 
+]
diff --git a/SmartTest.package/SmTRunnerStrategyNotice.class/class/runCase.notifyIcon..st b/src/SmartTest/SmTRunnerStrategyNotice.class.st
similarity index 52%
rename from SmartTest.package/SmTRunnerStrategyNotice.class/class/runCase.notifyIcon..st
rename to src/SmartTest/SmTRunnerStrategyNotice.class.st
index 925fb80..b8da5a3 100644
--- a/SmartTest.package/SmTRunnerStrategyNotice.class/class/runCase.notifyIcon..st
+++ b/src/SmartTest/SmTRunnerStrategyNotice.class.st
@@ -1,5 +1,14 @@
-action
-runCase: aTestMethod notifyIcon: anIcon
+"
+When a test is run by CORA. If it failled, nothing happen
+"
+Class {
+	#name : #SmTRunnerStrategyNotice,
+	#superclass : #SmTRunnerStrategy,
+	#category : 'SmartTest-Runner'
+}
+
+{ #category : #action }
+SmTRunnerStrategyNotice class >> runCase: aTestMethod notifyIcon: anIcon [
 	| aTestResult |
 	aTestResult := TestResult new.
 	[ aTestResult runCase: aTestMethod ]
@@ -7,4 +16,5 @@ runCase: aTestMethod notifyIcon: anIcon
 	anIcon labelGraphic: (self iconForTestResultOf: aTestResult).
 	aTestResult updateResultsInHistory.
 	self notifyTitle: 'SmartTest Execution' contents: aTestResult.
-	^aTestResult.
\ No newline at end of file
+	^aTestResult.
+]
diff --git a/src/SmartTest/SmTRunnerStrategySmart.class.st b/src/SmartTest/SmTRunnerStrategySmart.class.st
new file mode 100644
index 0000000..3eabc9d
--- /dev/null
+++ b/src/SmartTest/SmTRunnerStrategySmart.class.st
@@ -0,0 +1,8 @@
+"
+When a test is run by CORA. If it failled and it was run from the test selection windows, the debugger will open. Nothing else
+"
+Class {
+	#name : #SmTRunnerStrategySmart,
+	#superclass : #SmTRunnerStrategy,
+	#category : 'SmartTest-Runner'
+}
diff --git a/src/SmartTest/SmTSelectPackageBrowser.class.st b/src/SmartTest/SmTSelectPackageBrowser.class.st
new file mode 100644
index 0000000..47e1d92
--- /dev/null
+++ b/src/SmartTest/SmTSelectPackageBrowser.class.st
@@ -0,0 +1,126 @@
+"
+I'm a tool that helps in selecting the packages that are going to be searched.
+"
+Class {
+	#name : #SmTSelectPackageBrowser,
+	#superclass : #SelectBrowser,
+	#instVars : [
+		'smartFinder'
+	],
+	#category : 'SmartTest-Tools'
+}
+
+{ #category : #opening }
+SmTSelectPackageBrowser class >> openWithSmartFinder: aSmartFinder [
+	self new
+		smartFinder: aSmartFinder;
+		items: RPackageOrganizer default packages;
+		openWithSpec
+]
+
+{ #category : #api }
+SmTSelectPackageBrowser >> addAllItems [
+	| tmp |
+	tmp := self sort: selectedModel listItems withAll: toSelectModel listItems.
+	selectedModel items: tmp.
+	toSelectModel items: #().
+	toSelectModel updateList.
+	selectedModel updateList
+]
+
+{ #category : #accessing }
+SmTSelectPackageBrowser >> addItems [
+	toSelectModel selectedItems
+		ifNotNil: [ :items | 
+			selectedModel items: (self sort: selectedModel listItems withAll: items).
+			toSelectModel items: (self sort: toSelectModel listItems withoutAll: items) ].
+	toSelectModel updateList.
+	selectedModel updateList
+]
+
+{ #category : #api }
+SmTSelectPackageBrowser >> createTestSuiteFrom: listItem [
+	| testSuite |
+	testSuite := TestSuite new.
+	testSuite addTests: ((listItem flatCollect: #methods) select: #isTestMethod thenCollect: #asTestCase).
+	^ testSuite
+]
+
+{ #category : #initialization }
+SmTSelectPackageBrowser >> initialize [
+	| wrappingBlock testPackage |
+	super initialize.
+	toSelectModel := self instantiate: ListPresenter.
+	selectedModel := self instantiate: ListPresenter.
+	selectedModel beMultipleSelection.
+	toSelectModel beMultipleSelection.
+	wrappingBlock := [ :package | package packageName ].
+	toSelectModel displayBlock: wrappingBlock.
+	selectedModel displayBlock: wrappingBlock.
+	testPackage := MCWorkingCopy allManagers reject: [ :package | '*Test*' match:  package packageName ].
+	toSelectModel items: (self sort: (toSelectModel  listItems \ testPackage))
+]
+
+{ #category : #api }
+SmTSelectPackageBrowser >> nextAction [
+	| past testSuite |
+	testSuite := self createTestSuiteFrom: selectedModel listItems.
+	past := smartFinder smtFinder.
+	smartFinder smtFinder: SmTReflectivityTestFinderStrategy new.
+	smartFinder buildCacheFromTestSuite: testSuite.
+	smartFinder smtFinder: past.
+	self delete
+]
+
+{ #category : #accessing }
+SmTSelectPackageBrowser >> removeAllItems [
+	| tmp |
+	tmp := self sort: toSelectModel listItems withAll: selectedModel listItems.
+	toSelectModel items: tmp.
+	selectedModel items: #().
+	toSelectModel updateList.
+	selectedModel updateList
+]
+
+{ #category : #accessing }
+SmTSelectPackageBrowser >> removeItems [
+	selectedModel selectedItems
+		ifNotNil: [ :items | 
+			toSelectModel items: (self sort: toSelectModel listItems withAll: items).
+			selectedModel items: (self sort: selectedModel listItems withoutAll: items) ].
+	toSelectModel updateList.
+	selectedModel updateList
+]
+
+{ #category : #accessing }
+SmTSelectPackageBrowser >> smartFinder [
+	^ smartFinder
+]
+
+{ #category : #accessing }
+SmTSelectPackageBrowser >> smartFinder: anObject [
+	smartFinder := anObject
+]
+
+{ #category : #accessing }
+SmTSelectPackageBrowser >> sort: aCollection [
+	^ aCollection asOrderedCollection sort: [:e1 :e2 | (e1 asString) < (e2 asString)].
+]
+
+{ #category : #accessing }
+SmTSelectPackageBrowser >> sort: aCollection withAll: anotherCollection [
+	^ self
+		sort:
+			(aCollection asOrderedCollection
+				addAll: anotherCollection;
+				yourself)
+]
+
+{ #category : #accessing }
+SmTSelectPackageBrowser >> sort: aCollection withoutAll: anotherCollection [
+	^ self
+		sort:
+			(aCollection asOrderedCollection
+				removeAll: anotherCollection;
+				yourself)
+]
diff --git a/src/SmartTest/SmTSenderTestFinderStrategy.class.st b/src/SmartTest/SmTSenderTestFinderStrategy.class.st
new file mode 100644
index 0000000..5636fb3
--- /dev/null
+++ b/src/SmartTest/SmTSenderTestFinderStrategy.class.st
@@ -0,0 +1,84 @@
+"
+I work as ChangeImpact.
+I'm looking for sender of sender etc.
+I'm not well tested, but I'm fast and can help you for quick testing.
+"
+Class {
+	#name : #SmTSenderTestFinderStrategy,
+	#superclass : #SmTTestFinderStrategy,
+	#category : 'SmartTest-Finder'
+}
+
+{ #category : #testing }
+SmTSenderTestFinderStrategy class >> isConcreteFinder [
+	^ true
+]
+
+{ #category : #'private - search' }
+SmTSenderTestFinderStrategy >> collectSenderOfRGMethodeDefintion: aRGMethodDefinition [
+	^ aRGMethodDefinition isInitializer
+		ifTrue: [ { SystemNavigation default allReferencesTo: aRGMethodDefinition methodClass binding.
+			aRGMethodDefinition senders} asSet flattened  ]
+		ifFalse: [ aRGMethodDefinition senders ]
+]
+
+{ #category : #api }
+SmTSenderTestFinderStrategy >> methodsFor: aCompiledMethod forThePackage: packages [
+	self flag: '24 july 2018 - What is this method ? If useless i or from another project i will remove it'.
+
+	^ self cache
+		at: aCompiledMethod methodReference
+		ifAbsent: [ (self searchTestsForATestMethod: aCompiledMethod)
+				ifNotEmpty: [ :methods | 
+					^ (self searchTestsForMethod: aCompiledMethod)
+						addAll: (self computeInheritedTestFromDiscoveredTest: methods);
+						yourself ].
+			(self searchTestsForASetUpMethod: aCompiledMethod)
+				ifNotEmpty: [ :methods | 
+					^ (self searchTestsForMethod: aCompiledMethod)
+						addAll: (self computeInheritedTestFromDiscoveredTest: methods);
+						yourself ].
+			(self searchTestsForATearDownMethod: aCompiledMethod)
+				ifNotEmpty: [ :methods | 
+					^ (self searchTestsForMethod: aCompiledMethod)
+						addAll: (self computeInheritedTestFromDiscoveredTest: methods);
+						yourself ].
+			(self recursiveSearchForAStandardMethod: (aCompiledMethod asRingDefinition)  inPackages: packages )
+				ifNotEmpty: [ :methods | 
+					^ (self searchTestsForMethod: aCompiledMethod)
+						addAll: (self computeInheritedTestFromDiscoveredTest: methods);
+						yourself ].
+			self cache at: aCompiledMethod methodReference put: Set new.
+			^ {} ]
+]
+
+{ #category : #'private - search' }
+SmTSenderTestFinderStrategy >> recursiveSearchForAStandardMethod: aRGMethodDefinition inPackages: packages [
+	^ self recursiveSearchForAStandardMethod: aRGMethodDefinition inPackages: packages alreadyVisited: Set new
+]
+
+{ #category : #'private - search' }
+SmTSenderTestFinderStrategy >> recursiveSearchForAStandardMethod: aRGMethodDefinition inPackages: packages alreadyVisited: alreadyVisitedMethods [
+	| foundMethods |
+	self cache at: aRGMethodDefinition ifPresent: [ :a | ^ a ].
+	foundMethods := Set new.
+	(self collectSenderOfRGMethodeDefintion: aRGMethodDefinition)
+		reject: [ :aSenderMethod | 
+			| reject |
+			reject := (filter shouldEntityBeFilteredOut: aSenderMethod inPackages: packages) or: [ alreadyVisitedMethods includes: aSenderMethod ].
+			alreadyVisitedMethods add: aSenderMethod.
+			reject ]
+		thenDo: [ :aSenderRGMethodDefinition | 
+			foundMethods add: aSenderRGMethodDefinition.
+			foundMethods addAll: (self recursiveSearchForAStandardMethod: aSenderRGMethodDefinition inPackages: packages alreadyVisited: alreadyVisitedMethods) ].
+	^ foundMethods
+]
+
+{ #category : #API }
+SmTSenderTestFinderStrategy >> searchTestsForAStandardMethod: aCompiledMethod [
+	| packagesToLookAt |
+	packagesToLookAt := self filter extractPackagesFrom: aCompiledMethod.
+	^ (self
+		recursiveSearchForAStandardMethod: aCompiledMethod methodReference
+		inPackages: packagesToLookAt ) select: #isTestMethod
+]
diff --git a/src/SmartTest/SmTSpecifyPackagesNameFilter.class.st b/src/SmartTest/SmTSpecifyPackagesNameFilter.class.st
new file mode 100644
index 0000000..96c12ad
--- /dev/null
+++ b/src/SmartTest/SmTSpecifyPackagesNameFilter.class.st
@@ -0,0 +1,58 @@
+"
+This filter only looks in the packages whose names match a given regex
+"
+Class {
+	#name : #SmTSpecifyPackagesNameFilter,
+	#superclass : #SmTFilterStrategy,
+	#instVars : [
+		'packagesRegex',
+		'selectedPackages'
+	],
+	#category : 'SmartTest-Filter'
+}
+
+{ #category : #'settings-definition' }
+SmTSpecifyPackagesNameFilter class >> packagesRegex: aRegexStringCollection [
+	^ self new
+		packagesRegex: aRegexStringCollection;
+		yourself
+]
+
+{ #category : #asserting }
+SmTSpecifyPackagesNameFilter >> extractPackagesFrom: aCompiledMethod [ 
+	^ self packages.
+]
+
+{ #category : #accessing }
+SmTSpecifyPackagesNameFilter >> packages [
+	"Return the collection of package that was find from the settings"
+
+
+	^ self selectedPackages
+]
+
+{ #category : #accessing }
+SmTSpecifyPackagesNameFilter >> packagesRegex [
+	^ packagesRegex
+]
+
+{ #category : #accessing }
+SmTSpecifyPackagesNameFilter >> packagesRegex: anObject [
+	packagesRegex := anObject
+]
+
+{ #category : #accessing }
+SmTSpecifyPackagesNameFilter >> selectedPackages [
+	^ (RPackageOrganizer default packages
+		flatCollect: [ :package | 
+			package classTags
+				select: [ :classTag | self packagesRegex asRegex matchesPrefix: classTag categoryName ]
+				thenCollect: #categoryName ]) asSet
+]
+
+{ #category : #accessing }
+SmTSpecifyPackagesNameFilter >> shouldEntityBeFilteredOut: anEntity inPackages: anObject [
+ "(anEntity methodClass allCallsOn collect: #ciPackage) not."
+	(anEntity isClass) ifTrue:[^ (self packages includes: anEntity category) not].
+	^ (self packages includes: anEntity methodClass category) not
+]
diff --git a/src/SmartTest/SmTTestCoverage.class.st b/src/SmartTest/SmTTestCoverage.class.st
new file mode 100644
index 0000000..23648ae
--- /dev/null
+++ b/src/SmartTest/SmTTestCoverage.class.st
@@ -0,0 +1,35 @@
+"
+I'm a tool that help configure the finder for the TestCoverage strategy.
+"
+Class {
+	#name : #SmTTestCoverage,
+	#superclass : #HDTestCoverage,
+	#instVars : [
+		'finder'
+	],
+	#category : 'SmartTest-Tools'
+}
+
+{ #category : #accessing }
+SmTTestCoverage >> finder [
+	^ finder
+]
+
+{ #category : #accessing }
+SmTTestCoverage >> finder: aSmTFinder [
+	finder := aSmTFinder
+]
+
+{ #category : #accessing }
+SmTTestCoverage >> mark [
+	hasRun
+		ifFalse: [ hasRun := true.
+			 self finder
+				addToCurrentExecutionMethodReference: reference ]
+]
+
+{ #category : #accessing }
+SmTTestCoverage >> run: aSelector with: anArray in: aReceiver [
+	self mark.
+	^ aReceiver withArgs: anArray executeMethod: method
+]
diff --git a/src/SmartTest/SmTTestCoverageTestFinderStrategy.class.st b/src/SmartTest/SmTTestCoverageTestFinderStrategy.class.st
new file mode 100644
index 0000000..5001530
--- /dev/null
+++ b/src/SmartTest/SmTTestCoverageTestFinderStrategy.class.st
@@ -0,0 +1,302 @@
+"
+The Wrapper strategy is a dynamic test regression finder.
+
+It only does the reseach for method one by one.
+
+  ts := TestSuite new.
+ts addTest: (SmTClassTest selector: #testMethod1).
+ts addTest: (SmTClassTest selector: #testMethod2).
+ts addTest: (SmTClassTest selector: #testMethod3).
+ts addTest: (SmTClassTest selector: #testMethod4).
+sf := SmartFinder new.
+sf smtFinder: SmTTestCoverageTestFinderStrategy new.
+sf buildCacheFromTestSuite: ts.
+sf cacheValues 
+"
+Class {
+	#name : #SmTTestCoverageTestFinderStrategy,
+	#superclass : #SmTTestFinderDynamicStrategy,
+	#instVars : [
+		'wrappers'
+	],
+	#category : 'SmartTest-Finder'
+}
+
+{ #category : #protocol }
+SmTTestCoverageTestFinderStrategy class >> collectPackageWithBaseName: aBaseNamePackage [
+	^ RPackageOrganizer default packages select: [ :p | aBaseNamePackage,'*' match: p packageName ]
+]
+
+{ #category : #protocol }
+SmTTestCoverageTestFinderStrategy class >> collectPackagesFromName: aPackageName [
+	^ self collectPackageWithBaseName: (self extractPackageBaseName: aPackageName) 
+]
+
+{ #category : #protocol }
+SmTTestCoverageTestFinderStrategy class >> extractPackageBaseName: aPackageName [
+	^(aPackageName substrings: '-') at: 1
+]
+
+{ #category : #protocol }
+SmTTestCoverageTestFinderStrategy class >> isConcreteFinder [
+	^ true
+]
+
+{ #category : #adding }
+SmTTestCoverageTestFinderStrategy >> addATest: aTestCase toACollectionOfMethod: aCollectionOfCompiledMethod [
+	aCollectionOfCompiledMethod
+		do: [ :aCompiledMethod | self addATest: aTestCase toMethod: aCompiledMethod ]
+]
+
+{ #category : #adding }
+SmTTestCoverageTestFinderStrategy >> addATest: aTestCase toMethodReference: aMethodReference [
+	(self searchTestsForMethodReference: aMethodReference)
+		add: aTestCase methodReference
+]
+
+{ #category : #adding }
+SmTTestCoverageTestFinderStrategy >> addImpactedTestFromWrapper: aTestMethod theTestMethod: wrappers [
+	|  suite testRunner |
+	testRunner := TestRunner new.
+	suite := TestSuite new.
+	suite addTest: aTestMethod.
+	testRunner runSuite: suite.
+	self updateCacheAndUnmarkFrom: wrappers forMethod: aTestMethod.
+]
+
+{ #category : #jenkins }
+SmTTestCoverageTestFinderStrategy >> addRelevantTest: aTestMethod fromMarkedWrappers: wrappers [
+	| suite testRunner |
+	testRunner := TestRunner new.
+	suite := TestSuite new.
+	suite addTest: aTestMethod.
+	testRunner runSuite: suite.
+	self updateCacheAndUnmarkFrom: wrappers forMethod: aTestMethod .
+
+]
+
+{ #category : #adding }
+SmTTestCoverageTestFinderStrategy >> addToCurrentExecutionMethodReference: aMethodReference [
+	| he |
+	he := thisContext contextStack reject: [ :c | c selector = #DoIt ] thenCollect: [ :a | a method methodReference ].
+	((he includes: self currentTestExecution methodReference) or: [(he collect: #selector) includes: #buildCacheFromTestSuite:])
+		ifTrue: [ self addATest: self currentTestExecution toMethodReference: aMethodReference ]
+]
+
+{ #category : #api }
+SmTTestCoverageTestFinderStrategy >> analyseAndRemoveProxyFor: aTestCase [
+	(wrappers at: aTestCase) do: [ :each | each uninstall ].
+	wrappers removeKey: aTestCase 
+]
+
+{ #category : #accessing }
+SmTTestCoverageTestFinderStrategy >> availableMethods [
+	"Collect the methods that can be used with the wrapper to fill completely the methodToTest dictionnary"
+	^ (self availablePackages flatCollect: [ :aPackage | aPackage methods ])
+		reject: [ :method | 
+			method methodClass = SmTTestCoverage
+				or: [ method methodClass = SmTTestCoverageTestFinderStrategy
+						or: [ method methodClass = SmTTestFinderStrategy
+								or: [ method methodClass = SmTBasicCacheStrategy or: [ method methodClass = HDTestCoverage or: [ method methodClass = SmTTestFinderDynamicStrategy] ] ] ] ] ]
+]
+
+{ #category : #accessing }
+SmTTestCoverageTestFinderStrategy >> availablePackages [
+	"Collect the packages that can be used with the wrapper to fill completely the methodToTest dictionnary"
+	| availablePackages |
+	(availablePackages := RPackageOrganizer default packages
+		reject: [ :package | 
+			(package packageName beginsWith: 'Kernel')
+				or: [ (package packageName beginsWith: 'Collections')
+						or: [ (package packageName beginsWith: 'GT')
+or: [ (package packageName beginsWith: 'Ring')
+								or: [ (package packageName beginsWith: 'Regex')
+										or: [ (package packageName beginsWith: 'Exceptions')
+												or: [ (package packageName beginsWith: 'SUnit')
+														or: [ (package packageName beginsWith: 'System') or: [ (package packageName endsWith: 'Tests')
+																or: [ package packageName includesSubstring: 'HudsonBuildTools20' caseSensitive: false ] ] ] ] ] ] ] ] ] ])
+		sort: [ :a :b | a packageName < b packageName ].
+	^ availablePackages
+]
+
+{ #category : #accessing }
+SmTTestCoverageTestFinderStrategy >> availableTestMethods [
+	"Collect the test methods that can be used with the wrapper to fill completely the methodToTest dictionnary"
+	^ (self availableTestPackages flatCollect: [ :aPackage | aPackage methods ])  reject: [ :method | method methodClass = SmTTestCoverage ]
+]
+
+{ #category : #accessing }
+SmTTestCoverageTestFinderStrategy >> availableTestPackages [
+	"Collect the test packages that can be used with the wrapper to fill completely the methodToTest dictionnary"
+	| availablePackages |
+	(availablePackages := RPackageOrganizer default packages
+		reject: [ :package | 
+			(package packageName beginsWith: 'Kernel')
+				or: [ (package packageName beginsWith: 'Collections')
+						or: [ (package packageName beginsWith: 'GT')
+							or: [ (package packageName beginsWith: 'AST')
+								or: [ (package packageName beginsWith: 'Athens')
+								or: [ (package packageName beginsWith: 'Ring')
+									or: [ (package packageName beginsWith: 'Alien')
+									or: [ (package packageName beginsWith: 'Announcements')
+										or: [ (package packageName beginsWith: 'Regex')
+												or: [ (package packageName beginsWith: 'Exceptions')
+														or: [ (package packageName beginsWith: 'SUnit') or: [ (package packageName beginsWith: 'System') or: [ package packageName includesSubstring: 'HudsonBuildTools20' caseSensitive: false ] ] ] ] ] ] ] ] ] ] ] ] ])
+		sort: [ :a :b | a packageName < b packageName ].
+	^ availablePackages
+]
+
+{ #category : #api }
+SmTTestCoverageTestFinderStrategy >> buildCacheFromTestSuite: aTestSuite [
+"tr := TestRunner new.
+tr open.
+testSuites := tr allSelectedTestSuites.
+ts := TestSuite new.
+(testSuites flatCollect: [ :ts | ts tests ]) do: [ :atest | ts addTest: atest ].
+[sf := SmartFinder new.
+sf smtFinder: SmTTestCoverageTestFinderStrategy new.
+sf buildCacheFromTestSuite: ts.
+sf cacheValues ] timeToRun 
+"
+	| listOfPackage methodToWrap |
+	listOfPackage := (aTestSuite flatCollectTests flatCollect: [ :aTestCase | self class collectPackagesFromName: aTestCase class package name ]) asSet collect: #packageName.
+	methodToWrap := Set new.
+	methodToWrap addAll: (self collectMethodToTestForPackagesNamed: listOfPackage).
+	"methodToWrap addAll: (self collectClassToTestForPackagesNamed: listOfPackage)."
+	methodToWrap := methodToWrap intersection: self availableMethods.
+	wrappers at: aTestSuite put: (methodToWrap asOrderedCollection collect: [ :each | (SmTTestCoverage on: each methodReference) finder: self ]).
+	(wrappers at: aTestSuite) do: [ :each | each install ] "displayingProgress: [ :aClass | 'Installing ' , aClass asString ] every: 1".
+	aTestSuite flatCollectTests
+		do: [ :aTestCase | 
+			self currentTestExecution: aTestCase.
+			self addATest: aTestCase toMethodReference: aTestCase methodReference.
+			aTestCase run.
+			(wrappers at: aTestSuite) do: [ :each | each unmark ] ].
+	(wrappers at: aTestSuite) do: [ :each | each uninstall ]
+]
+
+{ #category : #search }
+SmTTestCoverageTestFinderStrategy >> collectAllRelativePackages: aByteString [
+	^ RPackageOrganizer default packages select: [ :a | (self filter extractPackageBaseName: a packageName) = aByteString ]
+]
+
+{ #category : #jenkins }
+SmTTestCoverageTestFinderStrategy >> collectClassToTestForPackage: aPackage [
+	(self availablePackages includes: aPackage)
+		ifTrue: [ ^ (aPackage classes reject: #isTrait)
+				flatCollect: [ :aClass | SmTClassTestedRule new methodUsingVariablesOfClass: aClass ] ].
+	^ OrderedCollection new
+]
+
+{ #category : #jenkins }
+SmTTestCoverageTestFinderStrategy >> collectClassToTestForPackagesNamed: aCollectionOfPackagesNamed [
+	^ aCollectionOfPackagesNamed flatCollect: [ :aPackageName | self collectClassToTestForPackage: (self getPackageFromName: aPackageName) ]
+]
+
+{ #category : #jenkins }
+SmTTestCoverageTestFinderStrategy >> collectMethodToTestForPackage: aPackage [
+	^ aPackage methods
+]
+
+{ #category : #jenkins }
+SmTTestCoverageTestFinderStrategy >> collectMethodToTestForPackages: aCollectionOfPackage [
+	^ aCollectionOfPackage flatCollect: [ :aPackage | self collectMethodToTestForPackage: aPackage ]
+]
+
+{ #category : #jenkins }
+SmTTestCoverageTestFinderStrategy >> collectMethodToTestForPackagesNamed: aCollectionOfPackagesName [
+	^ aCollectionOfPackagesName flatCollect: [ :aPackageName | self collectMethodToTestForPackage: (self getPackageFromName: aPackageName ) ]	
+]
+
+{ #category : #parsing }
+SmTTestCoverageTestFinderStrategy >> extractPackageBaseName: aPackageName [
+	^(aPackageName substrings: '-') at: 1
+]
+
+{ #category : #accessing }
+SmTTestCoverageTestFinderStrategy >> getPackageFromName: aPackageName [
+	^ RPackage organizer packageNamed: aPackageName.
+]
+
+{ #category : #initialization }
+SmTTestCoverageTestFinderStrategy >> initialize [
+	wrappers := Dictionary new
+]
+
+{ #category : #api }
+SmTTestCoverageTestFinderStrategy >> installProxyFor: aTestCase [
+	| methodToWrap listOfPackage |
+	self currentTestExecution: aTestCase.
+	self addATest: aTestCase toMethodReference: aTestCase methodReference.
+	listOfPackage := OrderedCollection new.
+	listOfPackage addAll: (SmalltalkImage current packages select: [ :package | package name beginsWith: (self extractPackageBaseName: (aTestCase methodReference compiledMethod package name)) ] ).
+	methodToWrap := Set new.
+	methodToWrap addAll: (self collectMethodToTestForPackagesNamed: (listOfPackage collect: #name)).
+	methodToWrap := methodToWrap intersection: self availableMethods.
+	wrappers
+		at: aTestCase
+		put:
+			(methodToWrap asOrderedCollection
+				collect: [ :each | (SmTTestCoverage on: each methodReference) finder: self ]).
+	((wrappers at: aTestCase) sort: [ :a :b | a name < b name ])
+		do: [ :each | each install ]
+		displayingProgress: [ :aClass | 'Installing ' , aClass asString ]
+		every: 1
+]
+
+{ #category : #api }
+SmTTestCoverageTestFinderStrategy >> methodsInSimilarPackageAs: aCompiledMethod [
+		
+	| packageBaseName packages |
+	packageBaseName := self filter extractCompiledMethodPackageBaseName: aCompiledMethod.
+	packages := self collectAllRelativePackages: packageBaseName.
+	^ packages
+		flatCollect: [ :aPackage | aPackage methods ]
+]
+
+{ #category : #search }
+SmTTestCoverageTestFinderStrategy >> searchRelativeTestForMethod: aCompiledMethod [
+	"Search for only one package and NOT relative others method"
+	| methods |
+	methods := self methodsInSimilarPackageAs: aCompiledMethod.
+	
+	wrappers := {(HDTestCoverage on: aCompiledMethod methodReference)} asOrderedCollection.
+	wrappers do: [ :each | each install ].
+	[
+	 
+		(self collectRelativeTestMethodOfMethods: methods)
+			do: [ :aTestMethod | self addImpactedTestFromWrapper: aTestMethod theTestMethod: wrappers ]
+			displayingProgress: [ :aClass | 'Processing ' , aClass asString ]
+			every: 1
+		
+	] ensure: [ wrappers do: [ :each | each uninstall ] ]
+]
+
+{ #category : #api }
+SmTTestCoverageTestFinderStrategy >> searchTestsForAStandardMethod: aCompiledMethod [
+	self searchRelativeTestForMethod: aCompiledMethod.
+	^ self searchTestsForMethod: aCompiledMethod
+]
+
+{ #category : #api }
+SmTTestCoverageTestFinderStrategy >> searchTestsForClass: aClass [
+	"Find all tests in related packages that reference the method's class"
+	| allSendersClass allTests |
+	allSendersClass := (aClass allCallsOn 
+							collect: [:aReference| 
+									 aReference actualClass]) asSet
+							select: [:aColectedClass| 
+									(aColectedClass isKindOf: TestCase class) ].
+	
+	allTests := OrderedCollection new.
+	allSendersClass do: [:aSenderClass|  allTests addAll: aSenderClass allTestMethods].
+	^ allTests.
+]
+
+{ #category : #jenkins }
+SmTTestCoverageTestFinderStrategy >> updateCacheAndUnmarkFrom: wrappers forMethod: aTestMethod [
+	| aToResetAfterMarkCollection |
+	aToResetAfterMarkCollection := wrappers select: [ :each | each hasRun ].
+	self addATest: aTestMethod toACollectionOfMethod: aToResetAfterMarkCollection.
+	aToResetAfterMarkCollection do: [ :each | each unmark ]
+]
diff --git a/src/SmartTest/SmTTestFinderDynamicStrategy.class.st b/src/SmartTest/SmTTestFinderDynamicStrategy.class.st
new file mode 100644
index 0000000..08341ca
--- /dev/null
+++ b/src/SmartTest/SmTTestFinderDynamicStrategy.class.st
@@ -0,0 +1,70 @@
+"
+Represent a dynamic strategy
+
+self todo: #AddDetails
+"
+Class {
+	#name : #SmTTestFinderDynamicStrategy,
+	#superclass : #SmTTestFinderStrategy,
+	#instVars : [
+		'currentTestExecution'
+	],
+	#category : 'SmartTest-Finder'
+}
+
+{ #category : #testing }
+SmTTestFinderDynamicStrategy class >> isConcreteFinder [
+	^ false
+]
+
+{ #category : #api }
+SmTTestFinderDynamicStrategy >> addATest: aTestCase toMethod: aCompiledMethod [
+	(self searchTestsForMethod: aCompiledMethod)
+		add: aTestCase methodReference
+]
+
+{ #category : #api }
+SmTTestFinderDynamicStrategy >> analyseAndRemoveProxyFor: aTestCase [
+	self subclassResponsibility
+]
+
+{ #category : #api }
+SmTTestFinderDynamicStrategy >> buildCacheFromTestSuite: aTestSuite [
+	self subclassResponsibility
+]
+
+{ #category : #accessing }
+SmTTestFinderDynamicStrategy >> currentTestExecution [
+	^ currentTestExecution
+]
+
+{ #category : #accessing }
+SmTTestFinderDynamicStrategy >> currentTestExecution: anObject [
+	currentTestExecution := anObject
+]
+
+{ #category : #api }
+SmTTestFinderDynamicStrategy >> installProxyFor: aTestCase [
+	self subclassResponsibility
+]
+
+{ #category : #api }
+SmTTestFinderDynamicStrategy >> methodsFor: aCompiledMethod [
+	| finalFoundMethod |
+	^ self cache
+		at: aCompiledMethod methodReference
+		ifAbsent: [  (self shouldTryToFindTestForDynamic )
+				ifFalse: [ ^ {} ].
+			#(#searchTestsForATestMethod: #searchTestsForASetUpMethod: #searchTestsForATearDownMethod: #searchTestsForAStandardMethod:)
+				do: [ :heuristic | 
+					| methods |
+					methods := [ self perform: heuristic with: aCompiledMethod ]
+						on: MessageNotUnderstood
+						do: [ #() ].
+					methods isEmpty
+						ifFalse: [ finalFoundMethod := self searchTestsForMethod: aCompiledMethod.
+							finalFoundMethod addAll: (self computeInheritedTestFromDiscoveredTest: methods) asOrderedCollection.
+							^ finalFoundMethod ] ].
+			self cache at: aCompiledMethod methodReference put: Set new.
+			^ {} ]
+]
diff --git a/src/SmartTest/SmTTestFinderStrategy.class.st b/src/SmartTest/SmTTestFinderStrategy.class.st
new file mode 100644
index 0000000..375a1a2
--- /dev/null
+++ b/src/SmartTest/SmTTestFinderStrategy.class.st
@@ -0,0 +1,239 @@
+"
+I represent an abstract strategy to find tests exercising some method
+"
+Class {
+	#name : #SmTTestFinderStrategy,
+	#superclass : #Object,
+	#instVars : [
+		'filter',
+		'cache',
+		'shouldTryToFindTestForDynamic'
+	],
+	#category : 'SmartTest-Finder'
+}
+
+{ #category : #protocol }
+SmTTestFinderStrategy class >> isConcreteFinder [
+	^ false
+]
+
+{ #category : #accessing }
+SmTTestFinderStrategy >> cache [
+	^ cache
+]
+
+{ #category : #accessing }
+SmTTestFinderStrategy >> cache: aSmTCache [
+	cache := aSmTCache 
+]
+
+{ #category : #accessing }
+SmTTestFinderStrategy >> computeInheritedTestFromDiscoveredTest: aCollectionOfRGDefinitionOfTest [
+	| testList |
+	testList := OrderedCollection new.
+	aCollectionOfRGDefinitionOfTest
+		do: [ :anRGDefinition | 
+			anRGDefinition methodClass isAbstract
+				ifTrue: [ testList addAll: (self subTestFromRGDefinition: anRGDefinition) ]
+				ifFalse: [ testList add: anRGDefinition ] ].
+	^ testList asSet 
+]
+
+{ #category : #accessing }
+SmTTestFinderStrategy >> filter [
+	^ filter
+]
+
+{ #category : #accessing }
+SmTTestFinderStrategy >> filter: aSmTFilter [
+	filter := aSmTFilter 
+]
+
+{ #category : #initialization }
+SmTTestFinderStrategy >> initialize [
+	self shouldTryToFindTestForDynamic: false
+]
+
+{ #category : #accessing }
+SmTTestFinderStrategy >> methodToTest: anObject [
+	cache methodToTest: anObject
+]
+
+{ #category : #api }
+SmTTestFinderStrategy >> methodsFor: aCompiledMethod [
+	^ self cache
+		at: aCompiledMethod methodReference
+		ifAbsent: [ (self searchTestsForATestMethod: aCompiledMethod)
+				ifNotEmpty: [ :methods | 
+					^ (self searchTestsForMethod: aCompiledMethod)
+						addAll: (self computeInheritedTestFromDiscoveredTest: methods);
+						yourself ].
+			(self searchTestsForASetUpMethod: aCompiledMethod)
+				ifNotEmpty: [ :methods | 
+					^ (self searchTestsForMethod: aCompiledMethod)
+						addAll: (self computeInheritedTestFromDiscoveredTest: methods);
+						yourself ].
+			(self searchTestsForATearDownMethod: aCompiledMethod)
+				ifNotEmpty: [ :methods | 
+					^ (self searchTestsForMethod: aCompiledMethod)
+						addAll: (self computeInheritedTestFromDiscoveredTest: methods);
+						yourself ].
+			(self searchTestsForAStandardMethod: aCompiledMethod)
+				ifNotEmpty: [ :methods | 
+					^ (self searchTestsForMethod: aCompiledMethod)
+						addAll: (self computeInheritedTestFromDiscoveredTest: methods);
+						yourself ].
+			self cache at: aCompiledMethod methodReference put: Set new.
+			^ {} ]
+]
+
+{ #category : #'private - search' }
+SmTTestFinderStrategy >> recursiveSearchForAClass: aClass inPackages: packagesToLookAt [
+	^ self recursiveSearchForAClass: aClass inPackages: packagesToLookAt alreadyVisited: Set new
+]
+
+{ #category : #'private - search' }
+SmTTestFinderStrategy >> recursiveSearchForAClass: aClass inPackages: packagesToLookAt alreadyVisited: alreadyVisitedClass [
+	| testsFound allCallsOnClass |
+	testsFound := Set new.
+	aClass isTestCase
+		ifTrue: [ (aClass methods select: [ :aMethod | aMethod isTestMethod ]) do: [ :eachTestMethod | testsFound addAll: (self methodsFor: eachTestMethod) ].
+			aClass allTestSelectors do: [ :each | testsFound add: (RGMethodDefinition className: aClass name selector: each isMetaSide: false) ] ].
+	testsFound
+		addAll:
+			((aClass allCallsOn select: [ :aCallOn | (filter shouldEntityBeFilteredOut: aCallOn inPackages: packagesToLookAt) not ])
+				flatCollect: [ :aRGMethodDefinition | self methodsFor: aRGMethodDefinition compiledMethod]).
+	aClass subclasses
+		reject: [ :aSubClass | 
+			| reject |
+			reject := (filter shouldEntityBeFilteredOut: aSubClass inPackages: packagesToLookAt) or: [ alreadyVisitedClass includes: aSubClass ].
+			alreadyVisitedClass add: aSubClass.
+			reject ]
+		thenDo: [ :aSubClass | 
+			testsFound add: aSubClass.
+			testsFound addAll: (self recursiveSearchForAClass: aSubClass inPackages: packagesToLookAt alreadyVisited: alreadyVisitedClass) ].
+	^ testsFound
+]
+
+{ #category : #accessing }
+SmTTestFinderStrategy >> searchTestsForAClass: aClass [
+	| packagesToLookAt |
+	packagesToLookAt := self filter extractPackagesFrom: aClass.
+	^ self recursiveSearchForAClass: aClass inPackages: packagesToLookAt
+]
+
+{ #category : #accessing }
+SmTTestFinderStrategy >> searchTestsForAInstVar: aInstVar [
+	"This method returns all the tests related to a instance variable."
+
+	| testsFound |
+	testsFound := Set new.
+	^ testsFound
+]
+
+{ #category : #accessing }
+SmTTestFinderStrategy >> searchTestsForAInstVar: aInstanceVariable OfClass: aClass [
+	"This method returns all the tests related to a instance variable."
+
+	| testsFound senders |
+	testsFound := Set new.
+	senders := Set new.
+	senders
+		addAll: ((aClass classLayout allVisibleSlots select: [ :eachSlot | eachSlot name = aInstanceVariable ]) flatCollect: #usingMethods).
+	testsFound
+		addAll: (senders flatCollect: [ :each | self methodsFor: each ]).
+	^ testsFound
+]
+
+{ #category : #private }
+SmTTestFinderStrategy >> searchTestsForASetUpMethod: aCompiledMethod [
+	"If the method is a TestCase setUp, returns all the tests of this TestCase and its subclasses"
+	^ (aCompiledMethod isTestSetUpMethod) 
+				ifTrue: [|result|
+					result := OrderedCollection new. 
+					result addAll: aCompiledMethod methodClass allTestMethods.
+					(aCompiledMethod methodClass subclasses do:[:aSubClass | result addAll: aSubClass allTestMethods]). 
+					result collect: #methodReference]
+				ifFalse: [{}].
+]
+
+{ #category : #private }
+SmTTestFinderStrategy >> searchTestsForAStandardMethod: aCompiledMethod [
+	"Should return a Collection of #methodReference"
+	
+	self subclassResponsibility 
+]
+
+{ #category : #private }
+SmTTestFinderStrategy >> searchTestsForATearDownMethod: aCompiledMethod [
+	"If the method is a TestCase tearDown, returns all the tests of this TestCase"
+	^ (aCompiledMethod isTestTearDownMethod) 
+				ifTrue: [
+					|result|
+					result := OrderedCollection new. 
+					result addAll: aCompiledMethod methodClass allTestMethods.
+					(aCompiledMethod methodClass subclasses do:[:aSubClass | result addAll: aSubClass allTestMethods]).
+					result collect: #methodReference]
+				ifFalse: [{}].
+]
+
+{ #category : #private }
+SmTTestFinderStrategy >> searchTestsForATestMethod: aCompiledMethod [
+	^ aCompiledMethod isTestMethod
+				ifTrue: [{aCompiledMethod methodReference}]
+				ifFalse: [{}].
+]
+
+{ #category : #accessing }
+SmTTestFinderStrategy >> searchTestsForATrait: aTrait [
+	| packagesToLookAt testsFound|
+	testsFound := Set new.
+	packagesToLookAt := self filter extractPackagesFrom: aTrait.
+	aTrait users do: [:eachClass | testsFound addAll: (self recursiveSearchForAClass: eachClass inPackages: packagesToLookAt)].
+	^testsFound 
+]
+
+{ #category : #private }
+SmTTestFinderStrategy >> searchTestsForClassReferenceOf: aCompiledMethod [
+	"Find all tests in related packages that reference the method's class"
+	| allSendersClass allTests |
+	allSendersClass := (aCompiledMethod methodClass allCallsOn 
+							collect: [:aReference| 
+									 aReference actualClass]) asSet
+							select: [:aClass| 
+									(aClass isKindOf: TestCase class) ].
+	
+	allTests := OrderedCollection new.
+	allSendersClass do: [:aClass|  allTests addAll: aClass allTestMethods].
+	^ allTests collect: #methodReference.
+]
+
+{ #category : #accessing }
+SmTTestFinderStrategy >> searchTestsForMethod: aCompiledMethod [
+	^ self cache relevantTestsFor: aCompiledMethod 
+		"at: aCompiledMethod methodReference
+		ifAbsentPut: [ Set new ]"
+]
+
+{ #category : #accessing }
+SmTTestFinderStrategy >> searchTestsForMethodReference: aMethodReference [
+	^ self cache searchTestsForMethodReference: aMethodReference 
+]
+
+{ #category : #accessing }
+SmTTestFinderStrategy >> shouldTryToFindTestForDynamic [
+	^ shouldTryToFindTestForDynamic
+]
+
+{ #category : #accessing }
+SmTTestFinderStrategy >> shouldTryToFindTestForDynamic: aBoolean [
+	shouldTryToFindTestForDynamic := aBoolean
+]
+
+{ #category : #accessing }
+SmTTestFinderStrategy >> subTestFromRGDefinition: anRGDefinition [
+	^ self
+		computeInheritedTestFromDiscoveredTest:
+			((anRGDefinition methodClass suite tests flatCollect: #tests)
+				collect: [ :each | RGMethodDefinition class: each class selector: each selector ])
+]
diff --git a/src/SmartTest/SmTTestGenerator.class.st b/src/SmartTest/SmTTestGenerator.class.st
new file mode 100644
index 0000000..5a74daf
--- /dev/null
+++ b/src/SmartTest/SmTTestGenerator.class.st
@@ -0,0 +1,102 @@
+"
+Tool easy to use by everyone to generate test from a Compiled Method
+"
+Class {
+	#name : #SmTTestGenerator,
+	#superclass : #Object,
+	#category : 'SmartTest-Tools'
+}
+
+{ #category : #'widget method' }
+SmTTestGenerator >> buildTestClassDefinitionFrom: aClass [
+
+	^ 'TestCase subclass: ', (self buildTestClassNameFrom: aClass) printString, '
+	instanceVariableNames: ''''
+	classVariableNames: ''''
+	poolDictionaries: ''''
+	package: ''',(self buildTestPackageNameFrom:aClass),''''
+]
+
+{ #category : #'widget method' }
+SmTTestGenerator >> buildTestClassNameFrom: aClass [
+	
+	^ (aClass name asString,'Test') asSymbol
+]
+
+{ #category : #'widget method' }
+SmTTestGenerator >> buildTestPackageNameFrom:aClass [
+
+	^ aClass package name asString, '-Tests' 
+]
+
+{ #category : #'widget method' }
+SmTTestGenerator >> buildTestSelectorFor: aMethod [
+
+	^ String streamContents: [:s || capitalize |
+		capitalize := true.
+		s << 'test'.
+		aMethod selector do: [:c |
+			c = $:
+				ifTrue: [ capitalize := true ]
+				ifFalse: [ capitalize
+							ifTrue: [ 
+								capitalize := false.
+								s << c asUppercase. ]
+							ifFalse:[ s << c ]]]]
+			
+]
+
+{ #category : #'widget method' }
+SmTTestGenerator >> createTestForClass: aClass [
+	| testClass className |
+	aClass ifNil: [ ^ nil ].
+	aClass isTestCase
+		ifTrue: [ ^ nil ].
+	aClass isMeta
+		ifTrue: [ ^ nil ].
+	className := self buildTestClassNameFrom: aClass.
+	testClass := self class environment
+		at: className
+		ifPresent: [ :class | class ]
+		ifAbsent: [ testClass := TestCase
+				subclass: className
+				instanceVariableNames: ''
+				classVariableNames: ''
+				package: (self buildTestPackageNameFrom: aClass).
+			self class environment at: className.
+			testClass comment: (self generateCommentForTestClass: testClass from: aClass) ].
+	^ testClass
+]
+
+{ #category : #'widget method' }
+SmTTestGenerator >> generateCommentForTestClass: testClass from: aClass [
+
+	^ String streamContents: [:stream || name |
+			name := testClass name. 
+			name first isVowel
+				ifTrue: [ stream << 'An ']
+				ifFalse:[ stream <<'A '].
+			stream << name << ' is a test class for testing the behavior of '<< aClass name ]
+]
+
+{ #category : #'widget method' }
+SmTTestGenerator >> generateSourceCodeForTestFrom: aMethod [
+	^ (self buildTestSelectorFor: aMethod), String crlf,'	self shouldBeImplemented'
+]
+
+{ #category : #'widget method' }
+SmTTestGenerator >> generateTestMethodFor: aMethod [
+	"generate a test method for aMethod and return the generated method"
+
+	| class testMethodName |
+	testMethodName := aMethod methodClass name , 'Test'.
+	class := Smalltalk allClasses
+		detect: [ :e | e name = testMethodName ]
+		ifNone: [ self createTestForClass: aMethod methodClass ].
+	class
+		ifNotNil: [ class
+				compile: (self generateSourceCodeForTestFrom: aMethod)
+				classified: 'tests-' , aMethod category.
+			^ class >> (self buildTestSelectorFor: aMethod) asSymbol ].
+	^ nil
+]
diff --git a/src/SmartTest/SmTTestListener.class.st b/src/SmartTest/SmTTestListener.class.st
new file mode 100644
index 0000000..36669a3
--- /dev/null
+++ b/src/SmartTest/SmTTestListener.class.st
@@ -0,0 +1,97 @@
+"
+I'm listening all the tests event and add it to the RTS
+"
+Class {
+	#name : #SmTTestListener,
+	#superclass : #Object,
+	#instVars : [
+		'cacheClass',
+		'smtDynamicFinder'
+	],
+	#classInstVars : [
+		'uniqueInstance',
+		'activated'
+	],
+	#category : 'SmartTest-Listener'
+}
+
+{ #category : #accessing }
+SmTTestListener class >> activated [
+	^ activated
+		ifNil: [ activated := false.
+			self uniqueInstance activated: false ]
+]
+
+{ #category : #accessing }
+SmTTestListener class >> activated: aSelector [
+	activated := aSelector.
+	self uniqueInstance activated: aSelector
+]
+
+{ #category : #initialization }
+SmTTestListener class >> settingsOn: aBuilder [
+	<systemsettings>
+	(aBuilder setting: #activated)
+		parent: #Beta;
+		target: self;
+		order: 0.04;
+		label: 'AutoUpdate Cache';
+		description:
+			'When you execute a test, we''''are updating the cache for it execution
+	(BETA)'
+]
+
+{ #category : #initialization }
+SmTTestListener class >> uniqueInstance [
+	^ uniqueInstance ifNil: [ uniqueInstance := self new ]
+]
+
+{ #category : #'announcement handling' }
+SmTTestListener >> activated: aSelector [
+	aSelector
+		ifTrue: [ self disableListenerTestCase.
+			self enableListenerTestCase ]
+		ifFalse: [ self disableListenerTestCase ]
+]
+
+{ #category : #'announcement handling' }
+SmTTestListener >> cacheStrategy [
+	^ cacheClass
+]
+
+{ #category : #'announcement handling' }
+SmTTestListener >> cacheStrategy: aCacheClass [
+	cacheClass := aCacheClass 
+]
+
+{ #category : #protocol }
+SmTTestListener >> disableListenerTestCase [
+	SmTAnnouncer announcer unsubscribe: self.
+		SmTAnnouncer announcer unsubscribe: self
+]
+
+{ #category : #protocol }
+SmTTestListener >> enableListenerTestCase [
+	SmTAnnouncer announcer weak when: TestCaseStarted send: #testCaseStarted: to: self.
+	SmTAnnouncer announcer weak when: TestCaseEnded send: #testCaseEnded: to: self
+]
+
+{ #category : #'announcement handling' }
+SmTTestListener >> smtDynamicFinder [
+	^ smtDynamicFinder
+]
+
+{ #category : #'announcement handling' }
+SmTTestListener >> smtDynamicFinder: aSmTTestFinderStrategy [
+	smtDynamicFinder := aSmTTestFinderStrategy
+]
+
+{ #category : #protocol }
+SmTTestListener >> testCaseEnded: aTestAnnouncement [
+	self smtDynamicFinder analyseAndRemoveProxyFor: aTestAnnouncement testCase
+]
+
+{ #category : #protocol }
+SmTTestListener >> testCaseStarted: aTestAnnouncement [
+	self smtDynamicFinder installProxyFor: aTestAnnouncement testCase 
+]
diff --git a/src/SmartTest/SmTTestingStrategy.class.st b/src/SmartTest/SmTTestingStrategy.class.st
new file mode 100644
index 0000000..b30c9f6
--- /dev/null
+++ b/src/SmartTest/SmTTestingStrategy.class.st
@@ -0,0 +1,64 @@
+"
+The testing strategy defines when the tests we've found will be run.
+"
+Class {
+	#name : #SmTTestingStrategy,
+	#superclass : #Object,
+	#instVars : [
+		'finder',
+		'runner'
+	],
+	#classInstVars : [
+		'queue',
+		'researchProcess',
+		'defaultSize'
+	],
+	#category : 'SmartTest-Testing'
+}
+
+{ #category : #protocol }
+SmTTestingStrategy >> disable [
+	"can be override"
+]
+
+{ #category : #protocol }
+SmTTestingStrategy >> enable [
+	"can be override"
+]
+
+{ #category : #'instance creation' }
+SmTTestingStrategy >> findTestsForMethod: aCompiledMethod [
+	self subclassResponsibility 
+]
+
+{ #category : #'instance creation' }
+SmTTestingStrategy >> finder [
+	^ finder
+	
+]
+
+{ #category : #'instance creation' }
+SmTTestingStrategy >> finder: aSmTFinder [
+	finder := aSmTFinder
+]
+
+{ #category : #'instance creation' }
+SmTTestingStrategy >> getMethodsFor: aCompiledMethod [
+	^ self getTestMethodFromCompiledTestMethod: (self finder methodsFor: aCompiledMethod)
+]
+
+{ #category : #'instance creation' }
+SmTTestingStrategy >> getTestMethodFromCompiledTestMethod: aCollectionOfCompiledMethod [
+	^ aCollectionOfCompiledMethod
+		collect: [ :aCompiledMethod | aCompiledMethod methodClass selector: aCompiledMethod selector ]
+]
+
+{ #category : #'instance creation' }
+SmTTestingStrategy >> runner [
+	^ runner
+]
+
+{ #category : #'instance creation' }
+SmTTestingStrategy >> runner: aSmTRunner [
+	runner := aSmTRunner
+]
diff --git a/src/SmartTest/SmTTestingStrategyAlways.class.st b/src/SmartTest/SmTTestingStrategyAlways.class.st
new file mode 100644
index 0000000..b7d0ba3
--- /dev/null
+++ b/src/SmartTest/SmTTestingStrategyAlways.class.st
@@ -0,0 +1,16 @@
+"
+As soon as the tests are found. CORA run the test suite
+"
+Class {
+	#name : #SmTTestingStrategyAlways,
+	#superclass : #SmTTestingStrategy,
+	#category : 'SmartTest-Testing'
+}
+
+{ #category : #'instance creation' }
+SmTTestingStrategyAlways >> findTestsForMethod: aCompiledMethod [
+	| tests |
+	tests := self getMethodsFor: aCompiledMethod.
+	self runner runCases: tests.
+	^ tests
+]
diff --git a/src/SmartTest/SmTTestingStrategyEachModification.class.st b/src/SmartTest/SmTTestingStrategyEachModification.class.st
new file mode 100644
index 0000000..faee9f7
--- /dev/null
+++ b/src/SmartTest/SmTTestingStrategyEachModification.class.st
@@ -0,0 +1,69 @@
+"
+Each time the developer does a modification, CORA run the test suite
+"
+Class {
+	#name : #SmTTestingStrategyEachModification,
+	#superclass : #SmTTestingStrategy,
+	#instVars : [
+		'bag'
+	],
+	#category : 'SmartTest-Testing'
+}
+
+{ #category : #'instance creation' }
+SmTTestingStrategyEachModification >> addToElementBag: anElement [
+	self bag add: anElement
+]
+
+{ #category : #'instance creation' }
+SmTTestingStrategyEachModification >> bag [
+	 ^ bag
+]
+
+{ #category : #protocol }
+SmTTestingStrategyEachModification >> disable [
+	super disable.
+	
+	SystemAnnouncer uniqueInstance unsubscribe: self
+]
+
+{ #category : #protocol }
+SmTTestingStrategyEachModification >> enable [
+	super enable.
+	SystemAnnouncer uniqueInstance unsubscribe: self.
+	{(MethodModified -> #methodModified:).
+	(MethodAdded -> #methodAdded:)}
+		do: [ :pair | SystemAnnouncer uniqueInstance weak when: pair key send: pair value to: self ]
+]
+
+{ #category : #'instance creation' }
+SmTTestingStrategyEachModification >> findTestsForMethod: aCompiledMethod [
+	| tests |
+	tests := self getMethodsFor: aCompiledMethod.
+	(self getElementFromBag: aCompiledMethod)
+		ifNotNil: [ self runner runCases: tests ].
+	^ tests
+]
+
+{ #category : #'instance creation' }
+SmTTestingStrategyEachModification >> getElementFromBag: anElement [
+	"return nil if element absent. The object else"
+
+	self bag remove: anElement ifAbsent: [ ^ nil ].
+	^ anElement
+]
+
+{ #category : #initialization }
+SmTTestingStrategyEachModification >> initialize [
+	bag := Bag new
+]
+
+{ #category : #'instance creation' }
+SmTTestingStrategyEachModification >> methodAdded: anAnnouncement [
+	self addToElementBag: anAnnouncement methodAdded
+]
+
+{ #category : #'instance creation' }
+SmTTestingStrategyEachModification >> methodModified: anAnnouncement [
+	self addToElementBag: anAnnouncement newMethod
+]
diff --git a/src/SmartTest/SmTTestingStrategyFiveMinutes.class.st b/src/SmartTest/SmTTestingStrategyFiveMinutes.class.st
new file mode 100644
index 0000000..41a3a28
--- /dev/null
+++ b/src/SmartTest/SmTTestingStrategyFiveMinutes.class.st
@@ -0,0 +1,28 @@
+"
+Every 5 minutes, CORA run the tests which have been found in the last 5 minutes
+"
+Class {
+	#name : #SmTTestingStrategyFiveMinutes,
+	#superclass : #SmTTestingStrategy,
+	#category : 'SmartTest-Testing'
+}
+
+{ #category : #protocol }
+SmTTestingStrategyFiveMinutes >> disable [
+	super disable.
+	SmTFivesMinutesCollector stop
+]
+
+{ #category : #protocol }
+SmTTestingStrategyFiveMinutes >> enable [
+	super enable.
+	SmTFivesMinutesCollector start
+]
+
+{ #category : #'instance creation' }
+SmTTestingStrategyFiveMinutes >> findTestsForMethod: aCompiledMethod [
+	| tests |
+	tests := self getMethodsFor: aCompiledMethod.
+	SmTFivesMinutesCollector addTestMethods: tests.
+	^ tests
+]
diff --git a/src/SmartTest/SmTTestingStrategyNever.class.st b/src/SmartTest/SmTTestingStrategyNever.class.st
new file mode 100644
index 0000000..23689b9
--- /dev/null
+++ b/src/SmartTest/SmTTestingStrategyNever.class.st
@@ -0,0 +1,13 @@
+"
+CORA never run test automatically
+"
+Class {
+	#name : #SmTTestingStrategyNever,
+	#superclass : #SmTTestingStrategy,
+	#category : 'SmartTest-Testing'
+}
+
+{ #category : #'instance creation' }
+SmTTestingStrategyNever >> findTestsForMethod: aCompiledMethod [
+	^ self getMethodsFor: aCompiledMethod
+]
diff --git a/src/SmartTest/SmalltalkImage.extension.st b/src/SmartTest/SmalltalkImage.extension.st
new file mode 100644
index 0000000..5a8d123
--- /dev/null
+++ b/src/SmartTest/SmalltalkImage.extension.st
@@ -0,0 +1,13 @@
+Extension { #name : #SmalltalkImage }
+
+{ #category : #'*SmartTest' }
+SmalltalkImage >> allMethods [
+
+	^ globals allClasses flatCollect: #methods 
+]
+
+{ #category : #'*SmartTest' }
+SmalltalkImage >> allTestMethods [
+
+	^(globals allClasses flatCollect: #methods) select: #isTestMethod 
+]
diff --git a/src/SmartTest/SmartFinder.class.st b/src/SmartTest/SmartFinder.class.st
new file mode 100644
index 0000000..89b08a5
--- /dev/null
+++ b/src/SmartTest/SmartFinder.class.st
@@ -0,0 +1,186 @@
+"
+I'm the boss !!!
+
+I contain the instance of all the stuff the user needs.
+
+If you want to specify some strategy
+use it more or less that way (here with the default values)
+
+SmartFinder new
+		cache: self cacheStrategy new;
+		filter: self filter new;
+		testRunner: self testRunner;
+		smtFinder: self smtFinder new;
+		testingStrategy: self testingStrategy new
+"
+Class {
+	#name : #SmartFinder,
+	#superclass : #Object,
+	#instVars : [
+		'filter',
+		'testRunner',
+		'testingStrategy',
+		'smtFinder',
+		'cacheStrategy',
+		'shouldTryToFindTestForDynamic',
+		'autoUpdateCache',
+		'smtListener'
+	],
+	#category : 'SmartTest-Core'
+}
+
+{ #category : #accessing }
+SmartFinder >> autoUpdateCache: aBoolean [
+	self smtListener cacheStrategy: self cacheStrategy.
+	self smtListener smtDynamicFinder: self smtFinder.
+	self smtListener class activated: aBoolean
+]
+
+{ #category : #api }
+SmartFinder >> buildCacheFromTestSuite: aTestSuite [
+	"Work only if you have selected a Dynamic strategy"
+	self smtFinder buildCacheFromTestSuite: aTestSuite 
+]
+
+{ #category : #accessing }
+SmartFinder >> cacheStrategy [
+	^ cacheStrategy ifNil: [ cacheStrategy := SmTBasicCacheStrategy new cache: Dictionary new ]
+]
+
+{ #category : #accessing }
+SmartFinder >> cacheStrategy: aSmTCacheStrategy [
+	| tmpCache |
+	tmpCache := self currentCache.
+	cacheStrategy := aSmTCacheStrategy.
+	cacheStrategy cache: tmpCache.
+	self smtFinder cache: cacheStrategy
+]
+
+{ #category : #api }
+SmartFinder >> clean [
+	"Use before loosing my reference
+	I remove the listener"
+	self testingStrategy disable
+]
+
+{ #category : #api }
+SmartFinder >> currentCache [
+	^ self cacheStrategy currentCache 
+]
+
+{ #category : #accessing }
+SmartFinder >> filter [
+	^ filter ifNil: [ filter := SmTDefaultPackagesFilter new ]
+]
+
+{ #category : #accessing }
+SmartFinder >> filter: aSmTDefaultPackagesFilter [
+	filter := aSmTDefaultPackagesFilter.
+		self smtFinder filter: aSmTDefaultPackagesFilter
+]
+
+{ #category : #api }
+SmartFinder >> findTestsForMethod: aCompiledMethod [
+	"This is the api for QA (use the testing strategy, the rule strategy etc.)
+	If you only want to find the tests, please consider using #researchTestsForMethod:"
+
+	^ self testingStrategy findTestsForMethod: aCompiledMethod
+]
+
+{ #category : #initialization }
+SmartFinder >> initialize [
+	 self shouldTryToFindTestForDynamic: false
+]
+
+{ #category : #api }
+SmartFinder >> researchTestsForMethod: aCompiledMethod [ 
+	"If you only want to find the tests"
+	^ self smtFinder methodsFor: aCompiledMethod.
+]
+
+{ #category : #api }
+SmartFinder >> resetCache [
+	self cacheStrategy resetCache 
+]
+
+{ #category : #api }
+SmartFinder >> searchTestsForASetUpMethod: aCompiledMethod [ 
+	^ self smtFinder searchTestsForASetUpMethod: aCompiledMethod.
+]
+
+{ #category : #api }
+SmartFinder >> searchTestsForATearDownMethod: aCompiledMethod [ 
+	^ self smtFinder searchTestsForATearDownMethod: aCompiledMethod
+]
+
+{ #category : #api }
+SmartFinder >> searchTestsForATestMethod: aCompiledMethod [ 
+	^ self smtFinder searchTestsForATestMethod: aCompiledMethod
+]
+
+{ #category : #api }
+SmartFinder >> setCacheValues: aDictionnary [
+	self cacheStrategy cache: aDictionnary.
+]
+
+{ #category : #accessing }
+SmartFinder >> shouldTryToFindTestForDynamic [
+	^ shouldTryToFindTestForDynamic
+]
+
+{ #category : #accessing }
+SmartFinder >> shouldTryToFindTestForDynamic: aBoolean [
+	shouldTryToFindTestForDynamic := aBoolean.
+	self smtFinder shouldTryToFindTestForDynamic: aBoolean
+]
+
+{ #category : #accessing }
+SmartFinder >> smtFinder [
+	^ smtFinder
+		ifNil: [ smtFinder := SmTSenderTestFinderStrategy new
+				filter: self filter;
+				cache: self cacheStrategy;
+				shouldTryToFindTestForDynamic: self shouldTryToFindTestForDynamic;
+				yourself  ]
+]
+
+{ #category : #accessing }
+SmartFinder >> smtFinder: aSmTTestFinderStrategy [
+	smtFinder := aSmTTestFinderStrategy.
+	smtFinder
+		filter: self filter;
+		cache: self cacheStrategy;
+		shouldTryToFindTestForDynamic: self shouldTryToFindTestForDynamic.
+	self testingStrategy finder: aSmTTestFinderStrategy
+]
+
+{ #category : #accessing }
+SmartFinder >> smtListener [
+	^ SmTTestListener uniqueInstance 
+]
+
+{ #category : #accessing }
+SmartFinder >> testRunner [
+	^ testRunner ifNil: [ testRunner := SmTRunnerStrategySmart ]
+]
+
+{ #category : #accessing }
+SmartFinder >> testRunner: aSmTRunnerStrategy [
+	testRunner := aSmTRunnerStrategy.
+	self testingStrategy runner: aSmTRunnerStrategy
+]
+
+{ #category : #accessing }
+SmartFinder >> testingStrategy [
+	^ testingStrategy ifNil: [ testingStrategy :=  SmTTestingStrategyEachModification new runner: self testRunner; finder: self smtFinder ]
+]
+
+{ #category : #accessing }
+SmartFinder >> testingStrategy: aSmTTestingStrategy [
+	testingStrategy disable.
+	testingStrategy := aSmTTestingStrategy.
+	testingStrategy
+		runner: self testRunner;
+		finder: self smtFinder.
+	testingStrategy enable.
+]
diff --git a/src/SmartTest/TestAsserter.extension.st b/src/SmartTest/TestAsserter.extension.st
new file mode 100644
index 0000000..6d5b614
--- /dev/null
+++ b/src/SmartTest/TestAsserter.extension.st
@@ -0,0 +1,6 @@
+Extension { #name : #TestAsserter }
+
+{ #category : #'*SmartTest' }
+TestAsserter >> isTestSuite [
+	^ false
+]
diff --git a/src/SmartTest/TestCase.extension.st b/src/SmartTest/TestCase.extension.st
new file mode 100644
index 0000000..7574eca
--- /dev/null
+++ b/src/SmartTest/TestCase.extension.st
@@ -0,0 +1,40 @@
+Extension { #name : #TestCase }
+
+{ #category : #'*SmartTest' }
+TestCase class >> allTestMethods [
+	^ self  methods select: [:aCompiledMethod| 
+							   aCompiledMethod isTestMethod].
+]
+
+{ #category : #'*SmartTest' }
+TestCase >> announce: anAnnouncementClass withResult: result [
+	| event |
+	self shouldAnnounce
+		ifFalse: [ ^ self ].
+		
+	event := anAnnouncementClass asAnnouncement.
+	event testCase: self.
+	event testSelector: testSelector.
+	event testResult: result.
+	self generalAnnouncer announce: event
+]
+
+{ #category : #'*SmartTest' }
+TestCase >> generalAnnouncer [
+	^ self class generalAnnouncer
+]
+
+{ #category : #'*SmartTest' }
+TestCase class >> generalAnnouncer [
+	^ SmTAnnouncer announcer
+]
+
+{ #category : #'*SmartTest' }
+TestCase >> methodReference [
+	^ RGMethodDefinition class: self class selector: self selector
+]
+
+{ #category : #'*SmartTest' }
+TestCase class >> shouldAnnounce [
+	^ SmTAnnouncer shouldAnnounce 
+]
diff --git a/src/SmartTest/TestSuite.extension.st b/src/SmartTest/TestSuite.extension.st
new file mode 100644
index 0000000..cfb8ed8
--- /dev/null
+++ b/src/SmartTest/TestSuite.extension.st
@@ -0,0 +1,17 @@
+Extension { #name : #TestSuite }
+
+{ #category : #'*SmartTest' }
+TestSuite >> flatCollectTests [
+	^ tests
+		ifNil: [ ^ {} ]
+		ifNotNil: [ tests
+				flatCollect: [ :t | 
+					t isTestSuite
+						ifTrue: [ t flatCollectTests ]
+						ifFalse: [ {t} ] ] ]
+]
+
+{ #category : #'*SmartTest' }
+TestSuite >> isTestSuite [
+	^ true
+]
diff --git a/src/SmartTest/package.st b/src/SmartTest/package.st
new file mode 100644
index 0000000..b654fb5
--- /dev/null
+++ b/src/SmartTest/package.st
@@ -0,0 +1 @@
+Package { #name : #SmartTest }
diff --git a/src/SmartTestDataOutsideP1/SmTClassModificationOnClassInsidePackageTestOutsideWithRefTest.class.st b/src/SmartTestDataOutsideP1/SmTClassModificationOnClassInsidePackageTestOutsideWithRefTest.class.st
new file mode 100644
index 0000000..c842584
--- /dev/null
+++ b/src/SmartTestDataOutsideP1/SmTClassModificationOnClassInsidePackageTestOutsideWithRefTest.class.st
@@ -0,0 +1,20 @@
+"
+Data for SmartTest tests on the testForClass:.
+
+Methods of this class have long name in order to be unique and explicit.
+Being unique, the senders of each method are mastered and consequently the tests are independent the one from the others.
+
+We will use this that to assert that SmartTest behaves correctly when dealing with inherited methods ans class.
+
+This class has a test that references the class SmTClassModificationOnClassInsidePackageWithRef 
+"
+Class {
+	#name : #SmTClassModificationOnClassInsidePackageTestOutsideWithRefTest,
+	#superclass : #TestCase,
+	#category : 'SmartTestDataOutsideP1-ModificationOnClass-Tests'
+}
+
+{ #category : #tests }
+SmTClassModificationOnClassInsidePackageTestOutsideWithRefTest >> testRefToSmTClassModificationOnClassInsidePackageWithRef [
+SmTClassModificationOnClassInsidePackageWithRef new.
+]
diff --git a/src/SmartTestDataOutsideP1/SmTClassModificationOnClassInsidePackageWithRef.class.st b/src/SmartTestDataOutsideP1/SmTClassModificationOnClassInsidePackageWithRef.class.st
new file mode 100644
index 0000000..cada301
--- /dev/null
+++ b/src/SmartTestDataOutsideP1/SmTClassModificationOnClassInsidePackageWithRef.class.st
@@ -0,0 +1,15 @@
+"
+Data for SmartTest tests on the testForClass:.
+
+Methods of this class have long name in order to be unique and explicit.
+Being unique, the senders of each method are mastered and consequently the tests are independent the one from the others.
+
+We will use this that to assert that SmartTest behaves correctly when dealing with inherited methods ans class.
+
+This class is referenced inside it package in the test  SmTClassModificationOnClassInsidePackageTestOutsideWithRefTest >> testRefToSmTClassModificationOnClassInsidePackageWithRef
+"
+Class {
+	#name : #SmTClassModificationOnClassInsidePackageWithRef,
+	#superclass : #Object,
+	#category : 'SmartTestDataOutsideP1-ModificationOnClass'
+}
diff --git a/src/SmartTestDataOutsideP1/SmTClassModificationOnClassOutsidePackageWithRef.class.st b/src/SmartTestDataOutsideP1/SmTClassModificationOnClassOutsidePackageWithRef.class.st
new file mode 100644
index 0000000..7ecf607
--- /dev/null
+++ b/src/SmartTestDataOutsideP1/SmTClassModificationOnClassOutsidePackageWithRef.class.st
@@ -0,0 +1,15 @@
+"
+Data for SmartTest tests on the testForClass:.
+
+Methods of this class have long name in order to be unique and explicit.
+Being unique, the senders of each method are mastered and consequently the tests are independent the one from the others.
+
+We will use this that to assert that SmartTest behaves correctly when dealing with inherited methods ans class.
+
+This class is referenced outside its package (in SmartTestDataOutsideP2) in the test  RefToSmTClassModificationOnClassOutsidePackageWithRef >> testRefToSmTClassModificationOnClassOutsidePackageWithRef
+"
+Class {
+	#name : #SmTClassModificationOnClassOutsidePackageWithRef,
+	#superclass : #Object,
+	#category : 'SmartTestDataOutsideP1-ModificationOnClass'
+}
diff --git a/src/SmartTestDataOutsideP1/SmTClassModificationOnClassSimpleTestCase.class.st b/src/SmartTestDataOutsideP1/SmTClassModificationOnClassSimpleTestCase.class.st
new file mode 100644
index 0000000..1b1f3bc
--- /dev/null
+++ b/src/SmartTestDataOutsideP1/SmTClassModificationOnClassSimpleTestCase.class.st
@@ -0,0 +1,20 @@
+"
+Data for SmartTest tests on the testForClass:.
+
+Methods of this class have long name in order to be unique and explicit.
+Being unique, the senders of each method are mastered and consequently the tests are independent the one from the others.
+
+We will use this that to assert that SmartTest behaves correctly when dealing with inherited methods ans class.
+
+This class is a subclass of TestCase and contains a test.
+"
+Class {
+	#name : #SmTClassModificationOnClassSimpleTestCase,
+	#superclass : #TestCase,
+	#category : 'SmartTestDataOutsideP1-ModificationOnClass-Tests'
+}
+
+{ #category : #tests }
+SmTClassModificationOnClassSimpleTestCase >> testModificationOnClassSimpleTestCase [
+"The behaviour of this method is irrelevant."
+]
diff --git a/src/SmartTestDataOutsideP1/SmTClassP1.class.st b/src/SmartTestDataOutsideP1/SmTClassP1.class.st
new file mode 100644
index 0000000..5881c3e
--- /dev/null
+++ b/src/SmartTestDataOutsideP1/SmTClassP1.class.st
@@ -0,0 +1,74 @@
+"
+Data for SmartTest tests on the filters (default, defaultClass, restricted package).
+
+Methods of this class have long name in order to be unique and explicit.
+Being unique, the senders of each method are mastered and consequently the tests are independent the one from the others.
+
+In the tests, it is always the methods whose name contains 'method1' that are modified. If the name contains first level, the methods are directly called by a test. If the name contains SecondLevel, they are called by an another method (whose name contains 'method2').
+
+This class is not referenced anywhere (we used concatenation to be sure).
+
+"
+Class {
+	#name : #SmTClassP1,
+	#superclass : #Object,
+	#category : 'SmartTestDataOutsideP1-ModificationOnMethod-WithoutRef'
+}
+
+{ #category : #method1 }
+SmTClassP1 >> method1FirstLevelSendersInsidePackage [
+	"Data for tests: method directly called by a test method from the same package"
+	
+" the behaviour of this method is not relevant."
+]
+
+{ #category : #method1 }
+SmTClassP1 >> method1FirstLevelSendersOutsidePackage [
+	"Data for tests: method directly called by a test method but not from the same package"
+	
+" the behaviour of this method is not relevant."
+]
+
+{ #category : #method1 }
+SmTClassP1 >> method1SecondLevelSendersInsidePackageWithTestInside [
+		"Data for tests: method called by another method , which itself is called by a test from the same package"
+	
+" the behaviour of this method is not relevant."
+]
+
+{ #category : #method1 }
+SmTClassP1 >> method1SecondLevelSendersInsidePackageWithTestOutside [
+			"Data for tests: method called by another method from the same package, which itself is called by a test not from the same package"
+	
+" the behaviour of this method is not relevant."
+]
+
+{ #category : #method1 }
+SmTClassP1 >> method1SecondLevelSendersOutsidePackageWithTestInside [
+	"Data for tests: method called by another method not from the same package, which itself is called by a test from the same package"
+	
+" the behaviour of this method is not relevant."
+]
+
+{ #category : #method1 }
+SmTClassP1 >> method1SecondLevelSendersOutsidePackageWithTestOutside [
+	"Data for tests: method called by another method not from the same package, which itself is called by a test not from the same package"
+	
+" the behaviour of this method is not relevant."
+]
+
+{ #category : #method2 }
+SmTClassP1 >> method2SecondLevelSendersInsidePackageWithTestInside [
+	"Data for tests: this method calls a method from the same package, 
+	this method is called by a test from the same package"
+	"In order to be sure that this method does not reference any class, we don't use directly the class but go through their name with a concatenation and then transform them into class"
+^ ('SmTClass','P1') asClass new method1SecondLevelSendersInsidePackageWithTestInside.
+]
+
+{ #category : #method2 }
+SmTClassP1 >> method2SecondLevelSendersInsidePackageWithTestOutside [	
+	"Data for tests: this method calls a method from the same package, 
+	this method is called by a test not from the same package"
+	"In order to be sure that this method does not reference any class, we don't use directly the class but go through their name with a concatenation and then transform them into class"
+^('SmTClass','P1') asClass  new method1SecondLevelSendersInsidePackageWithTestOutside.
+]
diff --git a/src/SmartTestDataOutsideP1/SmTClassP1FirstLevelSendersInsideWithRefInMethod.class.st b/src/SmartTestDataOutsideP1/SmTClassP1FirstLevelSendersInsideWithRefInMethod.class.st
new file mode 100644
index 0000000..4080b39
--- /dev/null
+++ b/src/SmartTestDataOutsideP1/SmTClassP1FirstLevelSendersInsideWithRefInMethod.class.st
@@ -0,0 +1,23 @@
+"
+Data for SmartTest tests on the filters.
+
+Methods of this class have long name in order to be unique and explicit.
+Being unique, the senders of each method are mastered and consequently the tests are independent the one from the others.
+
+In the tests, it is always the methods whose name contains 'method1' that are modified. If the name contains first level, the methods are directly called by a test. If the name contains SecondLevel, they are called by an another method (whose name contains 'method2').
+
+This class is referenced by SmTP1ClassTestFirstLevelSendersInsideWithRefInMethod >> testMethod1FirstLevelSendersInsideWithRefInMethod .
+
+"
+Class {
+	#name : #SmTClassP1FirstLevelSendersInsideWithRefInMethod,
+	#superclass : #Object,
+	#category : 'SmartTestDataOutsideP1-ModificationOnMethod-FirstLevelWithRef'
+}
+
+{ #category : #method1 }
+SmTClassP1FirstLevelSendersInsideWithRefInMethod >> method1FirstLevelSendersInsideWithRefInMethod [
+"Data for tests: method directly called by a test method not from the same package"
+	
+" the behaviour of this method is not relevant."
+]
diff --git a/src/SmartTestDataOutsideP1/SmTClassP1FirstLevelSendersOutsideWithRefInClass.class.st b/src/SmartTestDataOutsideP1/SmTClassP1FirstLevelSendersOutsideWithRefInClass.class.st
new file mode 100644
index 0000000..a091a7f
--- /dev/null
+++ b/src/SmartTestDataOutsideP1/SmTClassP1FirstLevelSendersOutsideWithRefInClass.class.st
@@ -0,0 +1,23 @@
+"
+Data for SmartTest tests on the filters.
+
+Methods of this class have long name in order to be unique and explicit.
+Being unique, the senders of each method are mastered and consequently the tests are independent the one from the others.
+
+In the tests, it is always the methods whose name contains 'method1' that are modified. If the name contains first level, the methods are directly called by a test. If the name contains SecondLevel, they are called by an another method (whose name contains 'method2').
+
+This class is referenced by SmTClassTestP2FirstLevelSendersOutsideWithRef >> refInClass .
+
+"
+Class {
+	#name : #SmTClassP1FirstLevelSendersOutsideWithRefInClass,
+	#superclass : #Object,
+	#category : 'SmartTestDataOutsideP1-ModificationOnMethod-FirstLevelWithRef'
+}
+
+{ #category : #method1 }
+SmTClassP1FirstLevelSendersOutsideWithRefInClass >> method1FirstLevelSendersWithRefInClass [
+"Data for tests: method directly called by a test method not from the same package"
+	
+" the behaviour of this method is not relevant."
+]
diff --git a/src/SmartTestDataOutsideP1/SmTClassP1FirstLevelSendersOutsideWithRefInMethod.class.st b/src/SmartTestDataOutsideP1/SmTClassP1FirstLevelSendersOutsideWithRefInMethod.class.st
new file mode 100644
index 0000000..13b7b0e
--- /dev/null
+++ b/src/SmartTestDataOutsideP1/SmTClassP1FirstLevelSendersOutsideWithRefInMethod.class.st
@@ -0,0 +1,22 @@
+"
+Data for SmartTest tests on the filters.
+
+Methods of this class have long name in order to be unique and explicit.
+Being unique, the senders of each method are mastered and consequently the tests are independent the one from the others.
+
+In the tests, it is always the methods whose name contains 'method1' that are modified. If the name contains first level, the methods are directly called by a test. If the name contains SecondLevel, they are called by an another method (whose name contains 'method2').
+
+This class is referenced by SmartTestDataOutside: SmTClassTestP2 >> testMethod1FirstLevelSendersOutsideWithRefInMethod .
+"
+Class {
+	#name : #SmTClassP1FirstLevelSendersOutsideWithRefInMethod,
+	#superclass : #Object,
+	#category : 'SmartTestDataOutsideP1-ModificationOnMethod-FirstLevelWithRef'
+}
+
+{ #category : #method1 }
+SmTClassP1FirstLevelSendersOutsideWithRefInMethod >> method1FirstLevelSendersWithRefInMethod [
+"Data for tests: method directly called by a test method not from the same package"
+	
+" the behaviour of this method is not relevant."
+]
diff --git a/src/SmartTestDataOutsideP1/SmTClassP1FirstLevelSendersOutsideWithRefInPackage.class.st b/src/SmartTestDataOutsideP1/SmTClassP1FirstLevelSendersOutsideWithRefInPackage.class.st
new file mode 100644
index 0000000..2e4a3b4
--- /dev/null
+++ b/src/SmartTestDataOutsideP1/SmTClassP1FirstLevelSendersOutsideWithRefInPackage.class.st
@@ -0,0 +1,22 @@
+"
+Data for SmartTest tests on the filters.
+
+Methods of this class have long name in order to be unique and explicit.
+Being unique, the senders of each method are mastered and consequently the tests are independent the one from the others.
+
+In the tests, it is always the methods whose name contains 'method1' that are modified. If the name contains first level, the methods are directly called by a test. If the name contains SecondLevel, they are called by an another method (whose name contains 'method2').
+
+This class is referenced by SmartTestDataOutsideP2:  SmTClassP2ReferencesInPackage >> referenceToSmTClassP1FirstLevelSendersOutsideWithRefInPackage .
+"
+Class {
+	#name : #SmTClassP1FirstLevelSendersOutsideWithRefInPackage,
+	#superclass : #Object,
+	#category : 'SmartTestDataOutsideP1-ModificationOnMethod-FirstLevelWithRef'
+}
+
+{ #category : #method1 }
+SmTClassP1FirstLevelSendersOutsideWithRefInPackage >> method1FirstLevelSendersWithRefInPackage [
+"Data for tests: method directly called by a test method not from the same package"
+	
+" the behaviour of this method is not relevant."
+]
diff --git a/src/SmartTestDataOutsideP1/SmTClassP1ModificationOnVariable.class.st b/src/SmartTestDataOutsideP1/SmTClassP1ModificationOnVariable.class.st
new file mode 100644
index 0000000..a2d7abb
--- /dev/null
+++ b/src/SmartTestDataOutsideP1/SmTClassP1ModificationOnVariable.class.st
@@ -0,0 +1,39 @@
+"
+Data for SmartTest tests on the testForAnInstanceVariable:.
+
+Methods of this class have long name in order to be unique and explicit.
+Being unique, the senders of each method are mastered and consequently the tests are independent the one from the others.
+
+We will use this that to assert that SmartTest behaves correctly when dealing with modifications on instance variables.
+
+It contains different instance variables that are used in tests. Each variable has only one test that calls them.
+"
+Class {
+	#name : #SmTClassP1ModificationOnVariable,
+	#superclass : #Object,
+	#instVars : [
+		'instVarModificationOnVariableInsidePackage',
+		'instVarModificationOnVariableOutsidePackage'
+	],
+	#category : 'SmartTestDataOutsideP1-ModificationOnVariable'
+}
+
+{ #category : #accessing }
+SmTClassP1ModificationOnVariable >> instVarModificationOnVariableInsidePackage [
+	^ instVarModificationOnVariableInsidePackage
+]
+
+{ #category : #accessing }
+SmTClassP1ModificationOnVariable >> instVarModificationOnVariableInsidePackage: anObject [
+	instVarModificationOnVariableInsidePackage := anObject
+]
+
+{ #category : #accessing }
+SmTClassP1ModificationOnVariable >> instVarModificationOnVariableOutsidePackage [
+	^ instVarModificationOnVariableOutsidePackage
+]
+
+{ #category : #accessing }
+SmTClassP1ModificationOnVariable >> instVarModificationOnVariableOutsidePackage: anObject [
+	instVarModificationOnVariableOutsidePackage := anObject
+]
diff --git a/src/SmartTestDataOutsideP1/SmTClassP1ModificationOnVariableInsideClassTest.class.st b/src/SmartTestDataOutsideP1/SmTClassP1ModificationOnVariableInsideClassTest.class.st
new file mode 100644
index 0000000..8a72213
--- /dev/null
+++ b/src/SmartTestDataOutsideP1/SmTClassP1ModificationOnVariableInsideClassTest.class.st
@@ -0,0 +1,35 @@
+"
+Data for SmartTest tests on the testForAnInstanceVariable:.
+
+Methods of this class have long name in order to be unique and explicit.
+Being unique, the senders of each method are mastered and consequently the tests are independent the one from the others.
+
+We will use this that to assert that SmartTest behaves correctly when dealing with modifications on instance variables.
+
+This class has an instance variable used inside the class in a test.
+"
+Class {
+	#name : #SmTClassP1ModificationOnVariableInsideClassTest,
+	#superclass : #TestCase,
+	#instVars : [
+		'instVarModificationOnVariableInsideClass'
+	],
+	#category : 'SmartTestDataOutsideP1-ModificationOnVariable-Tests'
+}
+
+{ #category : #accessing }
+SmTClassP1ModificationOnVariableInsideClassTest >> instVarModificationOnVariableInsideClass [
+	^ instVarModificationOnVariableInsideClass
+]
+
+{ #category : #accessing }
+SmTClassP1ModificationOnVariableInsideClassTest >> instVarModificationOnVariableInsideClass: anObject [
+	instVarModificationOnVariableInsideClass := anObject
+]
+
+{ #category : #tests }
+SmTClassP1ModificationOnVariableInsideClassTest >> testModificationOnVariableInsideClass [
+|anObject|
+anObject := ('SmTClassP1ModificationOn','VariableInsideClassTest') asClass new.
+anObject instVarModificationOnVariableInsideClass
+]
diff --git a/src/SmartTestDataOutsideP1/SmTClassP1ModificationOnVariableInsidePackageTest.class.st b/src/SmartTestDataOutsideP1/SmTClassP1ModificationOnVariableInsidePackageTest.class.st
new file mode 100644
index 0000000..9bc81e5
--- /dev/null
+++ b/src/SmartTestDataOutsideP1/SmTClassP1ModificationOnVariableInsidePackageTest.class.st
@@ -0,0 +1,23 @@
+"
+Data for SmartTest tests on the testForAnInstanceVariable:.
+
+Methods of this class have long name in order to be unique and explicit.
+Being unique, the senders of each method are mastered and consequently the tests are independent the one from the others.
+
+We will use this that to assert that SmartTest behaves correctly when dealing with modifications on instance variables.
+"
+Class {
+	#name : #SmTClassP1ModificationOnVariableInsidePackageTest,
+	#superclass : #TestCase,
+	#instVars : [
+		'instVarModificationOnVariable'
+	],
+	#category : 'SmartTestDataOutsideP1-ModificationOnVariable-Tests'
+}
+
+{ #category : #tests }
+SmTClassP1ModificationOnVariableInsidePackageTest >> testModificationOnVariableInsidePackage [
+|anObject|
+anObject := ('SmTClassP1','ModificationOnVariable')asClass new.
+anObject instVarModificationOnVariableInsidePackage 
+]
diff --git a/src/SmartTestDataOutsideP1/SmTClassP1SecondLevelSendersInsideTestOutsideWithRefInClass.class.st b/src/SmartTestDataOutsideP1/SmTClassP1SecondLevelSendersInsideTestOutsideWithRefInClass.class.st
new file mode 100644
index 0000000..a192f3a
--- /dev/null
+++ b/src/SmartTestDataOutsideP1/SmTClassP1SecondLevelSendersInsideTestOutsideWithRefInClass.class.st
@@ -0,0 +1,31 @@
+"
+Data for SmartTest tests on the DefaultClassPackage filter.
+
+Methods of this class have long name in order to be unique and explicit.
+Being unique, the senders of each method are mastered and consequently the tests are independent the one from the others.
+
+In the tests, it is always the methods whose name contains 'method1' that are modified. If the name contains first level, the methods are directly called by a test. If the name contains SecondLevel, they are called by an another method (whose name contains 'method2').
+
+In this class, there is the modified method and its first level sender (which contains 'method2' in it's name). In another package, there is the second level sender of the modified method (which contains 'testmethod2' in it's name).
+
+This class is referenced in the package SmartTestDataOutsideP2inside the same class as testMethod2 (but not in the same method).
+"
+Class {
+	#name : #SmTClassP1SecondLevelSendersInsideTestOutsideWithRefInClass,
+	#superclass : #Object,
+	#category : 'SmartTestDataOutsideP1-ModificationOnMethod-SenderInTestOutWithRef'
+}
+
+{ #category : #method1 }
+SmTClassP1SecondLevelSendersInsideTestOutsideWithRefInClass >> method1SecondLevelSendersInsideTestOutsideWithRefInClass [
+"Data for tests: method directly called by a test method not from the same package"
+	
+" the behaviour of this method is not relevant."
+]
+
+{ #category : #method2 }
+SmTClassP1SecondLevelSendersInsideTestOutsideWithRefInClass >> method2SecondLevelSendersInsideTestOutsideWithRefInClass [
+"Data for tests: method directly called by a test method not from the same package"
+	^ self method1SecondLevelSendersInsideTestOutsideWithRefInClass
+" the behaviour of this method is not relevant."
+]
diff --git a/src/SmartTestDataOutsideP1/SmTClassP1SecondLevelSendersInsideTestOutsideWithRefInMethod.class.st b/src/SmartTestDataOutsideP1/SmTClassP1SecondLevelSendersInsideTestOutsideWithRefInMethod.class.st
new file mode 100644
index 0000000..0c1df4d
--- /dev/null
+++ b/src/SmartTestDataOutsideP1/SmTClassP1SecondLevelSendersInsideTestOutsideWithRefInMethod.class.st
@@ -0,0 +1,31 @@
+"
+Data for SmartTest tests on the DefaultClassPackage filter.
+
+Methods of this class have long name in order to be unique and explicit.
+Being unique, the senders of each method are mastered and consequently the tests are independent the one from the others.
+
+In the tests, it is always the methods whose name contains 'method1' that are modified. If the name contains first level, the methods are directly called by a test. If the name contains SecondLevel, they are called by an another method (whose name contains 'method2').
+
+In this class, there is the modified method and its first level sender (which contains 'method2' in it's name). In another package, there is the second level sender of the modified method (which contains 'testmethod2' in it's name).
+
+This class is referenced in the package SmartTestDataOutsideP2inside the same method as testMethod2.
+"
+Class {
+	#name : #SmTClassP1SecondLevelSendersInsideTestOutsideWithRefInMethod,
+	#superclass : #Object,
+	#category : 'SmartTestDataOutsideP1-ModificationOnMethod-SenderInTestOutWithRef'
+}
+
+{ #category : #method1 }
+SmTClassP1SecondLevelSendersInsideTestOutsideWithRefInMethod >> method1SecondLevelSendersInsideTestOutsideWithRefInMethod [
+"Data for tests: method directly called by a test method not from the same package"
+	
+" the behaviour of this method is not relevant."
+]
+
+{ #category : #method2 }
+SmTClassP1SecondLevelSendersInsideTestOutsideWithRefInMethod >> method2SecondLevelSendersInsideTestOutsideWithRefInMethod [
+"Data for tests: method directly called by a test method not from the same package"
+	^ self method1SecondLevelSendersInsideTestOutsideWithRefInMethod
+" the behaviour of this method is not relevant."
+]
diff --git a/src/SmartTestDataOutsideP1/SmTClassP1SecondLevelSendersInsideTestOutsideWithRefInPackage.class.st b/src/SmartTestDataOutsideP1/SmTClassP1SecondLevelSendersInsideTestOutsideWithRefInPackage.class.st
new file mode 100644
index 0000000..c687db7
--- /dev/null
+++ b/src/SmartTestDataOutsideP1/SmTClassP1SecondLevelSendersInsideTestOutsideWithRefInPackage.class.st
@@ -0,0 +1,31 @@
+"
+Data for SmartTest tests on the DefaultClassPackage filter.
+
+Methods of this class have long name in order to be unique and explicit.
+Being unique, the senders of each method are mastered and consequently the tests are independent the one from the others.
+
+In the tests, it is always the methods whose name contains 'method1' that are modified. If the name contains first level, the methods are directly called by a test. If the name contains SecondLevel, they are called by an another method (whose name contains 'method2').
+
+In this class, there is the modified method and its first level sender (which contains 'method2' in it's name). In another package, there is the second level sender of the modified method (which contains 'testmethod2' in it's name).
+
+This class is referenced in the package SmartTestDataOutsideP2inside the same package as testMethod2 (but not in the same method or class).
+"
+Class {
+	#name : #SmTClassP1SecondLevelSendersInsideTestOutsideWithRefInPackage,
+	#superclass : #Object,
+	#category : 'SmartTestDataOutsideP1-ModificationOnMethod-SenderInTestOutWithRef'
+}
+
+{ #category : #method1 }
+SmTClassP1SecondLevelSendersInsideTestOutsideWithRefInPackage >> method1SecondLevelSendersInsideTestOutsideWithRefInPackage [
+"Data for tests: method directly called by a test method not from the same package"
+	
+" the behaviour of this method is not relevant."
+]
+
+{ #category : #method2 }
+SmTClassP1SecondLevelSendersInsideTestOutsideWithRefInPackage >> method2SecondLevelSendersInsideTestOutsideWithRefInPackage [
+"Data for tests: method directly called by a test method not from the same package"
+	^ self method1SecondLevelSendersInsideTestOutsideWithRefInPackage
+" the behaviour of this method is not relevant."
+]
diff --git a/src/SmartTestDataOutsideP1/SmTClassP1SecondLevelSendersOutsideTestInsideWithRefInClass.class.st b/src/SmartTestDataOutsideP1/SmTClassP1SecondLevelSendersOutsideTestInsideWithRefInClass.class.st
new file mode 100644
index 0000000..ef98435
--- /dev/null
+++ b/src/SmartTestDataOutsideP1/SmTClassP1SecondLevelSendersOutsideTestInsideWithRefInClass.class.st
@@ -0,0 +1,24 @@
+"
+Data for SmartTest tests on the DefaultClassPackage filter.
+
+Methods of this class have long name in order to be unique and explicit.
+Being unique, the senders of each method are mastered and consequently the tests are independent the one from the others.
+
+In the tests, it is always the methods whose name contains 'method1' that are modified. If the name contains first level, the methods are directly called by a test. If the name contains SecondLevel, they are called by an another method (whose name contains 'method2').
+
+In this class, there is the modified method and its second level sender (which contains 'testsmethod2' in it's name). In another package, there is the first level sender of the modified method (which contains 'method2' in it's name).
+
+This class is referenced in the package SmartTestDataOutsideP2inside the same class as method2 (but not in the same method).
+"
+Class {
+	#name : #SmTClassP1SecondLevelSendersOutsideTestInsideWithRefInClass,
+	#superclass : #Object,
+	#category : 'SmartTestDataOutsideP1-ModificationOnMethod-SenderOutTestInWithRef'
+}
+
+{ #category : #method1 }
+SmTClassP1SecondLevelSendersOutsideTestInsideWithRefInClass >> method1SecondLevelSendersOutsideTestInsideWithRefInClass [
+"Data for tests: method directly called by a test method not from the same package"
+	
+" the behaviour of this method is not relevant."
+]
diff --git a/src/SmartTestDataOutsideP1/SmTClassP1SecondLevelSendersOutsideTestInsideWithRefInMethod.class.st b/src/SmartTestDataOutsideP1/SmTClassP1SecondLevelSendersOutsideTestInsideWithRefInMethod.class.st
new file mode 100644
index 0000000..2a1f161
--- /dev/null
+++ b/src/SmartTestDataOutsideP1/SmTClassP1SecondLevelSendersOutsideTestInsideWithRefInMethod.class.st
@@ -0,0 +1,24 @@
+"
+Data for SmartTest tests on the DefaultClassPackage filter.
+
+Methods of this class have long name in order to be unique and explicit.
+Being unique, the senders of each method are mastered and consequently the tests are independent the one from the others.
+
+In the tests, it is always the methods whose name contains 'method1' that are modified. If the name contains first level, the methods are directly called by a test. If the name contains SecondLevel, they are called by an another method (whose name contains 'method2').
+
+In this class, there is the modified method and its second level sender (which contains 'testsmethod2' in it's name). In another package, there is the first level sender of the modified method (which contains 'method2' in it's name).
+
+This class is referenced in the package SmartTestDataOutsideP2inside the same method as method2.
+"
+Class {
+	#name : #SmTClassP1SecondLevelSendersOutsideTestInsideWithRefInMethod,
+	#superclass : #Object,
+	#category : 'SmartTestDataOutsideP1-ModificationOnMethod-SenderOutTestInWithRef'
+}
+
+{ #category : #method1 }
+SmTClassP1SecondLevelSendersOutsideTestInsideWithRefInMethod >> method1SecondLevelSendersOutsideTestInsideWithRefInMethod [
+"Data for tests: method directly called by a test method not from the same package"
+	
+" the behaviour of this method is not relevant."
+]
diff --git a/src/SmartTestDataOutsideP1/SmTClassP1SecondLevelSendersOutsideTestInsideWithRefInPackage.class.st b/src/SmartTestDataOutsideP1/SmTClassP1SecondLevelSendersOutsideTestInsideWithRefInPackage.class.st
new file mode 100644
index 0000000..037780e
--- /dev/null
+++ b/src/SmartTestDataOutsideP1/SmTClassP1SecondLevelSendersOutsideTestInsideWithRefInPackage.class.st
@@ -0,0 +1,24 @@
+"
+Data for SmartTest tests on the DefaultClassPackage filter.
+
+Methods of this class have long name in order to be unique and explicit.
+Being unique, the senders of each method are mastered and consequently the tests are independent the one from the others.
+
+In the tests, it is always the methods whose name contains 'method1' that are modified. If the name contains first level, the methods are directly called by a test. If the name contains SecondLevel, they are called by an another method (whose name contains 'method2').
+
+In this class, there is the modified method and its second level sender (which contains 'testsmethod2' in it's name). In another package, there is the first level sender of the modified method (which contains 'method2' in it's name).
+
+This class is referenced in the package SmartTestDataOutsideP2inside the same package as method2 (but not in the same methodor class).
+"
+Class {
+	#name : #SmTClassP1SecondLevelSendersOutsideTestInsideWithRefInPackage,
+	#superclass : #Object,
+	#category : 'SmartTestDataOutsideP1-ModificationOnMethod-SenderOutTestInWithRef'
+}
+
+{ #category : #method1 }
+SmTClassP1SecondLevelSendersOutsideTestInsideWithRefInPackage >> method1SecondLevelSendersOutsideTestInsideWithRefInPackage [
+"Data for tests: method directly called by a test method not from the same package"
+	
+" the behaviour of this method is not relevant."
+]
diff --git a/src/SmartTestDataOutsideP1/SmTClassP1SecondLevelSendersOutsideTestOutsideWithRefInMethod.class.st b/src/SmartTestDataOutsideP1/SmTClassP1SecondLevelSendersOutsideTestOutsideWithRefInMethod.class.st
new file mode 100644
index 0000000..54623b4
--- /dev/null
+++ b/src/SmartTestDataOutsideP1/SmTClassP1SecondLevelSendersOutsideTestOutsideWithRefInMethod.class.st
@@ -0,0 +1,26 @@
+"
+Data for SmartTest tests on the filters (defaultClass).
+
+Methods of this class have long name in order to be unique and explicit.
+Being unique, the senders of each method are controlled and consequently the tests are independent the one from the others.
+
+In the tests, it is always the methods whose name contains 'method1' that are modified. If the name contains first level, the methods are directly called by a test. If the name contains SecondLevel, they are called by an another method (whose name contains 'method2').
+
+If the name of the test contains 'method2', the test use the method method2, if the test contains 'method1', the test directly uses the modified method.
+
+In this class, the first and second level senders are located outside of the package of the modified method and in two different package. 
+We test two different setup, one in which both method2 and testMethod2 references directly the class of method1, and another in which method2 references the class of method1 and testMethod2 references the class of method2.
+
+"
+Class {
+	#name : #SmTClassP1SecondLevelSendersOutsideTestOutsideWithRefInMethod,
+	#superclass : #Object,
+	#category : 'SmartTestDataOutsideP1-ModificationOnMethod-SenderOutTestOutWithRef'
+}
+
+{ #category : #method1 }
+SmTClassP1SecondLevelSendersOutsideTestOutsideWithRefInMethod >> method1SecondLevelSendersOutsideTestOutsideWithRefInMethod [
+"Data for tests: method called by a method not from the same package"
+	
+" the behaviour of this method is not relevant."
+]
diff --git a/src/SmartTestDataOutsideP1/SmTClassTestP1.class.st b/src/SmartTestDataOutsideP1/SmTClassTestP1.class.st
new file mode 100644
index 0000000..bcfc366
--- /dev/null
+++ b/src/SmartTestDataOutsideP1/SmTClassTestP1.class.st
@@ -0,0 +1,61 @@
+"
+Data for SmartTest tests on the filters (default, defaultClass, restricted package).
+
+Methods of this class have long name in order to be unique and explicit.
+Being unique, the senders of each method are controlled and consequently the tests are independent the one from the others.
+
+In the tests, it is always the methods whose name contains 'method1' that are modified. If the name contains first level, the methods are directly called by a test. If the name contains SecondLevel, they are called by an another method (whose name contains 'method2').
+
+If the name of the test contains 'method2', the test use the method method2, if the test contains 'method1', the test directly uses the modified method.
+
+"
+Class {
+	#name : #SmTClassTestP1,
+	#superclass : #TestCase,
+	#category : 'SmartTestDataOutsideP1-ModificationOnMethod-Tests'
+}
+
+{ #category : #testMethod1 }
+SmTClassTestP1 >> testExtensionMethod1FirstLevelSendersInside [
+SmTExtensionP2Test >> #extensionMethod1FirstLevelSendersInside
+]
+
+{ #category : #testMethod1 }
+SmTClassTestP1 >> testMethod1FirstLevelSendersInsidePackage [
+"Data for tests: this method calls directly a method from the same package."
+"In order to be sure that this method does not reference any class, we don't use directly the class but go through their name with a concatenation and then transform them into class"
+	^ ('SmTClass','P1') asClass new method1FirstLevelSendersInsidePackage.
+]
+
+{ #category : #testMethod2 }
+SmTClassTestP1 >> testMethod2SecondLevelSendersInsidePackageWithTestInside [
+"In order to be sure that this method does not reference any class, we don't use directly the class but go through their name with a concatenation and then transform them into class"
+	^ ('SmTClass','P1') asClass new method2SecondLevelSendersInsidePackageWithTestInside.
+]
+
+{ #category : #testMethod2 }
+SmTClassTestP1 >> testMethod2SecondLevelSendersOutsidePackageWithTestInside [
+"In order to be sure that this method does not reference any class, we don't use directly the class but go through their name with a concatenation and then transform them into class"
+	^ ('SmTClass','P2') asClass new method2SecondLevelSendersOutsidePackageWithTestInside.
+]
+
+{ #category : #testMethod2 }
+SmTClassTestP1 >> testMethod2SecondLevelSendersOutsideTestInsideWithRefInClass [
+"Data for tests: method directly called by a test method not from the same package"
+	^('SmTClassP2SecondLevelSendersOutsideTestInsideWithRefIn','Class') asClass new method2SecondLevelSendersOutsideTestInsideWithRefInClass
+" the behaviour of this method is not relevant."
+]
+
+{ #category : #testMethod2 }
+SmTClassTestP1 >> testMethod2SecondLevelSendersOutsideTestInsideWithRefInMethod [
+"Data for tests: method directly called by a test method not from the same package"
+	^('SmTClassP2SecondLevelSendersOutsideTestInsideWithRefIn','Method') asClass new method2SecondLevelSendersOutsideTestInsideWithRefInMethod
+" the behaviour of this method is not relevant."
+]
+
+{ #category : #testMethod2 }
+SmTClassTestP1 >> testMethod2SecondLevelSendersOutsideTestInsideWithRefInPackage [
+"Data for tests: method directly called by a test method not from the same package"
+	^('SmTClassP2SecondLevelSendersOutsideTestInsideWithRefInPackage') asClass new method2SecondLevelSendersOutsideTestInsideWithRefInPackage
+" the behaviour of this method is not relevant."
+]
diff --git a/src/SmartTestDataOutsideP1/SmTExtensionP1.class.st b/src/SmartTestDataOutsideP1/SmTExtensionP1.class.st
new file mode 100644
index 0000000..50451de
--- /dev/null
+++ b/src/SmartTestDataOutsideP1/SmTExtensionP1.class.st
@@ -0,0 +1,19 @@
+"
+Data for SmartTest tests on the filters:.
+
+Methods of this class have long name in order to be unique and explicit.
+Being unique, the senders of each method are mastered and consequently the tests are independent the one from the others.
+
+We will use this that to assert that SmartTest behaves correctly when dealing with inherited methods ans class.
+
+This class inherits one test from its superior class and doesn't redefine it.
+"
+Class {
+	#name : #SmTExtensionP1,
+	#superclass : #Object,
+	#category : 'SmartTestDataOutsideP1-ModificationOnMethod-SenderExtensionMethod'
+}
+
+{ #category : #'as yet unclassified' }
+SmTExtensionP1 >> extensionMethod1SecondLevelSenders [
+]
diff --git a/src/SmartTestDataOutsideP1/SmTExtensionP2Test.extension.st b/src/SmartTestDataOutsideP1/SmTExtensionP2Test.extension.st
new file mode 100644
index 0000000..31912e0
--- /dev/null
+++ b/src/SmartTestDataOutsideP1/SmTExtensionP2Test.extension.st
@@ -0,0 +1,11 @@
+Extension { #name : #SmTExtensionP2Test }
+
+{ #category : #'*SmartTestDataOutsideP1' }
+SmTExtensionP2Test >> extensionMethod1FirstLevelSendersInside [
+"an extension"
+]
+
+{ #category : #'*SmartTestDataOutsideP1' }
+SmTExtensionP2Test >> extensionMethod1FirstLevelSendersOutside [
+"an extension"
+]
diff --git a/src/SmartTestDataOutsideP1/SmTExtensionP3.extension.st b/src/SmartTestDataOutsideP1/SmTExtensionP3.extension.st
new file mode 100644
index 0000000..e828bba
--- /dev/null
+++ b/src/SmartTestDataOutsideP1/SmTExtensionP3.extension.st
@@ -0,0 +1,7 @@
+Extension { #name : #SmTExtensionP3 }
+
+{ #category : #'*SmartTestDataOutsideP1' }
+SmTExtensionP3 >> extensionMethod2SecondLevelSenders [
+"an extension"
+('SmT','ExtensionP1') asClass >> #extensionMethod1SecondLevelSenders
+]
diff --git a/src/SmartTestDataOutsideP1/SmTP1ClassTestAbstractTestCase.class.st b/src/SmartTestDataOutsideP1/SmTP1ClassTestAbstractTestCase.class.st
new file mode 100644
index 0000000..5a29b41
--- /dev/null
+++ b/src/SmartTestDataOutsideP1/SmTP1ClassTestAbstractTestCase.class.st
@@ -0,0 +1,26 @@
+"
+Data for SmartTest tests on the testForClass:.
+
+Methods of this class have long name in order to be unique and explicit.
+Being unique, the senders of each method are mastered and consequently the tests are independent the one from the others.
+
+We will use this that to assert that SmartTest behaves correctly when dealing with inherited methods ans class.
+
+This class is abstract and has one test, the subclasses will herit this test. The first subclass redefines this test (""SmTP1ClassTestSubClassRedefinesMethod"") and the other doesn't (""SmTP1ClassTestSubClassDoesntRedefineMethod"").
+"
+Class {
+	#name : #SmTP1ClassTestAbstractTestCase,
+	#superclass : #TestCase,
+	#category : 'SmartTestDataOutsideP1-ModificationOnClass-Tests'
+}
+
+{ #category : #testing }
+SmTP1ClassTestAbstractTestCase class >> isAbstract [
+
+	^ self  == SmTP1ClassTestAbstractTestCase
+]
+
+{ #category : #tests }
+SmTP1ClassTestAbstractTestCase >> testModificationOnClassAbstractTestCase [
+"the behaviour of this test is irrelevant"
+]
diff --git a/src/SmartTestDataOutsideP1/SmTP1ClassTestFirstLevelSendersInsideWithRefInMethod.class.st b/src/SmartTestDataOutsideP1/SmTP1ClassTestFirstLevelSendersInsideWithRefInMethod.class.st
new file mode 100644
index 0000000..9190247
--- /dev/null
+++ b/src/SmartTestDataOutsideP1/SmTP1ClassTestFirstLevelSendersInsideWithRefInMethod.class.st
@@ -0,0 +1,25 @@
+"
+Data for SmartTest tests on the filters (default, defaultClass, restricted package).
+
+Methods of this class have long name in order to be unique and explicit.
+Being unique, the senders of each method are controlled and consequently the tests are independent the one from the others.
+
+In the tests, it is always the methods whose name contains 'method1' that are modified. If the name contains first level, the methods are directly called by a test. If the name contains SecondLevel, they are called by an another method (whose name contains 'method2').
+
+If the name of the test contains 'method2', the test use the method method2, if the test contains 'method1', the test directly uses the modified method.
+
+
+This class contains a method that references the class SmTClassP1FirstLevelSendersInsideWithRefInMethod.
+
+
+"
+Class {
+	#name : #SmTP1ClassTestFirstLevelSendersInsideWithRefInMethod,
+	#superclass : #TestCase,
+	#category : 'SmartTestDataOutsideP1-ModificationOnMethod-Tests'
+}
+
+{ #category : #tests }
+SmTP1ClassTestFirstLevelSendersInsideWithRefInMethod >> testMethod1FirstLevelSendersInsideWithRefInMethod [
+SmTClassP1FirstLevelSendersInsideWithRefInMethod >> #method1FirstLevelSendersInsideWithRefInMethod
+]
diff --git a/src/SmartTestDataOutsideP1/SmTP1ClassTestSubClassDoesntRedefineMethod.class.st b/src/SmartTestDataOutsideP1/SmTP1ClassTestSubClassDoesntRedefineMethod.class.st
new file mode 100644
index 0000000..f1448b0
--- /dev/null
+++ b/src/SmartTestDataOutsideP1/SmTP1ClassTestSubClassDoesntRedefineMethod.class.st
@@ -0,0 +1,15 @@
+"
+Data for SmartTest tests on the testForClass:.
+
+Methods of this class have long name in order to be unique and explicit.
+Being unique, the senders of each method are mastered and consequently the tests are independent the one from the others.
+
+We will use this that to assert that SmartTest behaves correctly when dealing with inherited methods ans class.
+
+This class inherits one test from its superior class and doesn't redefine it.
+"
+Class {
+	#name : #SmTP1ClassTestSubClassDoesntRedefineMethod,
+	#superclass : #SmTP1ClassTestAbstractTestCase,
+	#category : 'SmartTestDataOutsideP1-ModificationOnClass-Tests'
+}
diff --git a/src/SmartTestDataOutsideP1/SmTP1ClassTestSubclassRedefinesMethod.class.st b/src/SmartTestDataOutsideP1/SmTP1ClassTestSubclassRedefinesMethod.class.st
new file mode 100644
index 0000000..793f891
--- /dev/null
+++ b/src/SmartTestDataOutsideP1/SmTP1ClassTestSubclassRedefinesMethod.class.st
@@ -0,0 +1,20 @@
+"
+Data for SmartTest tests on the testForClass:.
+
+Methods of this class have long name in order to be unique and explicit.
+Being unique, the senders of each method are mastered and consequently the tests are independent the one from the others.
+
+We will use this that to assert that SmartTest behaves correctly when dealing with inherited methods ans class.
+
+This class inherits one test from its superior class and redefines it.
+"
+Class {
+	#name : #SmTP1ClassTestSubclassRedefinesMethod,
+	#superclass : #SmTP1ClassTestAbstractTestCase,
+	#category : 'SmartTestDataOutsideP1-ModificationOnClass-Tests'
+}
+
+{ #category : #tests }
+SmTP1ClassTestSubclassRedefinesMethod >> testModificationOnClassAbstractTestCase [
+^super testModificationOnClassAbstractTestCase.
+]
diff --git a/src/SmartTestDataOutsideP1/SmTP1Inheritance.class.st b/src/SmartTestDataOutsideP1/SmTP1Inheritance.class.st
new file mode 100644
index 0000000..b7f7c53
--- /dev/null
+++ b/src/SmartTestDataOutsideP1/SmTP1Inheritance.class.st
@@ -0,0 +1,22 @@
+"
+Data for SmartTest tests on the filters.
+
+With this class, we try to assert that SmartTest work correctly with Inherited methods and tests.
+
+Methods of this class have long name in order to be unique and explicit.
+Being unique, the senders of each method are mastered and consequently the tests are independent the one from the others.
+
+In the tests, it is always the methods whose name contains 'method1' that are modified. If the name contains first level, the methods are directly called by a test. If the name contains SecondLevel, they are called by an another method (whose name contains 'method2').
+
+
+"
+Class {
+	#name : #SmTP1Inheritance,
+	#superclass : #Object,
+	#category : 'SmartTestDataOutsideP1-ModificationOnMethod-Inheritance'
+}
+
+{ #category : #method1 }
+SmTP1Inheritance >> method1Inheritance [
+"The behaviour of this method is irrelevant."
+]
diff --git a/src/SmartTestDataOutsideP1/SmTP1InheritanceSubClass1Test.class.st b/src/SmartTestDataOutsideP1/SmTP1InheritanceSubClass1Test.class.st
new file mode 100644
index 0000000..4dbdead
--- /dev/null
+++ b/src/SmartTestDataOutsideP1/SmTP1InheritanceSubClass1Test.class.st
@@ -0,0 +1,19 @@
+"
+Data for SmartTest tests on the filters (default, defaultClass, restricted package).
+
+Methods of this class have long name in order to be unique and explicit.
+Being unique, the senders of each method are mastered and consequently the tests are independent the one from the others.
+
+We will use this that to assert that SmartTest behaves correctly when dealing with inherited methods.
+"
+Class {
+	#name : #SmTP1InheritanceSubClass1Test,
+	#superclass : #SmTP1InheritanceTest,
+	#category : 'SmartTestDataOutsideP1-ModificationOnMethod-Tests'
+}
+
+{ #category : #tests }
+SmTP1InheritanceSubClass1Test >> testMethod1Inheritance [
+	super testMethod1Inheritance.
+	"The behaviour of this test is irrelevant".
+]
diff --git a/src/SmartTestDataOutsideP1/SmTP1InheritanceSubClass2Test.class.st b/src/SmartTestDataOutsideP1/SmTP1InheritanceSubClass2Test.class.st
new file mode 100644
index 0000000..dc23615
--- /dev/null
+++ b/src/SmartTestDataOutsideP1/SmTP1InheritanceSubClass2Test.class.st
@@ -0,0 +1,10 @@
+"
+method1Inheritance
+""The behaviour of this method is irrelevant""
+1.
+"
+Class {
+	#name : #SmTP1InheritanceSubClass2Test,
+	#superclass : #SmTP1InheritanceTest,
+	#category : 'SmartTestDataOutsideP1-ModificationOnMethod-Tests'
+}
diff --git a/src/SmartTestDataOutsideP1/SmTP1InheritanceTest.class.st b/src/SmartTestDataOutsideP1/SmTP1InheritanceTest.class.st
new file mode 100644
index 0000000..5cda055
--- /dev/null
+++ b/src/SmartTestDataOutsideP1/SmTP1InheritanceTest.class.st
@@ -0,0 +1,25 @@
+"
+Data for SmartTest tests on the filters (default, defaultClass, restricted package).
+
+Methods of this class have long name in order to be unique and explicit.
+Being unique, the senders of each method are mastered and consequently the tests are independent the one from the others.
+
+We will use this that to assert that SmartTest behaves correctly when dealing with inherited methods.
+"
+Class {
+	#name : #SmTP1InheritanceTest,
+	#superclass : #TestCase,
+	#category : 'SmartTestDataOutsideP1-ModificationOnMethod-Tests'
+}
+
+{ #category : #testing }
+SmTP1InheritanceTest class >> isAbstract [
+
+	^ self  == SmTP1InheritanceTest 
+]
+
+{ #category : #tests }
+SmTP1InheritanceTest >> testMethod1Inheritance [
+
+	('SmTP1', 'Inheritance') asClass new method1Inheritance.
+]
diff --git a/src/SmartTestDataOutsideP1/package.st b/src/SmartTestDataOutsideP1/package.st
new file mode 100644
index 0000000..41a584b
--- /dev/null
+++ b/src/SmartTestDataOutsideP1/package.st
@@ -0,0 +1 @@
+Package { #name : #SmartTestDataOutsideP1 }
diff --git a/src/SmartTestDataOutsideP2/SmTClassModificationOnClassOutsidePackageWithRefTest.class.st b/src/SmartTestDataOutsideP2/SmTClassModificationOnClassOutsidePackageWithRefTest.class.st
new file mode 100644
index 0000000..bec2176
--- /dev/null
+++ b/src/SmartTestDataOutsideP2/SmTClassModificationOnClassOutsidePackageWithRefTest.class.st
@@ -0,0 +1,20 @@
+"
+Data for SmartTest tests on the testForAnInstanceVariable:.
+
+Methods of this class have long name in order to be unique and explicit.
+Being unique, the senders of each method are mastered and consequently the tests are independent the one from the others.
+
+We will use this that to assert that SmartTest behaves correctly when dealing with modifications on instance variables.
+
+This class has an instance variable used inside the class in a test the instance variable is located outside of this package (in ""SmartTestDataOutsideP1"").
+"
+Class {
+	#name : #SmTClassModificationOnClassOutsidePackageWithRefTest,
+	#superclass : #TestCase,
+	#category : 'SmartTestDataOutsideP2-ModificationOnClass-Tests'
+}
+
+{ #category : #tests }
+SmTClassModificationOnClassOutsidePackageWithRefTest >> testRefToSmTClassModificationOnClassOutsidePackageWithRef [
+SmTClassModificationOnClassOutsidePackageWithRef new.
+]
diff --git a/src/SmartTestDataOutsideP2/SmTClassP1ModificationOnVariableOutsidePackageTest.class.st b/src/SmartTestDataOutsideP2/SmTClassP1ModificationOnVariableOutsidePackageTest.class.st
new file mode 100644
index 0000000..539387a
--- /dev/null
+++ b/src/SmartTestDataOutsideP2/SmTClassP1ModificationOnVariableOutsidePackageTest.class.st
@@ -0,0 +1,25 @@
+"
+Data for SmartTest tests on the testForAnInstanceVariable:.
+
+Methods of this class have long name in order to be unique and explicit.
+Being unique, the senders of each method are mastered and consequently the tests are independent the one from the others.
+
+We will use this that to assert that SmartTest behaves correctly when dealing with modifications on instance variables.
+
+This class uses an instance variable contained inside a class in a different package.
+"
+Class {
+	#name : #SmTClassP1ModificationOnVariableOutsidePackageTest,
+	#superclass : #TestCase,
+	#instVars : [
+		'instVarModificationOnVariableOutsidePackage'
+	],
+	#category : 'SmartTestDataOutsideP2-ModificationOnVariable-Tests'
+}
+
+{ #category : #tests }
+SmTClassP1ModificationOnVariableOutsidePackageTest >> testModificationOnVariableOutsidePackage [
+|anObject|
+anObject := ('SmTClassP1','ModificationOnVariable')asClass new.
+anObject instVarModificationOnVariableOutsidePackage
+]
diff --git a/src/SmartTestDataOutsideP2/SmTClassP2.class.st b/src/SmartTestDataOutsideP2/SmTClassP2.class.st
new file mode 100644
index 0000000..a4dcc45
--- /dev/null
+++ b/src/SmartTestDataOutsideP2/SmTClassP2.class.st
@@ -0,0 +1,33 @@
+"
+Data for SmartTest tests on the filters (default, defaultClass, restricted package).
+
+Methods of this class have long name in order to be unique and explicit.
+Being unique, the senders of each method are mastered and consequently the tests are independent the one from the others.
+
+In the tests, it is always the methods whose name contains 'method1' that are modified. If the name contains first level, the methods are directly called by a test. If the name contains SecondLevel, they are called by an another method (whose name contains 'method2').
+
+This class is not referenced anywhere (we used concatenation to be sure).
+
+The methods and tests in this package are not located in the same package as the modified method.
+"
+Class {
+	#name : #SmTClassP2,
+	#superclass : #Object,
+	#category : 'SmartTestDataOutsideP2-ModificationOnMethod-WithoutRef'
+}
+
+{ #category : #method2 }
+SmTClassP2 >> method2SecondLevelSendersOutsidePackageWithTestInside [
+	"Data for tests: this method calls a method not from the same package (located in SmartTestDataOutsideP1), 
+	this method is called by a test from the same package"
+	"In order to be sure that this method does not reference any class, we don't use directly the class but go through their name with a concatenation and then transform them into class"
+^ ('SmTClass','P1') asClass new method1SecondLevelSendersOutsidePackageWithTestInside
+]
+
+{ #category : #method2 }
+SmTClassP2 >> method2SecondLevelSendersOutsidePackageWithTestOutside [
+	"Data for tests: this method calls a method not from the same package (located in SmartTestDataOutsideP1), 
+	this method is called by a test not from the same package (located in SmartTestDataOutsideP1)"
+	"In order to be sure that this method does not reference any class, we don't use directly the class but go through their name with a concatenation and then transform them into class"
+^ ('SmTClass','P1') asClass new method1SecondLevelSendersOutsidePackageWithTestOutside
+]
diff --git a/src/SmartTestDataOutsideP2/SmTClassP2ReferencesInPackage.class.st b/src/SmartTestDataOutsideP2/SmTClassP2ReferencesInPackage.class.st
new file mode 100644
index 0000000..739f794
--- /dev/null
+++ b/src/SmartTestDataOutsideP2/SmTClassP2ReferencesInPackage.class.st
@@ -0,0 +1,28 @@
+"
+Data for SmartTest tests on the DefaultClassPackage filter.
+
+Methods of this class have long name in order to be unique and explicit.
+
+Being unique, the senders of each method are controlled and consequently the tests are independent the one from the others.
+In this Class, we implement methods that make references to different class to the package SMartTestDataOutsideP1.
+"
+Class {
+	#name : #SmTClassP2ReferencesInPackage,
+	#superclass : #Object,
+	#category : 'SmartTestDataOutsideP2-ModificationOnMethod-References'
+}
+
+{ #category : #referenceInPackage }
+SmTClassP2ReferencesInPackage >> referenceToSmTClassP1FirstLevelSendersOutsideWithRefInPackage [
+^SmTClassP1FirstLevelSendersOutsideWithRefInPackage
+]
+
+{ #category : #referenceInPackage }
+SmTClassP2ReferencesInPackage >> referenceToSmTClassP1SecondLevelSendersInsideTestOutsideWithRefInPackage [
+^SmTClassP1SecondLevelSendersInsideTestOutsideWithRefInPackage
+]
+
+{ #category : #referenceInPackage }
+SmTClassP2ReferencesInPackage >> referenceToSmTClassP1SecondLevelSendersOutsideTestInsideWithRefInPackage [
+^SmTClassP1SecondLevelSendersOutsideTestInsideWithRefInPackage
+]
diff --git a/src/SmartTestDataOutsideP2/SmTClassP2SecondLevelSendersOutsideTestInsideWithRefInClass.class.st b/src/SmartTestDataOutsideP2/SmTClassP2SecondLevelSendersOutsideTestInsideWithRefInClass.class.st
new file mode 100644
index 0000000..829f2be
--- /dev/null
+++ b/src/SmartTestDataOutsideP2/SmTClassP2SecondLevelSendersOutsideTestInsideWithRefInClass.class.st
@@ -0,0 +1,29 @@
+"
+Data for SmartTest tests on the DefaultClassPackage filter.
+
+Methods of this class have long name in order to be unique and explicit.
+Being unique, the senders of each method are mastered and consequently the tests are independent the one from the others.
+
+In the tests, it is always the methods whose name contains 'method1' that are modified. If the name contains first level, the methods are directly called by a test. If the name contains SecondLevel, they are called by an another method (whose name contains 'method2').
+
+In this class, there the first level sender of the modified method (which contains 'method2' in it's name). In another package, there is the modified method and its second level sender (the test itself,which contains 'testmethod2' in it's name).
+
+In this class there is a method that references the class SmTClassP1SecondLevelSendersOutsideTestInsideWithRefInClass located in the package SmTDataOutsideP1.
+"
+Class {
+	#name : #SmTClassP2SecondLevelSendersOutsideTestInsideWithRefInClass,
+	#superclass : #Object,
+	#category : 'SmartTestDataOutsideP2-ModificationOnMethod-SenderOutTestInWithRef'
+}
+
+{ #category : #method2 }
+SmTClassP2SecondLevelSendersOutsideTestInsideWithRefInClass >> method2SecondLevelSendersOutsideTestInsideWithRefInClass [
+^('SmTClassP1SecondLevelSendersOutsideTestInsideWithRefIn','Class') asClass  new method1SecondLevelSendersOutsideTestInsideWithRefInClass.
+
+]
+
+{ #category : #references }
+SmTClassP2SecondLevelSendersOutsideTestInsideWithRefInClass >> refToSmTClassP1SecondLevelSendersOutsideTestInsideWithRefInClass [
+^ SmTClassP1SecondLevelSendersOutsideTestInsideWithRefInClass new.
+
+]
diff --git a/src/SmartTestDataOutsideP2/SmTClassP2SecondLevelSendersOutsideTestInsideWithRefInMethod.class.st b/src/SmartTestDataOutsideP2/SmTClassP2SecondLevelSendersOutsideTestInsideWithRefInMethod.class.st
new file mode 100644
index 0000000..ff72de7
--- /dev/null
+++ b/src/SmartTestDataOutsideP2/SmTClassP2SecondLevelSendersOutsideTestInsideWithRefInMethod.class.st
@@ -0,0 +1,22 @@
+"
+Data for SmartTest tests on the DefaultClassPackage filter.
+
+Methods of this class have long name in order to be unique and explicit.
+Being unique, the senders of each method are mastered and consequently the tests are independent the one from the others.
+
+In the tests, it is always the methods whose name contains 'method1' that are modified. If the name contains first level, the methods are directly called by a test. If the name contains SecondLevel, they are called by an another method (whose name contains 'method2').
+
+In this class, there the first level sender of the modified method (which contains 'method2' in it's name). In another package, there is the modified method and its second level sender (the test itself,which contains 'testmethod2' in it's name).
+
+In this class the second level sender references directly the class of the modified method, SmTClassP1SecondLevelSenderOutsideTestInsideWithRefInMethod, located in the package SmTDataOutsideP1.
+"
+Class {
+	#name : #SmTClassP2SecondLevelSendersOutsideTestInsideWithRefInMethod,
+	#superclass : #Object,
+	#category : 'SmartTestDataOutsideP2-ModificationOnMethod-SenderOutTestInWithRef'
+}
+
+{ #category : #method2 }
+SmTClassP2SecondLevelSendersOutsideTestInsideWithRefInMethod >> method2SecondLevelSendersOutsideTestInsideWithRefInMethod [
+^SmTClassP1SecondLevelSendersOutsideTestInsideWithRefInMethod new method1SecondLevelSendersOutsideTestInsideWithRefInMethod.
+]
diff --git a/src/SmartTestDataOutsideP2/SmTClassP2SecondLevelSendersOutsideTestInsideWithRefInPackage.class.st b/src/SmartTestDataOutsideP2/SmTClassP2SecondLevelSendersOutsideTestInsideWithRefInPackage.class.st
new file mode 100644
index 0000000..23632d0
--- /dev/null
+++ b/src/SmartTestDataOutsideP2/SmTClassP2SecondLevelSendersOutsideTestInsideWithRefInPackage.class.st
@@ -0,0 +1,23 @@
+"
+Data for SmartTest tests on the DefaultClassPackage filter.
+
+Methods of this class have long name in order to be unique and explicit.
+Being unique, the senders of each method are mastered and consequently the tests are independent the one from the others.
+
+In the tests, it is always the methods whose name contains 'method1' that are modified. If the name contains first level, the methods are directly called by a test. If the name contains SecondLevel, they are called by an another method (whose name contains 'method2').
+
+In this class, there the first level sender of the modified method (which contains 'method2' in it's name). In another package, there is the modified method and its second level sender (the test itself,which contains 'testmethod2' in it's name).
+
+In this class there no method that references the class SmTClassP1SecondLevelSendersOutsideTestInsideWithRefInMethod located in the package SmTDataOutsideP1.
+There is a method in SmTClassP2ReferencesInPackage that references the class SmTClassP1SecondLevelSendersOutsideTestInsideWithRefInMethod.
+"
+Class {
+	#name : #SmTClassP2SecondLevelSendersOutsideTestInsideWithRefInPackage,
+	#superclass : #Object,
+	#category : 'SmartTestDataOutsideP2-ModificationOnMethod-SenderOutTestInWithRef'
+}
+
+{ #category : #method2 }
+SmTClassP2SecondLevelSendersOutsideTestInsideWithRefInPackage >> method2SecondLevelSendersOutsideTestInsideWithRefInPackage [
+^('SmTClassP1SecondLevelSendersOutsideTestInsideWithRefIn','Package') asClass  new method1SecondLevelSendersOutsideTestInsideWithRefInPackage.
+]
diff --git a/src/SmartTestDataOutsideP2/SmTClassP2SecondLevelSendersOutsideTestOutsideWithRefInMethod.class.st b/src/SmartTestDataOutsideP2/SmTClassP2SecondLevelSendersOutsideTestOutsideWithRefInMethod.class.st
new file mode 100644
index 0000000..88defff
--- /dev/null
+++ b/src/SmartTestDataOutsideP2/SmTClassP2SecondLevelSendersOutsideTestOutsideWithRefInMethod.class.st
@@ -0,0 +1,23 @@
+"
+Data for SmartTest tests on the filters (defaultClass).
+
+Methods of this class have long name in order to be unique and explicit.
+Being unique, the senders of each method are controlled and consequently the tests are independent the one from the others.
+
+In the tests, it is always the methods whose name contains 'method1' that are modified. If the name contains first level, the methods are directly called by a test. If the name contains SecondLevel, they are called by an another method (whose name contains 'method2').
+
+If the name of the test contains 'method2', the test use the method method2, if the test contains 'method1', the test directly uses the modified method.
+
+In this class, the first and second level senders are located outside of the package of the modified method and in two different package. 
+We test two different setup, one in which both method2 and testMethod2 references directly the class of method1, and another in which method2 references the class of method1 and testMethod2 references the class of method2.
+"
+Class {
+	#name : #SmTClassP2SecondLevelSendersOutsideTestOutsideWithRefInMethod,
+	#superclass : #Object,
+	#category : 'SmartTestDataOutsideP2-ModificationOnMethod-SenderOutTestOutWithRef'
+}
+
+{ #category : #method2 }
+SmTClassP2SecondLevelSendersOutsideTestOutsideWithRefInMethod >> method2SecondLevelSendersOutsideTestOutsideWithRefInMethod [
+SmTClassP1SecondLevelSendersOutsideTestOutsideWithRefInMethod >> #method1SecondLevelSendersOutsideTestOutsideWithRefInMethod.
+]
diff --git a/src/SmartTestDataOutsideP2/SmTClassTestP2Test.class.st b/src/SmartTestDataOutsideP2/SmTClassTestP2Test.class.st
new file mode 100644
index 0000000..ecc19fb
--- /dev/null
+++ b/src/SmartTestDataOutsideP2/SmTClassTestP2Test.class.st
@@ -0,0 +1,87 @@
+"
+Data for SmartTest tests on the filters (default, defaultClass, restricted package).
+
+Methods of this class have long name in order to be unique and explicit.
+Being unique, the senders of each method are controlled and consequently the tests are independent the one from the others.
+
+In the tests, it is always the methods whose name contains 'method1' that are modified. If the name contains first level, the methods are directly called by a test. If the name contains SecondLevel, they are called by an another method (whose name contains 'method2').
+
+If the name of the test contains 'method2', the test use the method method2, if the test contains 'method1', the test directly uses the modified method.
+
+
+The methods and tests in this package are not located in the same package as the modified method.
+"
+Class {
+	#name : #SmTClassTestP2Test,
+	#superclass : #TestCase,
+	#category : 'SmartTestDataOutsideP2-ModificationOnMethod-Tests'
+}
+
+{ #category : #references }
+SmTClassTestP2Test >> referenceToSmTClassP1FirstLevelSendersOutsideWithRefInClass [
+^ SmTClassP1FirstLevelSendersOutsideWithRefInClass.
+]
+
+{ #category : #references }
+SmTClassTestP2Test >> referenceToSmTClassP1SecondLevelSendersInsideTestOutsideWithRefInClass [
+^SmTClassP1SecondLevelSendersInsideTestOutsideWithRefInClass new.
+]
+
+{ #category : #testMethod1 }
+SmTClassTestP2Test >> testExtensionMethod1FirstLevelSendersOutside [
+SmTExtensionP2Test >> #extensionMethod1FirstLevelSendersOutside.
+]
+
+{ #category : #testMethod1 }
+SmTClassTestP2Test >> testMethod1FirstLevelSendersOutsidePackage [
+	"Data for tests: this method calls directly method1, which is not located in the same package"
+	"In order to be sure that this method does not reference any class, we don't use directly the class but go through their name with a concatenation and then transform them into class"
+	^ ('SmTClass','P1') asClass new method1FirstLevelSendersOutsidePackage.
+]
+
+{ #category : #testMethod1 }
+SmTClassTestP2Test >> testMethod1FirstLevelSendersOutsideWithRefInClass [
+	"In order to be sure that this method does not reference any class, we don't use directly the class but go through their name with a concatenation and then transform them into class"
+^ ('SmTClassP1','FirstLevelSendersOutsideWithRefInClass') asClass new method1FirstLevelSendersWithRefInClass.
+]
+
+{ #category : #testMethod1 }
+SmTClassTestP2Test >> testMethod1FirstLevelSendersOutsideWithRefInMethod [
+	"In order to be sure that this method does not reference any class, we don't use directly the class but go through their name with a concatenation and then transform them into class"
+^SmTClassP1FirstLevelSendersOutsideWithRefInMethod new method1FirstLevelSendersWithRefInMethod.
+]
+
+{ #category : #testMethod1 }
+SmTClassTestP2Test >> testMethod1FirstLevelSendersOutsideWithRefInPackage [	
+	"In order to be sure that this method does not reference any class, we don't use directly the class but go through their name with a concatenation and then transform them into class"
+^('SmTClassP1','FirstLevelSendersOutsideWithRefInPackage') asClass new method1FirstLevelSendersWithRefInPackage.
+]
+
+{ #category : #testMethod2 }
+SmTClassTestP2Test >> testMethod2SecondLevelSenderInsideTestOutsideWithRefInClass [
+^ ('SmTClass','P1SecondLevelSendersInsideTestOutsideWithRefInClass') asClass new method2SecondLevelSendersInsideTestOutsideWithRefInClass.
+]
+
+{ #category : #testMethod2 }
+SmTClassTestP2Test >> testMethod2SecondLevelSenderInsideTestOutsideWithRefInMethod [
+^ SmTClassP1SecondLevelSendersInsideTestOutsideWithRefInMethod new method2SecondLevelSendersInsideTestOutsideWithRefInMethod.
+]
+
+{ #category : #testMethod2 }
+SmTClassTestP2Test >> testMethod2SecondLevelSenderInsideTestOutsideWithRefInPackage [
+SmTClassP1SecondLevelSendersInsideTestOutsideWithRefInPackage new method2SecondLevelSendersInsideTestOutsideWithRefInPackage.
+]
+
+{ #category : #testMethod2 }
+SmTClassTestP2Test >> testMethod2SecondLevelSendersInsidePackageWithTestOutside [
+	"Data for tests: this method calls a method not from the same package, which itself calls a method. Both are not from the same package as this test (both are located in SmartTestDataOutsideP1)"
+	"In order to be sure that this method does not reference any class, we don't use directly the class but go through their name with a concatenation and then transform them into class"
+	^ ('SmTClass','P1') asClass new method2SecondLevelSendersInsidePackageWithTestOutside.
+]
+
+{ #category : #testMethod2 }
+SmTClassTestP2Test >> testMethod2SecondLevelSendersOutsidePackageWithTestOutside [
+"Data for tests: this method calls a method from the same package (located in SmartTestDataOutsideP1), which itself calls a method not from the same package (located in SmartTestDataOutsideP1)"
+"In order to be sure that this method does not reference any class, we don't use directly the class but go through their name with a concatenation and then transform them into class"
+	^ ('SmTClass','P2') asClass new method2SecondLevelSendersOutsidePackageWithTestOutside.
+]
diff --git a/src/SmartTestDataOutsideP2/SmTExtensionP2Test.class.st b/src/SmartTestDataOutsideP2/SmTExtensionP2Test.class.st
new file mode 100644
index 0000000..94205b4
--- /dev/null
+++ b/src/SmartTestDataOutsideP2/SmTExtensionP2Test.class.st
@@ -0,0 +1,8 @@
+"
+Data for the tests for an extension method.
+"
+Class {
+	#name : #SmTExtensionP2Test,
+	#superclass : #TestCase,
+	#category : 'SmartTestDataOutsideP2-ModificationOnMethod-ExtensionMethod-Test'
+}
diff --git a/src/SmartTestDataOutsideP2/package.st b/src/SmartTestDataOutsideP2/package.st
new file mode 100644
index 0000000..23e9784
--- /dev/null
+++ b/src/SmartTestDataOutsideP2/package.st
@@ -0,0 +1 @@
+Package { #name : #SmartTestDataOutsideP2 }
diff --git a/src/SmartTestDataOutsideP3/SmTClassTestP3.class.st b/src/SmartTestDataOutsideP3/SmTClassTestP3.class.st
new file mode 100644
index 0000000..7956b3d
--- /dev/null
+++ b/src/SmartTestDataOutsideP3/SmTClassTestP3.class.st
@@ -0,0 +1,29 @@
+"
+Data for SmartTest tests on the filters (defaultClass).
+
+Methods of this class have long name in order to be unique and explicit.
+Being unique, the senders of each method are controlled and consequently the tests are independent the one from the others.
+
+In the tests, it is always the methods whose name contains 'method1' that are modified. If the name contains first level, the methods are directly called by a test. If the name contains SecondLevel, they are called by an another method (whose name contains 'method2').
+
+If the name of the test contains 'method2', the test use the method method2, if the test contains 'method1', the test directly uses the modified method.
+
+
+The methods and tests in this package are not located in the same package as the modified method.
+"
+Class {
+	#name : #SmTClassTestP3,
+	#superclass : #TestCase,
+	#category : 'SmartTestDataOutsideP3'
+}
+
+{ #category : #tests }
+SmTClassTestP3 >> testExtensionMethod2SecondLevelSenders [
+('SmTExtension','P3') asClass >> #extensionMethod2SecondLevelSenders .
+]
+
+{ #category : #tests }
+SmTClassTestP3 >> testMethod1ExtensionTestInside [
+('SmTExtension','P4') asClass >> #method1ExtensionTestInside
+
+]
diff --git a/src/SmartTestDataOutsideP3/SmTClassTestP3SecondLevelSenderOutsideTestOutsideWithRef.class.st b/src/SmartTestDataOutsideP3/SmTClassTestP3SecondLevelSenderOutsideTestOutsideWithRef.class.st
new file mode 100644
index 0000000..fa25aed
--- /dev/null
+++ b/src/SmartTestDataOutsideP3/SmTClassTestP3SecondLevelSenderOutsideTestOutsideWithRef.class.st
@@ -0,0 +1,17 @@
+"
+Data for SmartTest tests on the filters (defaultClass).
+
+Methods of this class have long name in order to be unique and explicit.
+Being unique, the senders of each method are controlled and consequently the tests are independent the one from the others.
+
+In the tests, it is always the methods whose name contains 'method1' that are modified. If the name contains first level, the methods are directly called by a test. If the name contains SecondLevel, they are called by an another method (whose name contains 'method2').
+
+If the name of the test contains 'method2', the test use the method method2, if the test contains 'method1', the test directly uses the modified method.
+
+In this class, the first and second level senders are located outside of the package of the modified method and in two different package. 
+"
+Class {
+	#name : #SmTClassTestP3SecondLevelSenderOutsideTestOutsideWithRef,
+	#superclass : #TestCase,
+	#category : 'SmartTestDataOutsideP3'
+}
diff --git a/src/SmartTestDataOutsideP3/SmTClassTestP3SecondLevelSenderOutsideTestOutsideWithRefInMethod.class.st b/src/SmartTestDataOutsideP3/SmTClassTestP3SecondLevelSenderOutsideTestOutsideWithRefInMethod.class.st
new file mode 100644
index 0000000..a1fd1f9
--- /dev/null
+++ b/src/SmartTestDataOutsideP3/SmTClassTestP3SecondLevelSenderOutsideTestOutsideWithRefInMethod.class.st
@@ -0,0 +1,25 @@
+"
+Data for SmartTest tests on the filters (defaultClass).
+
+Methods of this class have long name in order to be unique and explicit.
+Being unique, the senders of each method are controlled and consequently the tests are independent the one from the others.
+
+In the tests, it is always the methods whose name contains 'method1' that are modified. If the name contains first level, the methods are directly called by a test. If the name contains SecondLevel, they are called by an another method (whose name contains 'method2').
+
+If the name of the test contains 'method2', the test use the method method2, if the test contains 'method1', the test directly uses the modified method.
+
+In this class, the first and second level senders are located outside of the package of the modified method and in two different package. 
+We test two different setup, one in which both method2 and testMethod2 references directly the class of method1, and another in which method2 references the class of method1 and testMethod2 references the class of method2.
+
+"
+Class {
+	#name : #SmTClassTestP3SecondLevelSenderOutsideTestOutsideWithRefInMethod,
+	#superclass : #SmTClassTestP3SecondLevelSenderOutsideTestOutsideWithRef,
+	#category : 'SmartTestDataOutsideP3'
+}
+
+{ #category : #testMethod2 }
+SmTClassTestP3SecondLevelSenderOutsideTestOutsideWithRefInMethod >> testMethod2SecondLevelSenderOutsideTestOutsideWithRefInMethod [
+('SmTClassP2SecondLevelSendersOutsideTestOutsideWithRefIn','Method') asClass >> #method2SecondLevelSendersOutsideTestOutsideWithRefInMethod.
+SmTClassP1SecondLevelSendersOutsideTestOutsideWithRefInMethod new.
+]
diff --git a/src/SmartTestDataOutsideP3/SmTExtensionP3.class.st b/src/SmartTestDataOutsideP3/SmTExtensionP3.class.st
new file mode 100644
index 0000000..1e31af6
--- /dev/null
+++ b/src/SmartTestDataOutsideP3/SmTExtensionP3.class.st
@@ -0,0 +1,8 @@
+"
+This class is an extension of the package P3, it is located in the package p4.
+"
+Class {
+	#name : #SmTExtensionP3,
+	#superclass : #Object,
+	#category : 'SmartTestDataOutsideP3'
+}
diff --git a/src/SmartTestDataOutsideP3/SmTExtensionP4.extension.st b/src/SmartTestDataOutsideP3/SmTExtensionP4.extension.st
new file mode 100644
index 0000000..e37a9f4
--- /dev/null
+++ b/src/SmartTestDataOutsideP3/SmTExtensionP4.extension.st
@@ -0,0 +1,5 @@
+Extension { #name : #SmTExtensionP4 }
+
+{ #category : #'*SmartTestDataOutsideP3' }
+SmTExtensionP4 >> extensionMethodP4 [
+]
diff --git a/src/SmartTestDataOutsideP3/package.st b/src/SmartTestDataOutsideP3/package.st
new file mode 100644
index 0000000..8700f5b
--- /dev/null
+++ b/src/SmartTestDataOutsideP3/package.st
@@ -0,0 +1 @@
+Package { #name : #SmartTestDataOutsideP3 }
diff --git a/src/SmartTestDataOutsideP4/SmTExtensionP4.class.st b/src/SmartTestDataOutsideP4/SmTExtensionP4.class.st
new file mode 100644
index 0000000..1607ebc
--- /dev/null
+++ b/src/SmartTestDataOutsideP4/SmTExtensionP4.class.st
@@ -0,0 +1,12 @@
+"
+This class is an extension of the package P3, it is located in the package p4.
+"
+Class {
+	#name : #SmTExtensionP4,
+	#superclass : #Object,
+	#category : 'SmartTestDataOutsideP4'
+}
+
+{ #category : #method1 }
+SmTExtensionP4 >> method1ExtensionTestInside [
+]
diff --git a/src/SmartTestDataOutsideP4/package.st b/src/SmartTestDataOutsideP4/package.st
new file mode 100644
index 0000000..8461b44
--- /dev/null
+++ b/src/SmartTestDataOutsideP4/package.st
@@ -0,0 +1 @@
+Package { #name : #SmartTestDataOutsideP4 }