diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 5e69403a038..d0362e355ce 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -8,11 +8,48 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
@@ -57,7 +94,7 @@
-
+
@@ -70,7 +107,7 @@
-
+
@@ -127,18 +164,18 @@
-
+
-
+
-
+
-
+
@@ -162,10 +199,37 @@
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -185,9 +249,9 @@
-
+
-
+
@@ -196,12 +260,12 @@
-
+
-
+
-
+
@@ -210,16 +274,16 @@
-
+
-
+
-
+
@@ -244,27 +308,27 @@
-
+
-
+
-
-
+
+
-
+
-
+
-
+
@@ -291,9 +355,6 @@
@@ -460,50 +524,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -553,22 +573,8 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -589,36 +595,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1009,7 +985,7 @@
-
+
@@ -1026,7 +1002,7 @@
-
+
@@ -1071,7 +1047,7 @@
-
+
@@ -1084,7 +1060,6 @@
-
@@ -1109,6 +1084,7 @@
+
@@ -1118,31 +1094,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1157,18 +1108,18 @@
-
+
-
+
-
+
-
+
@@ -1180,33 +1131,26 @@
-
+
-
+
-
+
-
-
-
-
-
-
-
-
+
-
+
-
+
@@ -1225,16 +1169,44 @@
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/translator/src/org/jetbrains/k2js/K2JSTranslator.java b/translator/src/org/jetbrains/k2js/K2JSTranslator.java
index 537706a44d4..dd7e5ea0404 100644
--- a/translator/src/org/jetbrains/k2js/K2JSTranslator.java
+++ b/translator/src/org/jetbrains/k2js/K2JSTranslator.java
@@ -24,7 +24,7 @@ import org.jetbrains.jet.lang.resolve.AnalyzingUtils;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.java.JavaDefaultImports;
import org.jetbrains.k2js.generate.CodeGenerator;
-import org.jetbrains.k2js.translate.GenerationState;
+import org.jetbrains.k2js.translate.general.GenerationState;
import java.io.File;
import java.io.IOException;
diff --git a/translator/src/org/jetbrains/k2js/declarations/ExtractionVisitor.java b/translator/src/org/jetbrains/k2js/declarations/ExtractionVisitor.java
index 6bfd26df152..a1c017fe80b 100644
--- a/translator/src/org/jetbrains/k2js/declarations/ExtractionVisitor.java
+++ b/translator/src/org/jetbrains/k2js/declarations/ExtractionVisitor.java
@@ -5,7 +5,7 @@ import com.google.dart.compiler.backend.js.ast.JsScope;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.descriptors.*;
-import org.jetbrains.k2js.translate.Namer;
+import org.jetbrains.k2js.translate.utils.Namer;
/**
* @author Talanov Pavel
diff --git a/translator/src/org/jetbrains/k2js/translate/declaration/ClassDeclarationTranslator.java b/translator/src/org/jetbrains/k2js/translate/declaration/ClassDeclarationTranslator.java
index 8a7b3d0bbaf..f9827b1c839 100644
--- a/translator/src/org/jetbrains/k2js/translate/declaration/ClassDeclarationTranslator.java
+++ b/translator/src/org/jetbrains/k2js/translate/declaration/ClassDeclarationTranslator.java
@@ -7,10 +7,10 @@ import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.psi.JetClass;
import org.jetbrains.jet.lang.psi.JetDeclaration;
import org.jetbrains.jet.lang.psi.JetNamespace;
-import org.jetbrains.k2js.translate.AbstractTranslator;
-import org.jetbrains.k2js.translate.Namer;
-import org.jetbrains.k2js.translate.Translation;
-import org.jetbrains.k2js.translate.TranslationContext;
+import org.jetbrains.k2js.translate.general.AbstractTranslator;
+import org.jetbrains.k2js.translate.general.Translation;
+import org.jetbrains.k2js.translate.general.TranslationContext;
+import org.jetbrains.k2js.translate.utils.Namer;
import org.jetbrains.k2js.utils.ClassSorter;
import java.util.ArrayList;
diff --git a/translator/src/org/jetbrains/k2js/translate/declaration/ClassTranslator.java b/translator/src/org/jetbrains/k2js/translate/declaration/ClassTranslator.java
index 91fe16ca692..863c087d117 100644
--- a/translator/src/org/jetbrains/k2js/translate/declaration/ClassTranslator.java
+++ b/translator/src/org/jetbrains/k2js/translate/declaration/ClassTranslator.java
@@ -12,7 +12,11 @@ import org.jetbrains.jet.lang.descriptors.ClassKind;
import org.jetbrains.jet.lang.descriptors.PropertyDescriptor;
import org.jetbrains.jet.lang.psi.JetClass;
import org.jetbrains.jet.lang.psi.JetParameter;
-import org.jetbrains.k2js.translate.*;
+import org.jetbrains.k2js.translate.general.AbstractTranslator;
+import org.jetbrains.k2js.translate.general.Translation;
+import org.jetbrains.k2js.translate.general.TranslationContext;
+import org.jetbrains.k2js.translate.utils.BindingUtils;
+import org.jetbrains.k2js.translate.utils.Namer;
import java.util.ArrayList;
import java.util.List;
diff --git a/translator/src/org/jetbrains/k2js/translate/declaration/DeclarationBodyVisitor.java b/translator/src/org/jetbrains/k2js/translate/declaration/DeclarationBodyVisitor.java
index bfd6abc3cf9..795fce301d8 100644
--- a/translator/src/org/jetbrains/k2js/translate/declaration/DeclarationBodyVisitor.java
+++ b/translator/src/org/jetbrains/k2js/translate/declaration/DeclarationBodyVisitor.java
@@ -4,10 +4,10 @@ import com.google.dart.compiler.backend.js.ast.JsPropertyInitializer;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.descriptors.PropertyDescriptor;
import org.jetbrains.jet.lang.psi.*;
-import org.jetbrains.k2js.translate.BindingUtils;
-import org.jetbrains.k2js.translate.Translation;
-import org.jetbrains.k2js.translate.TranslationContext;
-import org.jetbrains.k2js.translate.TranslatorVisitor;
+import org.jetbrains.k2js.translate.general.Translation;
+import org.jetbrains.k2js.translate.general.TranslationContext;
+import org.jetbrains.k2js.translate.general.TranslatorVisitor;
+import org.jetbrains.k2js.translate.utils.BindingUtils;
import java.util.ArrayList;
import java.util.Arrays;
diff --git a/translator/src/org/jetbrains/k2js/translate/declaration/NamespaceTranslator.java b/translator/src/org/jetbrains/k2js/translate/declaration/NamespaceTranslator.java
index 76c7c5461bf..63a252992d1 100644
--- a/translator/src/org/jetbrains/k2js/translate/declaration/NamespaceTranslator.java
+++ b/translator/src/org/jetbrains/k2js/translate/declaration/NamespaceTranslator.java
@@ -4,10 +4,10 @@ import com.google.dart.compiler.backend.js.ast.*;
import com.google.dart.compiler.util.AstUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.psi.JetNamespace;
-import org.jetbrains.k2js.translate.AbstractTranslator;
-import org.jetbrains.k2js.translate.Namer;
-import org.jetbrains.k2js.translate.Translation;
-import org.jetbrains.k2js.translate.TranslationContext;
+import org.jetbrains.k2js.translate.general.AbstractTranslator;
+import org.jetbrains.k2js.translate.general.Translation;
+import org.jetbrains.k2js.translate.general.TranslationContext;
+import org.jetbrains.k2js.translate.utils.Namer;
import java.util.ArrayList;
import java.util.List;
diff --git a/translator/src/org/jetbrains/k2js/translate/declaration/PropertyTranslator.java b/translator/src/org/jetbrains/k2js/translate/declaration/PropertyTranslator.java
index 03465169d3a..b964b327045 100644
--- a/translator/src/org/jetbrains/k2js/translate/declaration/PropertyTranslator.java
+++ b/translator/src/org/jetbrains/k2js/translate/declaration/PropertyTranslator.java
@@ -10,7 +10,11 @@ import org.jetbrains.jet.lang.descriptors.PropertySetterDescriptor;
import org.jetbrains.jet.lang.psi.JetExpression;
import org.jetbrains.jet.lang.psi.JetProperty;
import org.jetbrains.jet.lang.psi.JetPropertyAccessor;
-import org.jetbrains.k2js.translate.*;
+import org.jetbrains.k2js.translate.general.AbstractTranslator;
+import org.jetbrains.k2js.translate.general.Translation;
+import org.jetbrains.k2js.translate.general.TranslationContext;
+import org.jetbrains.k2js.translate.utils.BindingUtils;
+import org.jetbrains.k2js.translate.utils.TranslationUtils;
import java.util.ArrayList;
import java.util.Arrays;
diff --git a/translator/src/org/jetbrains/k2js/translate/ExpressionTranslator.java b/translator/src/org/jetbrains/k2js/translate/expression/ExpressionTranslator.java
similarity index 80%
rename from translator/src/org/jetbrains/k2js/translate/ExpressionTranslator.java
rename to translator/src/org/jetbrains/k2js/translate/expression/ExpressionTranslator.java
index 25c5e6bdc56..08cffa3a8b0 100644
--- a/translator/src/org/jetbrains/k2js/translate/ExpressionTranslator.java
+++ b/translator/src/org/jetbrains/k2js/translate/expression/ExpressionTranslator.java
@@ -1,8 +1,10 @@
-package org.jetbrains.k2js.translate;
+package org.jetbrains.k2js.translate.expression;
import com.google.dart.compiler.backend.js.ast.JsNode;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.psi.JetExpression;
+import org.jetbrains.k2js.translate.general.AbstractTranslator;
+import org.jetbrains.k2js.translate.general.TranslationContext;
/**
* @author Talanov Pavel
diff --git a/translator/src/org/jetbrains/k2js/translate/ExpressionVisitor.java b/translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java
similarity index 96%
rename from translator/src/org/jetbrains/k2js/translate/ExpressionVisitor.java
rename to translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java
index e9b47cc676a..d8a0a22015b 100644
--- a/translator/src/org/jetbrains/k2js/translate/ExpressionVisitor.java
+++ b/translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java
@@ -1,4 +1,4 @@
-package org.jetbrains.k2js.translate;
+package org.jetbrains.k2js.translate.expression;
import com.google.dart.compiler.backend.js.ast.*;
import com.google.dart.compiler.util.AstUtil;
@@ -11,6 +11,14 @@ import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.calls.ResolvedCall;
import org.jetbrains.jet.lang.resolve.constants.CompileTimeConstant;
import org.jetbrains.jet.lang.resolve.constants.NullValue;
+import org.jetbrains.k2js.translate.general.Translation;
+import org.jetbrains.k2js.translate.general.TranslationContext;
+import org.jetbrains.k2js.translate.general.TranslatorVisitor;
+import org.jetbrains.k2js.translate.operation.BinaryOperationTranslator;
+import org.jetbrains.k2js.translate.operation.UnaryOperationTranslator;
+import org.jetbrains.k2js.translate.reference.PropertyAccessTranslator;
+import org.jetbrains.k2js.translate.utils.BindingUtils;
+import org.jetbrains.k2js.translate.utils.TranslationUtils;
import java.util.List;
diff --git a/translator/src/org/jetbrains/k2js/translate/FunctionTranslator.java b/translator/src/org/jetbrains/k2js/translate/expression/FunctionTranslator.java
similarity index 95%
rename from translator/src/org/jetbrains/k2js/translate/FunctionTranslator.java
rename to translator/src/org/jetbrains/k2js/translate/expression/FunctionTranslator.java
index f4e27d15404..79a17e4bd2c 100644
--- a/translator/src/org/jetbrains/k2js/translate/FunctionTranslator.java
+++ b/translator/src/org/jetbrains/k2js/translate/expression/FunctionTranslator.java
@@ -1,9 +1,12 @@
-package org.jetbrains.k2js.translate;
+package org.jetbrains.k2js.translate.expression;
import com.google.dart.compiler.backend.js.ast.*;
import com.google.dart.compiler.util.AstUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.psi.*;
+import org.jetbrains.k2js.translate.general.AbstractTranslator;
+import org.jetbrains.k2js.translate.general.Translation;
+import org.jetbrains.k2js.translate.general.TranslationContext;
import java.util.ArrayList;
import java.util.List;
diff --git a/translator/src/org/jetbrains/k2js/translate/PatternTranslator.java b/translator/src/org/jetbrains/k2js/translate/expression/PatternTranslator.java
similarity index 91%
rename from translator/src/org/jetbrains/k2js/translate/PatternTranslator.java
rename to translator/src/org/jetbrains/k2js/translate/expression/PatternTranslator.java
index 5e30360a24b..9728e173a9b 100644
--- a/translator/src/org/jetbrains/k2js/translate/PatternTranslator.java
+++ b/translator/src/org/jetbrains/k2js/translate/expression/PatternTranslator.java
@@ -1,4 +1,4 @@
-package org.jetbrains.k2js.translate;
+package org.jetbrains.k2js.translate.expression;
import com.google.dart.compiler.backend.js.ast.JsExpression;
import com.google.dart.compiler.backend.js.ast.JsInvocation;
@@ -8,6 +8,12 @@ import com.google.dart.compiler.util.AstUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
import org.jetbrains.jet.lang.psi.*;
+import org.jetbrains.k2js.translate.general.AbstractTranslator;
+import org.jetbrains.k2js.translate.general.Translation;
+import org.jetbrains.k2js.translate.general.TranslationContext;
+import org.jetbrains.k2js.translate.utils.BindingUtils;
+import org.jetbrains.k2js.translate.utils.Namer;
+import org.jetbrains.k2js.translate.utils.TranslationUtils;
/**
* @author Talanov Pavel
diff --git a/translator/src/org/jetbrains/k2js/translate/WhenTranslator.java b/translator/src/org/jetbrains/k2js/translate/expression/WhenTranslator.java
similarity index 96%
rename from translator/src/org/jetbrains/k2js/translate/WhenTranslator.java
rename to translator/src/org/jetbrains/k2js/translate/expression/WhenTranslator.java
index f29ca1aa297..a4ea548ddf4 100644
--- a/translator/src/org/jetbrains/k2js/translate/WhenTranslator.java
+++ b/translator/src/org/jetbrains/k2js/translate/expression/WhenTranslator.java
@@ -1,10 +1,13 @@
-package org.jetbrains.k2js.translate;
+package org.jetbrains.k2js.translate.expression;
import com.google.dart.compiler.backend.js.ast.*;
import com.google.dart.compiler.util.AstUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.psi.*;
+import org.jetbrains.k2js.translate.general.AbstractTranslator;
+import org.jetbrains.k2js.translate.general.Translation;
+import org.jetbrains.k2js.translate.general.TranslationContext;
import java.util.ArrayList;
import java.util.List;
diff --git a/translator/src/org/jetbrains/k2js/translate/AbstractTranslator.java b/translator/src/org/jetbrains/k2js/translate/general/AbstractTranslator.java
similarity index 92%
rename from translator/src/org/jetbrains/k2js/translate/AbstractTranslator.java
rename to translator/src/org/jetbrains/k2js/translate/general/AbstractTranslator.java
index 42ee19733e8..e8e7cd87b0d 100644
--- a/translator/src/org/jetbrains/k2js/translate/AbstractTranslator.java
+++ b/translator/src/org/jetbrains/k2js/translate/general/AbstractTranslator.java
@@ -1,4 +1,4 @@
-package org.jetbrains.k2js.translate;
+package org.jetbrains.k2js.translate.general;
import com.google.dart.compiler.backend.js.ast.JsProgram;
import org.jetbrains.annotations.NotNull;
diff --git a/translator/src/org/jetbrains/k2js/translate/GenerationState.java b/translator/src/org/jetbrains/k2js/translate/general/GenerationState.java
similarity index 91%
rename from translator/src/org/jetbrains/k2js/translate/GenerationState.java
rename to translator/src/org/jetbrains/k2js/translate/general/GenerationState.java
index 2cf358d7698..e2a1d6f49ce 100644
--- a/translator/src/org/jetbrains/k2js/translate/GenerationState.java
+++ b/translator/src/org/jetbrains/k2js/translate/general/GenerationState.java
@@ -1,7 +1,7 @@
/*
* @author Talanov Pavel
*/
-package org.jetbrains.k2js.translate;
+package org.jetbrains.k2js.translate.general;
import com.google.dart.compiler.backend.js.ast.JsProgram;
import org.jetbrains.annotations.NotNull;
@@ -9,6 +9,7 @@ import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
import org.jetbrains.jet.lang.psi.JetNamespace;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.k2js.declarations.Declarations;
+import org.jetbrains.k2js.translate.utils.BindingUtils;
import java.util.List;
diff --git a/translator/src/org/jetbrains/k2js/translate/Translation.java b/translator/src/org/jetbrains/k2js/translate/general/Translation.java
similarity index 90%
rename from translator/src/org/jetbrains/k2js/translate/Translation.java
rename to translator/src/org/jetbrains/k2js/translate/general/Translation.java
index 2f0cf00fe1c..9e25f9cb70f 100644
--- a/translator/src/org/jetbrains/k2js/translate/Translation.java
+++ b/translator/src/org/jetbrains/k2js/translate/general/Translation.java
@@ -1,4 +1,4 @@
-package org.jetbrains.k2js.translate;
+package org.jetbrains.k2js.translate.general;
import com.google.dart.compiler.backend.js.ast.*;
import com.google.dart.compiler.util.AstUtil;
@@ -8,8 +8,15 @@ import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.k2js.declarations.Declarations;
import org.jetbrains.k2js.translate.declaration.ClassTranslator;
import org.jetbrains.k2js.translate.declaration.NamespaceTranslator;
+import org.jetbrains.k2js.translate.expression.ExpressionTranslator;
+import org.jetbrains.k2js.translate.expression.FunctionTranslator;
+import org.jetbrains.k2js.translate.expression.PatternTranslator;
+import org.jetbrains.k2js.translate.expression.WhenTranslator;
import org.jetbrains.k2js.translate.initializer.ClassInitializerTranslator;
import org.jetbrains.k2js.translate.initializer.NamespaceInitializerTranslator;
+import org.jetbrains.k2js.translate.reference.PropertyAccessTranslator;
+import org.jetbrains.k2js.translate.reference.ReferenceProvider;
+import org.jetbrains.k2js.translate.reference.ReferenceTranslator;
/**
* @author Talanov Pavel
diff --git a/translator/src/org/jetbrains/k2js/translate/TranslationContext.java b/translator/src/org/jetbrains/k2js/translate/general/TranslationContext.java
similarity index 98%
rename from translator/src/org/jetbrains/k2js/translate/TranslationContext.java
rename to translator/src/org/jetbrains/k2js/translate/general/TranslationContext.java
index 2dc5b37d4c2..1b8b7249b99 100644
--- a/translator/src/org/jetbrains/k2js/translate/TranslationContext.java
+++ b/translator/src/org/jetbrains/k2js/translate/general/TranslationContext.java
@@ -1,4 +1,4 @@
-package org.jetbrains.k2js.translate;
+package org.jetbrains.k2js.translate.general;
import com.google.dart.compiler.backend.js.ast.*;
import com.google.dart.compiler.util.AstUtil;
@@ -8,6 +8,7 @@ import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.k2js.declarations.Declarations;
+import org.jetbrains.k2js.translate.utils.BindingUtils;
/**
* @author Talanov Pavel
diff --git a/translator/src/org/jetbrains/k2js/translate/TranslatorVisitor.java b/translator/src/org/jetbrains/k2js/translate/general/TranslatorVisitor.java
similarity index 96%
rename from translator/src/org/jetbrains/k2js/translate/TranslatorVisitor.java
rename to translator/src/org/jetbrains/k2js/translate/general/TranslatorVisitor.java
index e69485051b6..9efecf47cb7 100644
--- a/translator/src/org/jetbrains/k2js/translate/TranslatorVisitor.java
+++ b/translator/src/org/jetbrains/k2js/translate/general/TranslatorVisitor.java
@@ -1,4 +1,4 @@
-package org.jetbrains.k2js.translate;
+package org.jetbrains.k2js.translate.general;
import com.google.dart.compiler.backend.js.ast.JsExpression;
import org.jetbrains.annotations.NotNull;
diff --git a/translator/src/org/jetbrains/k2js/translate/initializer/AbstractInitializerTranslator.java b/translator/src/org/jetbrains/k2js/translate/initializer/AbstractInitializerTranslator.java
index b521f40bd83..1291d6fadaf 100644
--- a/translator/src/org/jetbrains/k2js/translate/initializer/AbstractInitializerTranslator.java
+++ b/translator/src/org/jetbrains/k2js/translate/initializer/AbstractInitializerTranslator.java
@@ -6,9 +6,9 @@ import com.google.dart.compiler.backend.js.ast.JsScope;
import com.google.dart.compiler.backend.js.ast.JsStatement;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.psi.JetDeclaration;
-import org.jetbrains.k2js.translate.AbstractTranslator;
-import org.jetbrains.k2js.translate.Namer;
-import org.jetbrains.k2js.translate.TranslationContext;
+import org.jetbrains.k2js.translate.general.AbstractTranslator;
+import org.jetbrains.k2js.translate.general.TranslationContext;
+import org.jetbrains.k2js.translate.utils.Namer;
import java.util.List;
diff --git a/translator/src/org/jetbrains/k2js/translate/initializer/ClassInitializerTranslator.java b/translator/src/org/jetbrains/k2js/translate/initializer/ClassInitializerTranslator.java
index 310123b2779..33dd6323053 100644
--- a/translator/src/org/jetbrains/k2js/translate/initializer/ClassInitializerTranslator.java
+++ b/translator/src/org/jetbrains/k2js/translate/initializer/ClassInitializerTranslator.java
@@ -8,10 +8,10 @@ import org.jetbrains.jet.lang.psi.JetClass;
import org.jetbrains.jet.lang.psi.JetDelegationSpecifier;
import org.jetbrains.jet.lang.psi.JetDelegatorToSuperCall;
import org.jetbrains.jet.lang.psi.JetParameter;
-import org.jetbrains.k2js.translate.BindingUtils;
-import org.jetbrains.k2js.translate.Namer;
-import org.jetbrains.k2js.translate.TranslationContext;
-import org.jetbrains.k2js.translate.TranslationUtils;
+import org.jetbrains.k2js.translate.general.TranslationContext;
+import org.jetbrains.k2js.translate.utils.BindingUtils;
+import org.jetbrains.k2js.translate.utils.Namer;
+import org.jetbrains.k2js.translate.utils.TranslationUtils;
import java.util.ArrayList;
import java.util.List;
diff --git a/translator/src/org/jetbrains/k2js/translate/initializer/InitializerVisitor.java b/translator/src/org/jetbrains/k2js/translate/initializer/InitializerVisitor.java
index 42899657956..4acf0aa2667 100644
--- a/translator/src/org/jetbrains/k2js/translate/initializer/InitializerVisitor.java
+++ b/translator/src/org/jetbrains/k2js/translate/initializer/InitializerVisitor.java
@@ -5,10 +5,10 @@ import com.google.dart.compiler.backend.js.ast.JsStatement;
import com.google.dart.compiler.util.AstUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.psi.*;
-import org.jetbrains.k2js.translate.Translation;
-import org.jetbrains.k2js.translate.TranslationContext;
-import org.jetbrains.k2js.translate.TranslationUtils;
-import org.jetbrains.k2js.translate.TranslatorVisitor;
+import org.jetbrains.k2js.translate.general.Translation;
+import org.jetbrains.k2js.translate.general.TranslationContext;
+import org.jetbrains.k2js.translate.general.TranslatorVisitor;
+import org.jetbrains.k2js.translate.utils.TranslationUtils;
import java.util.ArrayList;
import java.util.Arrays;
diff --git a/translator/src/org/jetbrains/k2js/translate/initializer/NamespaceInitializerTranslator.java b/translator/src/org/jetbrains/k2js/translate/initializer/NamespaceInitializerTranslator.java
index 6c2e7999808..ddaaa807df4 100644
--- a/translator/src/org/jetbrains/k2js/translate/initializer/NamespaceInitializerTranslator.java
+++ b/translator/src/org/jetbrains/k2js/translate/initializer/NamespaceInitializerTranslator.java
@@ -5,7 +5,7 @@ import com.google.dart.compiler.backend.js.ast.JsScope;
import com.google.dart.compiler.util.AstUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.psi.JetNamespace;
-import org.jetbrains.k2js.translate.TranslationContext;
+import org.jetbrains.k2js.translate.general.TranslationContext;
/**
* @author Talanov Pavel
diff --git a/translator/src/org/jetbrains/k2js/translate/BinaryOperationTranslator.java b/translator/src/org/jetbrains/k2js/translate/operation/BinaryOperationTranslator.java
similarity index 95%
rename from translator/src/org/jetbrains/k2js/translate/BinaryOperationTranslator.java
rename to translator/src/org/jetbrains/k2js/translate/operation/BinaryOperationTranslator.java
index 1b0f6cd872b..360157b6d61 100644
--- a/translator/src/org/jetbrains/k2js/translate/BinaryOperationTranslator.java
+++ b/translator/src/org/jetbrains/k2js/translate/operation/BinaryOperationTranslator.java
@@ -1,4 +1,4 @@
-package org.jetbrains.k2js.translate;
+package org.jetbrains.k2js.translate.operation;
import com.google.dart.compiler.backend.js.ast.*;
import com.google.dart.compiler.util.AstUtil;
@@ -8,6 +8,9 @@ import org.jetbrains.jet.lang.psi.JetBinaryExpression;
import org.jetbrains.jet.lang.psi.JetExpression;
import org.jetbrains.jet.lang.types.expressions.OperatorConventions;
import org.jetbrains.jet.lexer.JetToken;
+import org.jetbrains.k2js.translate.general.Translation;
+import org.jetbrains.k2js.translate.general.TranslationContext;
+import org.jetbrains.k2js.translate.reference.PropertyAccessTranslator;
/**
* @author Talanov Pavel
diff --git a/translator/src/org/jetbrains/k2js/translate/OperationTranslator.java b/translator/src/org/jetbrains/k2js/translate/operation/OperationTranslator.java
similarity index 90%
rename from translator/src/org/jetbrains/k2js/translate/OperationTranslator.java
rename to translator/src/org/jetbrains/k2js/translate/operation/OperationTranslator.java
index c9992580437..7359b820e8c 100644
--- a/translator/src/org/jetbrains/k2js/translate/OperationTranslator.java
+++ b/translator/src/org/jetbrains/k2js/translate/operation/OperationTranslator.java
@@ -1,4 +1,4 @@
-package org.jetbrains.k2js.translate;
+package org.jetbrains.k2js.translate.operation;
import com.google.dart.compiler.backend.js.ast.JsExpression;
import com.google.dart.compiler.backend.js.ast.JsName;
@@ -9,6 +9,10 @@ import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import org.jetbrains.jet.lang.psi.JetExpression;
import org.jetbrains.jet.lang.psi.JetSimpleNameExpression;
+import org.jetbrains.k2js.translate.general.AbstractTranslator;
+import org.jetbrains.k2js.translate.general.Translation;
+import org.jetbrains.k2js.translate.general.TranslationContext;
+import org.jetbrains.k2js.translate.utils.BindingUtils;
/**
* @author Talanov Pavel
diff --git a/translator/src/org/jetbrains/k2js/translate/OperatorTable.java b/translator/src/org/jetbrains/k2js/translate/operation/OperatorTable.java
similarity index 95%
rename from translator/src/org/jetbrains/k2js/translate/OperatorTable.java
rename to translator/src/org/jetbrains/k2js/translate/operation/OperatorTable.java
index 90c2010255d..6501349a548 100644
--- a/translator/src/org/jetbrains/k2js/translate/OperatorTable.java
+++ b/translator/src/org/jetbrains/k2js/translate/operation/OperatorTable.java
@@ -1,4 +1,4 @@
-package org.jetbrains.k2js.translate;
+package org.jetbrains.k2js.translate.operation;
import com.google.dart.compiler.backend.js.ast.JsBinaryOperator;
import com.google.dart.compiler.backend.js.ast.JsInvocation;
@@ -8,6 +8,7 @@ import com.google.dart.compiler.util.AstUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lexer.JetToken;
import org.jetbrains.jet.lexer.JetTokens;
+import org.jetbrains.k2js.translate.utils.Namer;
import java.util.HashMap;
import java.util.Map;
@@ -59,7 +60,7 @@ public final class OperatorTable {
return binaryOperatorsMap.containsKey(token);
}
- static boolean hasCorrespondingFunctionInvocation(@NotNull JetToken token) {
+ public static boolean hasCorrespondingFunctionInvocation(@NotNull JetToken token) {
return operatorToFunctionNameReference.containsKey(token);
}
diff --git a/translator/src/org/jetbrains/k2js/translate/UnaryOperationTranslator.java b/translator/src/org/jetbrains/k2js/translate/operation/UnaryOperationTranslator.java
similarity index 96%
rename from translator/src/org/jetbrains/k2js/translate/UnaryOperationTranslator.java
rename to translator/src/org/jetbrains/k2js/translate/operation/UnaryOperationTranslator.java
index 2606605eab9..f9e7cd63ccc 100644
--- a/translator/src/org/jetbrains/k2js/translate/UnaryOperationTranslator.java
+++ b/translator/src/org/jetbrains/k2js/translate/operation/UnaryOperationTranslator.java
@@ -1,4 +1,4 @@
-package org.jetbrains.k2js.translate;
+package org.jetbrains.k2js.translate.operation;
import com.google.dart.compiler.backend.js.ast.*;
import com.google.dart.compiler.util.AstUtil;
@@ -8,6 +8,10 @@ import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lexer.JetToken;
import org.jetbrains.jet.lexer.JetTokens;
+import org.jetbrains.k2js.translate.general.Translation;
+import org.jetbrains.k2js.translate.general.TranslationContext;
+import org.jetbrains.k2js.translate.reference.PropertyAccessTranslator;
+import org.jetbrains.k2js.translate.utils.BindingUtils;
/**
diff --git a/translator/src/org/jetbrains/k2js/translate/PropertyAccessTranslator.java b/translator/src/org/jetbrains/k2js/translate/reference/PropertyAccessTranslator.java
similarity index 95%
rename from translator/src/org/jetbrains/k2js/translate/PropertyAccessTranslator.java
rename to translator/src/org/jetbrains/k2js/translate/reference/PropertyAccessTranslator.java
index 737fce75042..f1d4d5123de 100644
--- a/translator/src/org/jetbrains/k2js/translate/PropertyAccessTranslator.java
+++ b/translator/src/org/jetbrains/k2js/translate/reference/PropertyAccessTranslator.java
@@ -1,4 +1,4 @@
-package org.jetbrains.k2js.translate;
+package org.jetbrains.k2js.translate.reference;
import com.google.dart.compiler.backend.js.ast.JsExpression;
import com.google.dart.compiler.backend.js.ast.JsInvocation;
@@ -16,6 +16,11 @@ import org.jetbrains.jet.lang.psi.JetExpression;
import org.jetbrains.jet.lang.psi.JetQualifiedExpression;
import org.jetbrains.jet.lang.psi.JetSimpleNameExpression;
import org.jetbrains.jet.lang.resolve.calls.ResolvedCall;
+import org.jetbrains.k2js.translate.general.AbstractTranslator;
+import org.jetbrains.k2js.translate.general.Translation;
+import org.jetbrains.k2js.translate.general.TranslationContext;
+import org.jetbrains.k2js.translate.utils.BindingUtils;
+import org.jetbrains.k2js.translate.utils.TranslationUtils;
/**
* @author Talanov Pavel
diff --git a/translator/src/org/jetbrains/k2js/translate/ReferenceProvider.java b/translator/src/org/jetbrains/k2js/translate/reference/ReferenceProvider.java
similarity index 94%
rename from translator/src/org/jetbrains/k2js/translate/ReferenceProvider.java
rename to translator/src/org/jetbrains/k2js/translate/reference/ReferenceProvider.java
index 3d53b06d604..1262f7f2ad8 100644
--- a/translator/src/org/jetbrains/k2js/translate/ReferenceProvider.java
+++ b/translator/src/org/jetbrains/k2js/translate/reference/ReferenceProvider.java
@@ -1,4 +1,4 @@
-package org.jetbrains.k2js.translate;
+package org.jetbrains.k2js.translate.reference;
import com.google.dart.compiler.backend.js.ast.JsName;
import com.google.dart.compiler.backend.js.ast.JsNameRef;
@@ -6,6 +6,7 @@ import com.google.dart.compiler.util.AstUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.psi.JetSimpleNameExpression;
import org.jetbrains.jet.lexer.JetTokens;
+import org.jetbrains.k2js.translate.general.TranslationContext;
/**
* @author Talanov Pavel
diff --git a/translator/src/org/jetbrains/k2js/translate/ReferenceTranslator.java b/translator/src/org/jetbrains/k2js/translate/reference/ReferenceTranslator.java
similarity index 86%
rename from translator/src/org/jetbrains/k2js/translate/ReferenceTranslator.java
rename to translator/src/org/jetbrains/k2js/translate/reference/ReferenceTranslator.java
index 5c63123f01d..e474a950665 100644
--- a/translator/src/org/jetbrains/k2js/translate/ReferenceTranslator.java
+++ b/translator/src/org/jetbrains/k2js/translate/reference/ReferenceTranslator.java
@@ -1,4 +1,4 @@
-package org.jetbrains.k2js.translate;
+package org.jetbrains.k2js.translate.reference;
import com.google.dart.compiler.backend.js.ast.JsExpression;
import com.google.dart.compiler.backend.js.ast.JsInvocation;
@@ -7,6 +7,11 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import org.jetbrains.jet.lang.psi.JetSimpleNameExpression;
+import org.jetbrains.k2js.translate.general.AbstractTranslator;
+import org.jetbrains.k2js.translate.general.Translation;
+import org.jetbrains.k2js.translate.general.TranslationContext;
+import org.jetbrains.k2js.translate.utils.BindingUtils;
+import org.jetbrains.k2js.translate.utils.TranslationUtils;
/**
* @author Talanov Pavel
@@ -23,7 +28,7 @@ public class ReferenceTranslator extends AbstractTranslator {
}
@NotNull
- JsExpression translateSimpleName(@NotNull JetSimpleNameExpression expression) {
+ public JsExpression translateSimpleName(@NotNull JetSimpleNameExpression expression) {
JsExpression result = resolveAsPropertyAccess(expression);
if (result != null) {
return result;
diff --git a/translator/src/org/jetbrains/k2js/translate/BindingUtils.java b/translator/src/org/jetbrains/k2js/translate/utils/BindingUtils.java
similarity index 99%
rename from translator/src/org/jetbrains/k2js/translate/BindingUtils.java
rename to translator/src/org/jetbrains/k2js/translate/utils/BindingUtils.java
index f13e1a0e41f..cc06d10380d 100644
--- a/translator/src/org/jetbrains/k2js/translate/BindingUtils.java
+++ b/translator/src/org/jetbrains/k2js/translate/utils/BindingUtils.java
@@ -1,4 +1,4 @@
-package org.jetbrains.k2js.translate;
+package org.jetbrains.k2js.translate.utils;
import com.intellij.psi.PsiElement;
import org.jetbrains.annotations.NotNull;
diff --git a/translator/src/org/jetbrains/k2js/translate/Namer.java b/translator/src/org/jetbrains/k2js/translate/utils/Namer.java
similarity index 98%
rename from translator/src/org/jetbrains/k2js/translate/Namer.java
rename to translator/src/org/jetbrains/k2js/translate/utils/Namer.java
index c912338f3c0..82fd9e373de 100644
--- a/translator/src/org/jetbrains/k2js/translate/Namer.java
+++ b/translator/src/org/jetbrains/k2js/translate/utils/Namer.java
@@ -1,4 +1,4 @@
-package org.jetbrains.k2js.translate;
+package org.jetbrains.k2js.translate.utils;
import com.google.dart.compiler.backend.js.ast.JsNameRef;
import com.google.dart.compiler.util.AstUtil;
diff --git a/translator/src/org/jetbrains/k2js/translate/TranslationUtils.java b/translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java
similarity index 95%
rename from translator/src/org/jetbrains/k2js/translate/TranslationUtils.java
rename to translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java
index 46e9e782590..2b48825fb9a 100644
--- a/translator/src/org/jetbrains/k2js/translate/TranslationUtils.java
+++ b/translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java
@@ -1,4 +1,4 @@
-package org.jetbrains.k2js.translate;
+package org.jetbrains.k2js.translate.utils;
import com.google.dart.compiler.backend.js.ast.*;
import com.google.dart.compiler.util.AstUtil;
@@ -9,6 +9,9 @@ import org.jetbrains.jet.lang.psi.JetExpression;
import org.jetbrains.jet.lang.psi.JetProperty;
import org.jetbrains.jet.lang.psi.JetSimpleNameExpression;
import org.jetbrains.jet.lang.psi.ValueArgument;
+import org.jetbrains.k2js.translate.general.Translation;
+import org.jetbrains.k2js.translate.general.TranslationContext;
+import org.jetbrains.k2js.translate.reference.ReferenceProvider;
import java.util.ArrayList;
import java.util.List;
diff --git a/translator/src/org/jetbrains/k2js/utils/ClassSorter.java b/translator/src/org/jetbrains/k2js/utils/ClassSorter.java
index cd43068fe3a..2b47930292c 100644
--- a/translator/src/org/jetbrains/k2js/utils/ClassSorter.java
+++ b/translator/src/org/jetbrains/k2js/utils/ClassSorter.java
@@ -4,7 +4,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
import org.jetbrains.jet.lang.psi.JetClass;
import org.jetbrains.jet.lang.resolve.BindingContext;
-import org.jetbrains.k2js.translate.BindingUtils;
+import org.jetbrains.k2js.translate.utils.BindingUtils;
import java.util.ArrayList;
import java.util.List;