diff --git a/.idea/.name b/.idea/.name
new file mode 100644
index 00000000000..ba369d30c07
--- /dev/null
+++ b/.idea/.name
@@ -0,0 +1 @@
+jet
\ No newline at end of file
diff --git a/.idea/ant.xml b/.idea/ant.xml
new file mode 100644
index 00000000000..2581ca3fe84
--- /dev/null
+++ b/.idea/ant.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 00000000000..a1b41c52c72
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml
new file mode 100644
index 00000000000..3572571ad83
--- /dev/null
+++ b/.idea/copyright/profiles_settings.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
new file mode 100644
index 00000000000..e206d70d859
--- /dev/null
+++ b/.idea/encodings.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 00000000000..6159fa0c023
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ http://www.w3.org/1999/xhtml
+
+
+
+
+
+
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 00000000000..4c925202c69
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml
new file mode 100644
index 00000000000..3b000203088
--- /dev/null
+++ b/.idea/uiDesigner.xml
@@ -0,0 +1,125 @@
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
+
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 00000000000..275077f8255
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/idea/idea.iml b/idea/idea.iml
new file mode 100644
index 00000000000..60a321a1ac4
--- /dev/null
+++ b/idea/idea.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/idea/src/org/jetbrains/jet/lexer/Jet.flex b/idea/src/org/jetbrains/jet/lexer/Jet.flex
new file mode 100644
index 00000000000..c6377c9d7b6
--- /dev/null
+++ b/idea/src/org/jetbrains/jet/lexer/Jet.flex
@@ -0,0 +1,234 @@
+/* It's an automatically generated code. Do not modify it. */
+package org.jetbrains.jet.lexer;
+
+import com.intellij.lexer.*;
+import com.intellij.psi.*;
+import com.intellij.psi.tree.IElementType;
+
+
+%%
+
+%unicode
+%class _JetLexer
+%implements FlexLexer
+%function advance
+%type IElementType
+%eof{ return;
+%eof}
+
+DIGIT=[0-9]
+HEX_DIGIT=[0-9A-Fa-f]
+WHITE_SPACE_CHAR=[\ \n\t\f]
+BINARY_DIGIT=[0-1]
+
+IDENTIFIER=[:jletter:] [:jletterdigit:]*
+
+EOL_ESC=\\[\ \t]*\n
+NON_EOL=[^\n]|{EOL_ESC}
+
+BLOCK_COMMENT=("/*" {COMMENT_TAIL})|"/*"
+COMMENT_TAIL=([^"*"]*("*"+[^"*""/"])?)*("*"+"/")?
+EOL_COMMENT="/""/"{NON_EOL}*
+
+INTEGER_LITERAL=({DECIMAL_INTEGER_LITERAL}|{HEX_INTEGER_LITERAL}|{BINARY_INTEGER_LITERAL})
+DECIMAL_INTEGER_LITERAL=(0|([1-9]({DIGIT})*))
+HEX_INTEGER_LITERAL=0[Xx]({HEX_DIGIT})*
+BINARY_INTEGER_LITERAL=0[Bb]({BINARY_DIGIT})+
+
+FLOAT_LITERAL=(({FLOATING_POINT_LITERAL1})[Ff])|(({FLOATING_POINT_LITERAL2})[Ff])|(({FLOATING_POINT_LITERAL3})[Ff])|(({FLOATING_POINT_LITERAL4})[Ff])
+DOUBLE_LITERAL=(({FLOATING_POINT_LITERAL1})[Ll]?)|(({FLOATING_POINT_LITERAL2})[Ll]?)|(({FLOATING_POINT_LITERAL3})[Ll]?)|(({FLOATING_POINT_LITERAL4})[Ll])
+FLOATING_POINT_LITERAL1=({DIGIT})+"."({DIGIT})*({EXPONENT_PART})?
+FLOATING_POINT_LITERAL2="."({DIGIT})+({EXPONENT_PART})?
+FLOATING_POINT_LITERAL3=({DIGIT})+({EXPONENT_PART})
+FLOATING_POINT_LITERAL4=({DIGIT})+
+EXPONENT_PART=[Ee]["+""-"]?({DIGIT})*
+HEX_FLOAT_LITERAL={HEX_SIGNIFICANT}{BINARY_EXPONENT}[Ff]
+HEX_DOUBLE_LITERAL={HEX_SIGNIFICANT}{BINARY_EXPONENT}[Ll]?
+BINARY_EXPONENT=[Pp][+-]?{DIGIT}+
+HEX_SIGNIFICANT={HEX_INTEGER_LITERAL}|{HEX_INTEGER_LITERAL}.|0[Xx]{HEX_DIGIT}*.{HEX_DIGIT}+
+
+CHARACTER_LITERAL=[L]?"'"([^\\\'\n]|{ESCAPE_SEQUENCE})*("'"|\\)?
+STRING_LITERAL=\"([^\\\"\n]|{ESCAPE_SEQUENCE})*(\"|\\)?
+ESCAPE_SEQUENCE=\\[^\n]|{EOL_ESC}
+
+NON_EOL_WS=[\ \t]|{EOL_ESC}
+PRP=# {NON_EOL_WS}*
+
+DIRECTIVE_CONTENT=({NON_EOL}|{BLOCK_COMMENT})*
+
+%state DIRECTIVE
+
+%%
+
+
+ {BLOCK_COMMENT} { return OCTokenTypes.BLOCK_COMMENT; }
+
+ {DIRECTIVE_CONTENT} {return OCTokenTypes.DIRECTIVE_CONTENT; }
+ ({WHITE_SPACE_CHAR}|{EOL_ESC})+ { yybegin(YYINITIAL); return TokenType.WHITE_SPACE; }
+
+ {EOL_COMMENT} { return OCTokenTypes.EOL_COMMENT; }
+
+ {INTEGER_LITERAL} { return OCTokenTypes.INTEGER_LITERAL; }
+
+ {FLOAT_LITERAL} { return OCTokenTypes.FLOAT_LITERAL; }
+ {HEX_FLOAT_LITERAL} { return OCTokenTypes.FLOAT_LITERAL; }
+ {DOUBLE_LITERAL} { return OCTokenTypes.FLOAT_LITERAL; }
+ {HEX_DOUBLE_LITERAL} { return OCTokenTypes.FLOAT_LITERAL; }
+
+ {CHARACTER_LITERAL} { return OCTokenTypes.CHARACTER_LITERAL; }
+ "@" {STRING_LITERAL} { return OCTokenTypes.NSSTRING_LITERAL; }
+ {STRING_LITERAL} { return OCTokenTypes.STRING_LITERAL; }
+
+ {PRP} "if" { yybegin(DIRECTIVE); return OCTokenTypes.IF_DIRECTIVE ;}
+ {PRP} "ifdef" { yybegin(DIRECTIVE); return OCTokenTypes.IFDEF_DIRECTIVE ;}
+ {PRP} "ifndef" { yybegin(DIRECTIVE); return OCTokenTypes.IFNDEF_DIRECTIVE ;}
+ {PRP} "elif" { yybegin(DIRECTIVE); return OCTokenTypes.ELIF_DIRECTIVE ;}
+ {PRP} "else" { yybegin(DIRECTIVE); return OCTokenTypes.ELSE_DIRECTIVE ;}
+ {PRP} "endif" { yybegin(DIRECTIVE); return OCTokenTypes.ENDIF_DIRECTIVE ;}
+ {PRP} "include" { yybegin(DIRECTIVE); return OCTokenTypes.INCLUDE_DIRECTIVE;}
+ {PRP} "include_next" { yybegin(DIRECTIVE); return OCTokenTypes.INCLUDE_NEXT_DIRECTIVE;}
+ {PRP} "import" { yybegin(DIRECTIVE); return OCTokenTypes.IMPORT_DIRECTIVE ;}
+ {PRP} "define" { yybegin(DIRECTIVE); return OCTokenTypes.DEFINE_DIRECTIVE ;}
+ {PRP} "undef" { yybegin(DIRECTIVE); return OCTokenTypes.UNDEF_DIRECTIVE ;}
+ {PRP} "line" { yybegin(DIRECTIVE); return OCTokenTypes.LINE_DIRECTIVE ;}
+ {PRP} "error" { yybegin(DIRECTIVE); return OCTokenTypes.ERROR_DIRECTIVE ;}
+ {PRP} "warning" { yybegin(DIRECTIVE); return OCTokenTypes.WARNING_DIRECTIVE ;}
+ {PRP} "pragma" { yybegin(DIRECTIVE); return OCTokenTypes.PRAGMA_DIRECTIVE ;}
+ "#" {IDENTIFIER} { return OCTokenTypes.UNKNOWN_DIRECTIVE; }
+
+ "auto" { return OCTokenTypes.AUTO_KEYWORD; }
+ "break" { return OCTokenTypes.BREAK_KEYWORD; }
+ "case" { return OCTokenTypes.CASE_KEYWORD; }
+ "char" { return OCTokenTypes.CHAR_KEYWORD; }
+ "continue" { return OCTokenTypes.CONTINUE_KEYWORD; }
+ "default" { return OCTokenTypes.DEFAULT_KEYWORD; }
+ "do" { return OCTokenTypes.DO_KEYWORD; }
+ "double" { return OCTokenTypes.DOUBLE_KEYWORD; }
+ "else" { return OCTokenTypes.ELSE_KEYWORD; }
+ "enum" { return OCTokenTypes.ENUM_KEYWORD; }
+ "extern" { return OCTokenTypes.EXTERN_KEYWORD; }
+ "float" { return OCTokenTypes.FLOAT_KEYWORD; }
+ "for" { return OCTokenTypes.FOR_KEYWORD; }
+ "goto" { return OCTokenTypes.GOTO_KEYWORD; }
+ "if" { return OCTokenTypes.IF_KEYWORD; }
+
+ "const" { return OCTokenTypes.CONST_KEYWORD; }
+ "__const" { return OCTokenTypes.CONST_KEYWORD; }
+ "__const__" { return OCTokenTypes.CONST_KEYWORD; }
+
+ "inline" { return OCTokenTypes.INLINE_KEYWORD; }
+ "__inline" { return OCTokenTypes.INLINE_KEYWORD; }
+ "__inline__" { return OCTokenTypes.INLINE_KEYWORD; }
+
+ "signed" { return OCTokenTypes.SIGNED_KEYWORD; }
+ "__signed" { return OCTokenTypes.SIGNED_KEYWORD; }
+ "__signed__" { return OCTokenTypes.SIGNED_KEYWORD; }
+
+ "volatile" { return OCTokenTypes.VOLATILE_KEYWORD; }
+ "__volatile" { return OCTokenTypes.VOLATILE_KEYWORD; }
+ "__volatile__" { return OCTokenTypes.VOLATILE_KEYWORD; }
+
+ "int" { return OCTokenTypes.INT_KEYWORD; }
+ "long" { return OCTokenTypes.LONG_KEYWORD; }
+ "register" { return OCTokenTypes.REGISTER_KEYWORD; }
+ "restrict" { return OCTokenTypes.RESTRICT_KEYWORD; }
+ "__strong" { return OCTokenTypes.STRONG_KEYWORD; }
+ "__weak" { return OCTokenTypes.WEAK_KEYWORD; }
+ "__block" { return OCTokenTypes.BLOCK_KEYWORD; }
+ "return" { return OCTokenTypes.RETURN_KEYWORD; }
+ "short" { return OCTokenTypes.SHORT_KEYWORD; }
+ "sizeof" { return OCTokenTypes.SIZEOF_KEYWORD; }
+ "__alignof__" { return OCTokenTypes.ALIGNOF_KEYWORD; }
+ "__typeof__" { return OCTokenTypes.TYPEOF_KEYWORD; }
+ "static" { return OCTokenTypes.STATIC_KEYWORD; }
+ "struct" { return OCTokenTypes.STRUCT_KEYWORD; }
+ "switch" { return OCTokenTypes.SWITCH_KEYWORD; }
+ "typedef" { return OCTokenTypes.TYPEDEF_KEYWORD; }
+ "union" { return OCTokenTypes.UNION_KEYWORD; }
+ "unsigned" { return OCTokenTypes.UNSIGNED_KEYWORD; }
+ "void" { return OCTokenTypes.VOID_KEYWORD; }
+ "while" { return OCTokenTypes.WHILE_KEYWORD; }
+ "_Bool" { return OCTokenTypes._BOOL_KEYWORD; }
+ "_Complex" { return OCTokenTypes._COMPLEX_KEYWORD; }
+ "_Imaginary" { return OCTokenTypes._IMAGINARY_KEYWORD; }
+ "__attribute__" { return OCTokenTypes.__ATTRIBUTE_KEYWORD; }
+ "__asm" { return OCTokenTypes.__ASM_KEYWORD; }
+
+ "@interface" { return OCTokenTypes.INTERFACE_KEYWORD ; }
+ "@implementation" { return OCTokenTypes.IMPLEMENTATION_KEYWORD; }
+ "@protocol" { return OCTokenTypes.PROTOCOL_KEYWORD ; }
+ "@end" { return OCTokenTypes.END_KEYWORD ; }
+ "@private" { return OCTokenTypes.PRIVATE_KEYWORD ; }
+ "@protected" { return OCTokenTypes.PROTECTED_KEYWORD ; }
+ "@public" { return OCTokenTypes.PUBLIC_KEYWORD ; }
+ "@package" { return OCTokenTypes.PACKAGE_KEYWORD ; }
+ "@optional" { return OCTokenTypes.OPTIONAL_KEYWORD ; }
+ "@required" { return OCTokenTypes.REQUIRED_KEYWORD ; }
+ "@try" { return OCTokenTypes.TRY_KEYWORD ; }
+ "@throw" { return OCTokenTypes.THROW_KEYWORD ; }
+ "@catch" { return OCTokenTypes.CATCH_KEYWORD ; }
+ "@finally" { return OCTokenTypes.FINALLY_KEYWORD ; }
+ "@class" { return OCTokenTypes.CLASS_KEYWORD ; }
+ "@selector" { return OCTokenTypes.SELECTOR_KEYWORD ; }
+ "@encode" { return OCTokenTypes.ENCODE_KEYWORD ; }
+ "@synchronized" { return OCTokenTypes.SYNCHRONIZED_KEYWORD ; }
+ "@property" { return OCTokenTypes.PROPERTY_KEYWORD ; }
+ "@synthesize" { return OCTokenTypes.SYNTHESIZE_KEYWORD ; }
+ "@dynamic" { return OCTokenTypes.DYNAMIC_KEYWORD ; }
+ "@" {IDENTIFIER} { return OCTokenTypes.UNKNOWN_AT_KEYWORD ; }
+
+ {IDENTIFIER} { return OCTokenTypes.IDENTIFIER; }
+
+ "[" { return OCTokenTypes.LBRACKET ; }
+ "]" { return OCTokenTypes.RBRACKET ; }
+ "{" { return OCTokenTypes.LBRACE ; }
+ "}" { return OCTokenTypes.RBRACE ; }
+ "(" { return OCTokenTypes.LPAR ; }
+ ")" { return OCTokenTypes.RPAR ; }
+ "." { return OCTokenTypes.DOT ; }
+ "->" { return OCTokenTypes.DEREF ; }
+ "++" { return OCTokenTypes.PLUSPLUS ; }
+ "--" { return OCTokenTypes.MINUSMINUS; }
+ "&" { return OCTokenTypes.AND ; }
+ "*" { return OCTokenTypes.MUL ; }
+ "+" { return OCTokenTypes.PLUS ; }
+ "-" { return OCTokenTypes.MINUS ; }
+ "~" { return OCTokenTypes.TILDE ; }
+ "!" { return OCTokenTypes.EXCL ; }
+ "/" { return OCTokenTypes.DIV ; }
+ "%" { return OCTokenTypes.PERC ; }
+ "<<" { return OCTokenTypes.LTLT ; }
+ ">>" { return OCTokenTypes.GTGT ; }
+ "<" { return OCTokenTypes.LT ; }
+ ">" { return OCTokenTypes.GT ; }
+ "<=" { return OCTokenTypes.LTEQ ; }
+ ">=" { return OCTokenTypes.GTEQ ; }
+ "==" { return OCTokenTypes.EQEQ ; }
+ "!=" { return OCTokenTypes.EXCLEQ ; }
+ "^" { return OCTokenTypes.XOR ; }
+ "|" { return OCTokenTypes.OR ; }
+ "&&" { return OCTokenTypes.ANDAND ; }
+ "||" { return OCTokenTypes.OROR ; }
+ "?" { return OCTokenTypes.QUEST ; }
+ ":" { return OCTokenTypes.COLON ; }
+ ";" { return OCTokenTypes.SEMICOLON ; }
+ "..." { return OCTokenTypes.ELLIPSIS ; }
+ "=" { return OCTokenTypes.EQ ; }
+ "*=" { return OCTokenTypes.MULTEQ ; }
+ "/=" { return OCTokenTypes.DIVEQ ; }
+ "%=" { return OCTokenTypes.PERCEQ ; }
+ "+=" { return OCTokenTypes.PLUSEQ ; }
+ "-=" { return OCTokenTypes.MINUSEQ ; }
+ "<<=" { return OCTokenTypes.LTLTEQ ; }
+ ">>=" { return OCTokenTypes.GTGTEQ ; }
+ "&=" { return OCTokenTypes.ANDEQ ; }
+ "^=" { return OCTokenTypes.XOREQ ; }
+ "|=" { return OCTokenTypes.OREQ ; }
+ "," { return OCTokenTypes.COMMA ; }
+ "#" { return OCTokenTypes.HASH ; }
+ "<#" { return OCTokenTypes.TEMPLATE_START_MARK; }
+ "#>" { return OCTokenTypes.TEMPLATE_STOP_MARK; }
+ "##" { return OCTokenTypes.HASHHASH ; }
+
+ . { yybegin(YYINITIAL); return TokenType.BAD_CHARACTER; }
+