diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..07f050a
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,71 @@
+
+ 4.0.0
+ sacha
+ infra
+ 0.1
+ sacha infra
+
+
+
+ junit
+ junit
+ 4.11
+
+
+ org.hamcrest
+ hamcrest-core
+
+
+
+
+ org.hamcrest
+ hamcrest-core
+ 1.3
+
+
+ fr.inria.gforge.spoon
+ spoon-core
+ 4.2.0
+
+
+
+
+ srcs/main
+ bin
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+ 1.7
+
+ **/*.*
+
+
+
+
+ org.codehaus.mojo
+ build-helper-maven-plugin
+ 1.1
+
+
+ add-source
+ generate-sources
+
+ add-source
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/srcs/framework/bcornu/resi/AbnormalExecutionError.java b/srcs/framework/bcornu/resi/AbnormalExecutionError.java
new file mode 100644
index 0000000..bc597e1
--- /dev/null
+++ b/srcs/framework/bcornu/resi/AbnormalExecutionError.java
@@ -0,0 +1,13 @@
+package bcornu.resi;
+
+public class AbnormalExecutionError extends Error {
+
+ public AbnormalExecutionError(){
+ super();
+ }
+
+ public AbnormalExecutionError(String string) {
+ super(string);
+ }
+
+}
diff --git a/srcs/framework/bcornu/resi/CallChecker.java b/srcs/framework/bcornu/resi/CallChecker.java
new file mode 100644
index 0000000..81b5df7
--- /dev/null
+++ b/srcs/framework/bcornu/resi/CallChecker.java
@@ -0,0 +1,66 @@
+package bcornu.resi;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Stack;
+
+import bcornu.resi.context.MethodeContext;
+import bcornu.resi.strategies.NoStrat;
+
+
+ @SuppressWarnings("all")
+public class CallChecker {
+
+ public static Strategy strat;
+
+ private static Stack> stack = new Stack>();
+
+ private static Strategy getStrat(){
+ return strat==null?new NoStrat():strat;
+ }
+
+ public static T isCalled(T o, Class clazz) {
+ if (o == null && ExceptionStack.isStoppable(NullPointerException.class))
+ return null;
+ return getStrat().isCalled(o, clazz);
+ }
+
+ public static boolean beforeDeref(Object called) {
+ if (called == null && ExceptionStack.isStoppable(NullPointerException.class))
+ return true;
+ return getStrat().beforeDeref(called);
+ }
+
+ public static T init(Class clazz) {
+ return getStrat().init(clazz);
+ }
+
+ public static T returned(Class clazz) {
+ return getStrat().returned(clazz);
+ }
+
+ public static T varAssign(Object table) {
+ if(! stack.isEmpty() && ! stack.peek().contains(table))
+ stack.peek().add(table);
+ return (T) table;
+ }
+
+ public static T varInit(Object table) {
+ if(! stack.isEmpty())
+ stack.peek().add(table);
+ return (T) table;
+ }
+
+ public static void methodStart() {
+ stack.push(new ArrayList