diff --git a/.idea/dictionaries/max.xml b/.idea/dictionaries/max.xml
new file mode 100644
index 00000000000..59b317d1177
--- /dev/null
+++ b/.idea/dictionaries/max.xml
@@ -0,0 +1,7 @@
+
+
+
+ codegen
+
+
+
\ No newline at end of file
diff --git a/idea/src/org/jetbrains/jet/codegen/ClassVisitorFactory.java b/idea/src/org/jetbrains/jet/codegen/ClassVisitorFactory.java
new file mode 100644
index 00000000000..40ff59f7c38
--- /dev/null
+++ b/idea/src/org/jetbrains/jet/codegen/ClassVisitorFactory.java
@@ -0,0 +1,17 @@
+package org.jetbrains.jet.codegen;
+
+import org.jetbrains.jet.lang.psi.JetNamespace;
+import org.objectweb.asm.ClassVisitor;
+import org.objectweb.asm.util.TraceClassVisitor;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
+/**
+ * @author max
+ */
+public class ClassVisitorFactory {
+ public ClassVisitor visitorForClassIn(JetNamespace namespace) {
+ return new TraceClassVisitor(new PrintWriter(new StringWriter()));
+ }
+}
diff --git a/idea/src/org/jetbrains/jet/codegen/ExpressionCodegen.java b/idea/src/org/jetbrains/jet/codegen/ExpressionCodegen.java
new file mode 100644
index 00000000000..7a928630a67
--- /dev/null
+++ b/idea/src/org/jetbrains/jet/codegen/ExpressionCodegen.java
@@ -0,0 +1,256 @@
+package org.jetbrains.jet.codegen;
+
+import gnu.trove.TObjectIntHashMap;
+import org.jetbrains.jet.lang.psi.*;
+import org.objectweb.asm.Label;
+import org.objectweb.asm.MethodVisitor;
+import org.objectweb.asm.Type;
+import org.objectweb.asm.commons.InstructionAdapter;
+
+import java.util.List;
+import java.util.Stack;
+
+/**
+ * @author max
+ */
+public class ExpressionCodegen extends JetVisitor {
+ private final Stack