Bug 577414: Adapt to use common status code pattern

Change-Id: I2b4f18899a776dd9fb58adbd1297848a47b4f1c9
diff --git a/r/org.eclipse.statet.r.core-tests/src/org/eclipse/statet/internal/r/core/rmodel/SyntaxProblemReporterTest.java b/r/org.eclipse.statet.r.core-tests/src/org/eclipse/statet/internal/r/core/rmodel/SyntaxProblemReporterTest.java
index 774afb1..bb3e1c9 100644
--- a/r/org.eclipse.statet.r.core-tests/src/org/eclipse/statet/internal/r/core/rmodel/SyntaxProblemReporterTest.java
+++ b/r/org.eclipse.statet.r.core-tests/src/org/eclipse/statet/internal/r/core/rmodel/SyntaxProblemReporterTest.java
@@ -59,7 +59,7 @@
 		problems= collectProblems("   'abc \\U{11F0F0} e' ");
 		assertEquals(1, problems.size());
 		assertProblem(Problem.SEVERITY_ERROR,
-				RSourceConstants.STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_CODEPOINT_INVALID,
+				RSourceConstants.TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_CODEPOINT_INVALID,
 				"Syntax Error/Invalid String: the specified code point U+11F0F0 is invalid.",
 				8, 10,
 				problems.get(0) );
@@ -73,7 +73,7 @@
 		problems= collectProblems("   r\" + 2");
 		assertEquals(1, problems.size());
 		assertProblem(Problem.SEVERITY_ERROR,
-				RSourceConstants.STATUS12_SYNTAX_TOKEN_OPENING_INCOMPLETE,
+				RSourceConstants.TYPE12_SYNTAX_TOKEN_OPENING_INCOMPLETE,
 				"Syntax Error/Invalid Character String: the opening delimiter for raw string literal is incomplete.",
 				3, 2,
 				problems.get(0) );
@@ -82,7 +82,7 @@
 		problems= collectProblems("   R\'---");
 		assertEquals(1, problems.size());
 		assertProblem(Problem.SEVERITY_ERROR,
-				RSourceConstants.STATUS12_SYNTAX_TOKEN_OPENING_INCOMPLETE,
+				RSourceConstants.TYPE12_SYNTAX_TOKEN_OPENING_INCOMPLETE,
 				"Syntax Error/Invalid Character String: the opening delimiter for raw string literal is incomplete.",
 				3, 5,
 				problems.get(0) );
@@ -95,7 +95,7 @@
 		problems= collectProblems("   r\"(abc)");
 		assertEquals(1, problems.size());
 		assertProblem(Problem.SEVERITY_ERROR,
-				RSourceConstants.STATUS12_SYNTAX_TOKEN_NOT_CLOSED,
+				RSourceConstants.TYPE12_SYNTAX_TOKEN_NOT_CLOSED,
 				"Syntax Error/Unclosed Character String: the raw string literal › abc) ‹ is not closed; delimiter › )\" ‹ expected.",
 				3, 7,
 				problems.get(0) );
@@ -104,7 +104,7 @@
 		problems= collectProblems("   R\'---{abc");
 		assertEquals(1, problems.size());
 		assertProblem(Problem.SEVERITY_ERROR,
-				RSourceConstants.STATUS12_SYNTAX_TOKEN_NOT_CLOSED,
+				RSourceConstants.TYPE12_SYNTAX_TOKEN_NOT_CLOSED,
 				"Syntax Error/Unclosed Character String: the raw string literal › abc ‹ is not closed; delimiter › }---' ‹ expected.",
 				3, 9,
 				problems.get(0) );
@@ -113,7 +113,7 @@
 		problems= collectProblems("   R\'---{a\tbc");
 		assertEquals(1, problems.size());
 		assertProblem(Problem.SEVERITY_ERROR,
-				RSourceConstants.STATUS12_SYNTAX_TOKEN_NOT_CLOSED,
+				RSourceConstants.TYPE12_SYNTAX_TOKEN_NOT_CLOSED,
 				"Syntax Error/Unclosed Character String: the raw string literal › a\\tbc ‹ is not closed; delimiter › }---' ‹ expected.",
 				3, 10,
 				problems.get(0) );
@@ -127,7 +127,7 @@
 		problems= collectProblems("   r\"(ab\u0000c)\"  ");
 		assertEquals(1, problems.size());
 		assertProblem(Problem.SEVERITY_ERROR,
-				RSourceConstants.STATUS123_SYNTAX_TEXT_NULLCHAR,
+				RSourceConstants.TYPE123_SYNTAX_TEXT_NULLCHAR,
 				"Syntax Error/Invalid String: null character is not allowed.",
 				8, 1,
 				problems.get(0) );
@@ -141,7 +141,7 @@
 		problems= collectProblems("   function;\n");
 		assertEquals(1, problems.size());
 		assertProblem(Problem.SEVERITY_ERROR,
-				RSourceConstants.STATUS12_SYNTAX_FDEF_ARGS_MISSING,
+				RSourceConstants.TYPE12_SYNTAX_FDEF_ARGS_MISSING,
 				"Syntax Error/Incomplete Statement: function argument list is missing, › ( ‹ expected.",
 				3 + 8 - 1, 2,
 				problems.get(0) );
@@ -149,7 +149,7 @@
 		problems= collectProblems("function");
 		assertEquals(1, problems.size());
 		assertProblem(Problem.SEVERITY_ERROR,
-				RSourceConstants.STATUS12_SYNTAX_FDEF_ARGS_MISSING,
+				RSourceConstants.TYPE12_SYNTAX_FDEF_ARGS_MISSING,
 				"Syntax Error/Incomplete Statement: function argument list is missing, › ( ‹ expected.",
 				8 - 1, 1,
 				problems.get(0) );
@@ -157,7 +157,7 @@
 		problems= collectProblems("   \\   ");
 		assertEquals(1, problems.size());
 		assertProblem(Problem.SEVERITY_ERROR,
-				RSourceConstants.STATUS12_SYNTAX_FDEF_ARGS_MISSING,
+				RSourceConstants.TYPE12_SYNTAX_FDEF_ARGS_MISSING,
 				"Syntax Error/Incomplete Statement: function argument list is missing, › ( ‹ expected.",
 				3, 2,
 				problems.get(0) );
@@ -170,7 +170,7 @@
 		problems= collectProblems("   function(x;\n");
 		assertEquals(1, problems.size());
 		assertProblem(Problem.SEVERITY_ERROR,
-				RSourceConstants.STATUS12_SYNTAX_FDEF_ARGS_NOT_CLOSED,
+				RSourceConstants.TYPE12_SYNTAX_FDEF_ARGS_NOT_CLOSED,
 				"Syntax Error/Incomplete Statement: function argument list is not closed, › ) ‹ expected.",
 				3 + 8 + 1, 2,
 				problems.get(0) );
@@ -178,7 +178,7 @@
 		problems= collectProblems("function(x");
 		assertEquals(1, problems.size());
 		assertProblem(Problem.SEVERITY_ERROR,
-				RSourceConstants.STATUS12_SYNTAX_FDEF_ARGS_NOT_CLOSED,
+				RSourceConstants.TYPE12_SYNTAX_FDEF_ARGS_NOT_CLOSED,
 				"Syntax Error/Incomplete Statement: function argument list is not closed, › ) ‹ expected.",
 				8 + 1, 1,
 				problems.get(0) );
@@ -186,7 +186,7 @@
 		problems= collectProblems("   \\(x   ");
 		assertEquals(1, problems.size());
 		assertProblem(Problem.SEVERITY_ERROR,
-				RSourceConstants.STATUS12_SYNTAX_FDEF_ARGS_NOT_CLOSED,
+				RSourceConstants.TYPE12_SYNTAX_FDEF_ARGS_NOT_CLOSED,
 				"Syntax Error/Incomplete Statement: function argument list is not closed, › ) ‹ expected.",
 				3 + 1 + 1, 2,
 				problems.get(0) );
@@ -199,7 +199,7 @@
 		problems= collectProblems("   function(x);\n");
 		assertEquals(1, problems.size());
 		assertProblem(Problem.SEVERITY_ERROR,
-				RSourceConstants.STATUS12_SYNTAX_EXPR_AS_BODY_MISSING | RSourceConstants.STATUS3_FDEF,
+				RSourceConstants.TYPE123_SYNTAX_EXPR_AS_BODY_MISSING | RSourceConstants.CTX12_FDEF,
 				"Syntax Error/Missing Body: an expression/block as function body is expected.",
 				3 + 8 + 2, 2,
 				problems.get(0) );
@@ -207,7 +207,7 @@
 		problems= collectProblems("function(x)");
 		assertEquals(1, problems.size());
 		assertProblem(Problem.SEVERITY_ERROR,
-				RSourceConstants.STATUS12_SYNTAX_EXPR_AS_BODY_MISSING | RSourceConstants.STATUS3_FDEF,
+				RSourceConstants.TYPE123_SYNTAX_EXPR_AS_BODY_MISSING | RSourceConstants.CTX12_FDEF,
 				"Syntax Error/Missing Body: an expression/block as function body is expected.",
 				8 + 2, 1,
 				problems.get(0) );
@@ -215,7 +215,7 @@
 		problems= collectProblems("   \\(x)");
 		assertEquals(1, problems.size());
 		assertProblem(Problem.SEVERITY_ERROR,
-				RSourceConstants.STATUS12_SYNTAX_EXPR_AS_BODY_MISSING | RSourceConstants.STATUS3_FDEF,
+				RSourceConstants.TYPE123_SYNTAX_EXPR_AS_BODY_MISSING | RSourceConstants.CTX12_FDEF,
 				"Syntax Error/Missing Body: an expression/block as function body is expected.",
 				3 + 1 + 2, 1,
 				problems.get(0) );
@@ -229,7 +229,7 @@
 		problems= collectProblems("   |> f();\n");
 		assertEquals(1, problems.size());
 		assertProblem(Problem.SEVERITY_ERROR,
-				RSourceConstants.STATUS12_SYNTAX_EXPR_BEFORE_OP_MISSING | RSourceConstants.STATUS3_PIPE,
+				RSourceConstants.TYPE123_SYNTAX_EXPR_BEFORE_OP_MISSING | RSourceConstants.CTX12_PIPE,
 				"Syntax Error/Missing Expression: an expression is expected before the operator.",
 				3 - 1, 2,
 				problems.get(0) );
@@ -237,7 +237,7 @@
 		problems= collectProblems("|>");
 		assertEquals(2, problems.size());
 		assertProblem(Problem.SEVERITY_ERROR,
-				RSourceConstants.STATUS12_SYNTAX_EXPR_BEFORE_OP_MISSING | RSourceConstants.STATUS3_PIPE,
+				RSourceConstants.TYPE123_SYNTAX_EXPR_BEFORE_OP_MISSING | RSourceConstants.CTX12_PIPE,
 				"Syntax Error/Missing Expression: an expression is expected before the operator.",
 				0, 1,
 				problems.get(0) );
@@ -250,7 +250,7 @@
 		problems= collectProblems("   1 |>;\n");
 		assertEquals(1, problems.size());
 		assertProblem(Problem.SEVERITY_ERROR,
-				RSourceConstants.STATUS12_SYNTAX_FCALL_AFTER_OP_MISSING | RSourceConstants.STATUS3_PIPE,
+				RSourceConstants.TYPE12_SYNTAX_FCALL_AFTER_OP_MISSING | RSourceConstants.CTX12_PIPE,
 				"Syntax Error/Missing Call: a function call is expected after the pipe operator › |> ‹.",
 				7 - 1, 1,
 				problems.get(0) );
@@ -258,7 +258,7 @@
 		problems= collectProblems("1 |>");
 		assertEquals(1, problems.size());
 		assertProblem(Problem.SEVERITY_ERROR,
-				RSourceConstants.STATUS12_SYNTAX_FCALL_AFTER_OP_MISSING | RSourceConstants.STATUS3_PIPE,
+				RSourceConstants.TYPE12_SYNTAX_FCALL_AFTER_OP_MISSING | RSourceConstants.CTX12_PIPE,
 				"Syntax Error/Missing Call: a function call is expected after the pipe operator › |> ‹.",
 				4 - 1, 1,
 				problems.get(0) );
@@ -271,7 +271,7 @@
 		problems= collectProblems("   1 |> f;\n");
 		assertEquals(1, problems.size());
 		assertProblem(Problem.SEVERITY_ERROR,
-				RSourceConstants.STATUS12_SYNTAX_FCALL_AFTER_OP_EXPR_UNEXPECTED | RSourceConstants.STATUS3_PIPE,
+				RSourceConstants.TYPE12_SYNTAX_FCALL_AFTER_OP_EXPR_UNEXPECTED | RSourceConstants.CTX12_PIPE,
 				"Syntax Error/Unexpected Expression: a function call is expected after the pipe operator \u203A\u200A|>\u200A\u2039.",
 				8, 1,
 				problems.get(0) );
@@ -279,7 +279,7 @@
 		problems= collectProblems("1 |> if (true)");
 		assertTrue(1 < problems.size());
 		assertProblem(Problem.SEVERITY_ERROR,
-				RSourceConstants.STATUS12_SYNTAX_FCALL_AFTER_OP_EXPR_UNEXPECTED | RSourceConstants.STATUS3_PIPE,
+				RSourceConstants.TYPE12_SYNTAX_FCALL_AFTER_OP_EXPR_UNEXPECTED | RSourceConstants.CTX12_PIPE,
 				"Syntax Error/Unexpected Expression: a function call is expected after the pipe operator \u203A\u200A|>\u200A\u2039.",
 				5, 9,
 				problems.get(0) );
@@ -294,7 +294,7 @@
 		problems= collectProblems("   \\(x) x");
 		assertEquals(1, problems.size());
 		assertProblem(Problem.SEVERITY_ERROR,
-				RSourceConstants.STATUS12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION | RSourceConstants.STATUS3_FDEF,
+				RSourceConstants.TYPE12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION | RSourceConstants.CTX12_FDEF,
 				"Syntax Error/Unsupported Statement: shorthand notation for function definition requires R language version 4.1 or above.",
 				3, 4,
 				problems.get(0) );
@@ -302,7 +302,7 @@
 		problems= collectProblems("   \\(x");
 		assertEquals(1, problems.size());
 		assertProblem(Problem.SEVERITY_ERROR,
-				RSourceConstants.STATUS12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION | RSourceConstants.STATUS3_FDEF,
+				RSourceConstants.TYPE12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION | RSourceConstants.CTX12_FDEF,
 				"Syntax Error/Unsupported Statement: shorthand notation for function definition requires R language version 4.1 or above.",
 				3, 3,
 				problems.get(0) );
@@ -310,7 +310,7 @@
 		problems= collectProblems("   1 |> f()");
 		assertEquals(1, problems.size());
 		assertProblem(Problem.SEVERITY_ERROR,
-				RSourceConstants.STATUS12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION | RSourceConstants.STATUS3_PIPE,
+				RSourceConstants.TYPE12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION | RSourceConstants.CTX12_PIPE,
 				"Syntax Error/Unsupported Statement: pipe operator › |> ‹ requires R language version 4.1 or above.",
 				3, 8,
 				problems.get(0) );
@@ -318,7 +318,7 @@
 		problems= collectProblems("   1 |> f");
 		assertEquals(1, problems.size());
 		assertProblem(Problem.SEVERITY_ERROR,
-				RSourceConstants.STATUS12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION | RSourceConstants.STATUS3_PIPE,
+				RSourceConstants.TYPE12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION | RSourceConstants.CTX12_PIPE,
 				"Syntax Error/Unsupported Statement: pipe operator › |> ‹ requires R language version 4.1 or above.",
 				3, 6,
 				problems.get(0) );
diff --git a/r/org.eclipse.statet.r.core-tests/src/org/eclipse/statet/r/core/rsource/RLexerNumericLiteralTest.java b/r/org.eclipse.statet.r.core-tests/src/org/eclipse/statet/r/core/rsource/RLexerNumericLiteralTest.java
index a273724..8193d40 100644
--- a/r/org.eclipse.statet.r.core-tests/src/org/eclipse/statet/r/core/rsource/RLexerNumericLiteralTest.java
+++ b/r/org.eclipse.statet.r.core-tests/src/org/eclipse/statet/r/core/rsource/RLexerNumericLiteralTest.java
@@ -16,11 +16,11 @@
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS123_SYNTAX_NUMBER_EXP_DIGIT_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS123_SYNTAX_NUMBER_HEX_DIGIT_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS123_SYNTAX_NUMBER_HEX_FLOAT_EXP_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS123_SYNTAX_NUMBER_INT_WITH_DEC_POINT;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS123_SYNTAX_NUMBER_NON_INT_WITH_L;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_NUMBER_EXP_DIGIT_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_NUMBER_HEX_DIGIT_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_NUMBER_HEX_FLOAT_EXP_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_NUMBER_INT_WITH_DEC_POINT;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_NUMBER_NON_INT_WITH_L;
 
 import org.junit.jupiter.api.Test;
 
@@ -178,13 +178,13 @@
 		lexer.reset(this.input.reset(" 123.4e 123.4e+ 123e- ").init());
 		
 		assertEquals(RTerminal.NUM_NUM, lexer.next());
-		assertEquals(STATUS123_SYNTAX_NUMBER_EXP_DIGIT_MISSING, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_NUMBER_EXP_DIGIT_MISSING, lexer.getFlags());
 		
 		assertEquals(RTerminal.NUM_NUM, lexer.next());
-		assertEquals(STATUS123_SYNTAX_NUMBER_EXP_DIGIT_MISSING, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_NUMBER_EXP_DIGIT_MISSING, lexer.getFlags());
 		
 		assertEquals(RTerminal.NUM_NUM, lexer.next());
-		assertEquals(STATUS123_SYNTAX_NUMBER_EXP_DIGIT_MISSING, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_NUMBER_EXP_DIGIT_MISSING, lexer.getFlags());
 		
 		assertEquals(RTerminal.EOF, lexer.next());
 	}
@@ -311,10 +311,10 @@
 		lexer.reset(this.input.reset(" 0x 0xp ").init());
 		
 		assertEquals(RTerminal.NUM_NUM, lexer.next());
-		assertEquals(STATUS123_SYNTAX_NUMBER_HEX_DIGIT_MISSING, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_NUMBER_HEX_DIGIT_MISSING, lexer.getFlags());
 		
 		assertEquals(RTerminal.NUM_NUM, lexer.next());
-		assertEquals(STATUS123_SYNTAX_NUMBER_HEX_DIGIT_MISSING, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_NUMBER_HEX_DIGIT_MISSING, lexer.getFlags());
 	}
 	
 	@Test
@@ -347,11 +347,11 @@
 		assertEquals("0x.ABCDEFp10", lexer.getText());
 		
 		assertEquals(RTerminal.NUM_NUM, lexer.next());
-		assertEquals(STATUS123_SYNTAX_NUMBER_HEX_FLOAT_EXP_MISSING, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_NUMBER_HEX_FLOAT_EXP_MISSING, lexer.getFlags());
 		assertEquals("0x123.456", lexer.getText());
 		
 		assertEquals(RTerminal.NUM_NUM, lexer.next());
-		assertEquals(STATUS123_SYNTAX_NUMBER_HEX_FLOAT_EXP_MISSING, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_NUMBER_HEX_FLOAT_EXP_MISSING, lexer.getFlags());
 		assertEquals("0xA.A", lexer.getText());
 		
 		assertEquals(RTerminal.EOF, lexer.next());
@@ -367,7 +367,7 @@
 		assertEquals("0x.123p0", lexer.getText());
 		
 		assertEquals(RTerminal.NUM_NUM, lexer.next());
-		assertEquals(STATUS123_SYNTAX_NUMBER_HEX_FLOAT_EXP_MISSING, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_NUMBER_HEX_FLOAT_EXP_MISSING, lexer.getFlags());
 		assertEquals("0x.123", lexer.getText());
 		
 		assertEquals(RTerminal.EOF, lexer.next());
@@ -383,7 +383,7 @@
 		assertEquals("0x123.p0", lexer.getText());
 		
 		assertEquals(RTerminal.NUM_NUM, lexer.next());
-		assertEquals(STATUS123_SYNTAX_NUMBER_HEX_FLOAT_EXP_MISSING, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_NUMBER_HEX_FLOAT_EXP_MISSING, lexer.getFlags());
 		assertEquals("0x123.", lexer.getText());
 		
 		assertEquals(RTerminal.EOF, lexer.next());
@@ -411,16 +411,16 @@
 		lexer.reset(this.input.reset(" 0x123.4p 0x123.4p+ 0x123p- 0x123.4pA ").init());
 		
 		assertEquals(RTerminal.NUM_NUM, lexer.next());
-		assertEquals(STATUS123_SYNTAX_NUMBER_EXP_DIGIT_MISSING, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_NUMBER_EXP_DIGIT_MISSING, lexer.getFlags());
 		
 		assertEquals(RTerminal.NUM_NUM, lexer.next());
-		assertEquals(STATUS123_SYNTAX_NUMBER_EXP_DIGIT_MISSING, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_NUMBER_EXP_DIGIT_MISSING, lexer.getFlags());
 		
 		assertEquals(RTerminal.NUM_NUM, lexer.next());
-		assertEquals(STATUS123_SYNTAX_NUMBER_EXP_DIGIT_MISSING, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_NUMBER_EXP_DIGIT_MISSING, lexer.getFlags());
 		
 		assertEquals(RTerminal.NUM_NUM, lexer.next());
-		assertEquals(STATUS123_SYNTAX_NUMBER_EXP_DIGIT_MISSING, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_NUMBER_EXP_DIGIT_MISSING, lexer.getFlags());
 		
 		assertEquals(RTerminal.SYMBOL, lexer.next());
 		assertEquals(0, lexer.getFlags());
@@ -451,7 +451,7 @@
 		assertEquals(0, lexer.getFlags());
 		
 		assertEquals(RTerminal.NUM_NUM, lexer.next());
-		assertEquals(STATUS123_SYNTAX_NUMBER_NON_INT_WITH_L, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_NUMBER_NON_INT_WITH_L, lexer.getFlags());
 		
 		assertEquals(RTerminal.EOF, lexer.next());
 	}
@@ -462,10 +462,10 @@
 		lexer.reset(this.input.reset(" 2147483647.0L .1L ").init());
 		
 		assertEquals(RTerminal.NUM_INT, lexer.next());
-		assertEquals(STATUS123_SYNTAX_NUMBER_INT_WITH_DEC_POINT, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_NUMBER_INT_WITH_DEC_POINT, lexer.getFlags());
 		
 		assertEquals(RTerminal.NUM_NUM, lexer.next());
-		assertEquals(STATUS123_SYNTAX_NUMBER_NON_INT_WITH_L, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_NUMBER_NON_INT_WITH_L, lexer.getFlags());
 		
 		assertEquals(RTerminal.EOF, lexer.next());
 	}
@@ -514,10 +514,10 @@
 		assertEquals(0, lexer.getFlags());
 		
 		assertEquals(RTerminal.NUM_NUM, lexer.next());
-		assertEquals(STATUS123_SYNTAX_NUMBER_NON_INT_WITH_L, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_NUMBER_NON_INT_WITH_L, lexer.getFlags());
 		
 		assertEquals(RTerminal.NUM_NUM, lexer.next());
-		assertEquals(STATUS123_SYNTAX_NUMBER_NON_INT_WITH_L, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_NUMBER_NON_INT_WITH_L, lexer.getFlags());
 		
 		assertEquals(RTerminal.EOF, lexer.next());
 	}
@@ -528,13 +528,13 @@
 		lexer.reset(this.input.reset(" 123.4eL 123e+L 123e-L ").init());
 		
 		assertEquals(RTerminal.NUM_INT, lexer.next());
-		assertEquals(STATUS123_SYNTAX_NUMBER_EXP_DIGIT_MISSING, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_NUMBER_EXP_DIGIT_MISSING, lexer.getFlags());
 		
 		assertEquals(RTerminal.NUM_INT, lexer.next());
-		assertEquals(STATUS123_SYNTAX_NUMBER_EXP_DIGIT_MISSING, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_NUMBER_EXP_DIGIT_MISSING, lexer.getFlags());
 		
 		assertEquals(RTerminal.NUM_INT, lexer.next());
-		assertEquals(STATUS123_SYNTAX_NUMBER_EXP_DIGIT_MISSING, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_NUMBER_EXP_DIGIT_MISSING, lexer.getFlags());
 		
 		assertEquals(RTerminal.EOF, lexer.next());
 	}
@@ -560,10 +560,10 @@
 		assertEquals(0, lexer.getFlags());
 		
 		assertEquals(RTerminal.NUM_NUM, lexer.next());
-		assertEquals(STATUS123_SYNTAX_NUMBER_NON_INT_WITH_L, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_NUMBER_NON_INT_WITH_L, lexer.getFlags());
 		
 		assertEquals(RTerminal.NUM_NUM, lexer.next());
-		assertEquals(STATUS123_SYNTAX_NUMBER_NON_INT_WITH_L, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_NUMBER_NON_INT_WITH_L, lexer.getFlags());
 		
 		assertEquals(RTerminal.EOF, lexer.next());
 	}
@@ -574,7 +574,7 @@
 		lexer.reset(this.input.reset(" 0xL ").init());
 		
 		assertEquals(RTerminal.NUM_INT, lexer.next());
-		assertEquals(STATUS123_SYNTAX_NUMBER_HEX_DIGIT_MISSING, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_NUMBER_HEX_DIGIT_MISSING, lexer.getFlags());
 		
 		assertEquals(RTerminal.EOF, lexer.next());
 	}
@@ -593,11 +593,11 @@
 		assertEquals("0x.Ap10L", lexer.getText());
 		
 		assertEquals(RTerminal.NUM_INT, lexer.next());
-		assertEquals(STATUS123_SYNTAX_NUMBER_HEX_FLOAT_EXP_MISSING, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_NUMBER_HEX_FLOAT_EXP_MISSING, lexer.getFlags());
 		assertEquals("0x123.456L", lexer.getText());
 		
 		assertEquals(RTerminal.NUM_INT, lexer.next());
-		assertEquals(STATUS123_SYNTAX_NUMBER_HEX_FLOAT_EXP_MISSING, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_NUMBER_HEX_FLOAT_EXP_MISSING, lexer.getFlags());
 		assertEquals("0xA.AL", lexer.getText());
 		
 		assertEquals(RTerminal.EOF, lexer.next());
@@ -609,11 +609,11 @@
 		lexer.reset(this.input.reset(" 0x123.4p0L 0x.ABCEp10L ").init());
 		
 		assertEquals(RTerminal.NUM_NUM, lexer.next());
-		assertEquals(STATUS123_SYNTAX_NUMBER_NON_INT_WITH_L, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_NUMBER_NON_INT_WITH_L, lexer.getFlags());
 		assertEquals("0x123.4p0L", lexer.getText());
 		
 		assertEquals(RTerminal.NUM_NUM, lexer.next());
-		assertEquals(STATUS123_SYNTAX_NUMBER_NON_INT_WITH_L, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_NUMBER_NON_INT_WITH_L, lexer.getFlags());
 		assertEquals("0x.ABCEp10L", lexer.getText());
 		
 		assertEquals(RTerminal.EOF, lexer.next());
@@ -641,13 +641,13 @@
 		lexer.reset(this.input.reset(" 0x123.4pL 0x123.4p+L 0x123p-L ").init());
 		
 		assertEquals(RTerminal.NUM_INT, lexer.next());
-		assertEquals(STATUS123_SYNTAX_NUMBER_EXP_DIGIT_MISSING, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_NUMBER_EXP_DIGIT_MISSING, lexer.getFlags());
 		
 		assertEquals(RTerminal.NUM_INT, lexer.next());
-		assertEquals(STATUS123_SYNTAX_NUMBER_EXP_DIGIT_MISSING, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_NUMBER_EXP_DIGIT_MISSING, lexer.getFlags());
 		
 		assertEquals(RTerminal.NUM_INT, lexer.next());
-		assertEquals(STATUS123_SYNTAX_NUMBER_EXP_DIGIT_MISSING, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_NUMBER_EXP_DIGIT_MISSING, lexer.getFlags());
 		
 		assertEquals(RTerminal.EOF, lexer.next());
 	}
@@ -703,7 +703,7 @@
 		lexer.reset(this.input.reset(" 0xi ").init());
 		
 		assertEquals(RTerminal.NUM_CPLX, lexer.next());
-		assertEquals(STATUS123_SYNTAX_NUMBER_HEX_DIGIT_MISSING, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_NUMBER_HEX_DIGIT_MISSING, lexer.getFlags());
 		
 		assertEquals(RTerminal.EOF, lexer.next());
 	}
@@ -726,7 +726,7 @@
 		lexer.reset(this.input.reset(" 0x0123A.BCi ").init());
 		
 		assertEquals(RTerminal.NUM_CPLX, lexer.next());
-		assertEquals(STATUS123_SYNTAX_NUMBER_HEX_FLOAT_EXP_MISSING, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_NUMBER_HEX_FLOAT_EXP_MISSING, lexer.getFlags());
 		assertEquals("0x0123A.BCi", lexer.getText());
 		
 		assertEquals(RTerminal.EOF, lexer.next());
diff --git a/r/org.eclipse.statet.r.core-tests/src/org/eclipse/statet/r/core/rsource/RLexerStringLiteralTest.java b/r/org.eclipse.statet.r.core-tests/src/org/eclipse/statet/r/core/rsource/RLexerStringLiteralTest.java
index 072ef74..4da0ef8 100644
--- a/r/org.eclipse.statet.r.core-tests/src/org/eclipse/statet/r/core/rsource/RLexerStringLiteralTest.java
+++ b/r/org.eclipse.statet.r.core-tests/src/org/eclipse/statet/r/core/rsource/RLexerStringLiteralTest.java
@@ -17,8 +17,8 @@
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNull;
 
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_TOKEN_NOT_CLOSED;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_TOKEN_OPENING_INCOMPLETE;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_TOKEN_NOT_CLOSED;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_TOKEN_OPENING_INCOMPLETE;
 import static org.eclipse.statet.r.core.rsource.ast.RAstTests.assertDetail;
 
 import java.util.ArrayList;
@@ -75,7 +75,7 @@
 		lexer.reset(this.input.reset(text).init());
 		
 		assertEquals(RTerminal.STRING_D, lexer.next());
-		assertEquals(STATUS12_SYNTAX_TOKEN_NOT_CLOSED, lexer.getFlags());
+		assertEquals(TYPE12_SYNTAX_TOKEN_NOT_CLOSED, lexer.getFlags());
 		assertEquals(1, lexer.getOffset());
 		assertEquals(5, lexer.getLength());
 		assertEquals("abc ", lexer.getText());
@@ -121,7 +121,7 @@
 		lexer.reset(this.input.reset(text).init());
 		
 		assertEquals(RTerminal.STRING_S, lexer.next());
-		assertEquals(STATUS12_SYNTAX_TOKEN_NOT_CLOSED, lexer.getFlags());
+		assertEquals(TYPE12_SYNTAX_TOKEN_NOT_CLOSED, lexer.getFlags());
 		assertEquals(1, lexer.getOffset());
 		assertEquals(5, lexer.getLength());
 		assertEquals("abc ", lexer.getText());
@@ -325,7 +325,7 @@
 		lexer.reset(this.input.reset(text).init());
 		
 		assertEquals(RTerminal.SYMBOL_G, lexer.next());
-		assertEquals(STATUS12_SYNTAX_TOKEN_NOT_CLOSED, lexer.getFlags());
+		assertEquals(TYPE12_SYNTAX_TOKEN_NOT_CLOSED, lexer.getFlags());
 		assertEquals(1, lexer.getOffset());
 		assertEquals(5, lexer.getLength());
 		assertEquals("abc ", lexer.getText());
@@ -403,7 +403,7 @@
 		lexer.reset(this.input.reset(" r\" ").init());
 		
 		assertEquals(RTerminal.STRING_R, lexer.next());
-		assertEquals(STATUS12_SYNTAX_TOKEN_OPENING_INCOMPLETE, lexer.getFlags());
+		assertEquals(TYPE12_SYNTAX_TOKEN_OPENING_INCOMPLETE, lexer.getFlags());
 		assertEquals(1, lexer.getOffset());
 		assertEquals(2, lexer.getLength());
 		assertNull(lexer.getText());
@@ -418,7 +418,7 @@
 		lexer.reset(this.input.reset(" r\"-ab-").init());
 		
 		assertEquals(RTerminal.STRING_R, lexer.next());
-		assertEquals(STATUS12_SYNTAX_TOKEN_OPENING_INCOMPLETE, lexer.getFlags());
+		assertEquals(TYPE12_SYNTAX_TOKEN_OPENING_INCOMPLETE, lexer.getFlags());
 		assertEquals(1, lexer.getOffset());
 		assertEquals(3, lexer.getLength());
 		assertNull(lexer.getText());
@@ -440,7 +440,7 @@
 		lexer.reset(this.input.reset(text).init());
 		
 		assertEquals(RTerminal.STRING_R, lexer.next());
-		assertEquals(STATUS12_SYNTAX_TOKEN_NOT_CLOSED, lexer.getFlags());
+		assertEquals(TYPE12_SYNTAX_TOKEN_NOT_CLOSED, lexer.getFlags());
 		assertEquals(1, lexer.getOffset());
 		assertEquals(text.length() - 1, lexer.getLength());
 		assertEquals(text.substring(1 + 3), lexer.getText());
@@ -461,7 +461,7 @@
 		lexer.reset(this.input.reset(text).init());
 		
 		assertEquals(RTerminal.STRING_R, lexer.next());
-		assertEquals(STATUS12_SYNTAX_TOKEN_NOT_CLOSED, lexer.getFlags());
+		assertEquals(TYPE12_SYNTAX_TOKEN_NOT_CLOSED, lexer.getFlags());
 		assertEquals(1, lexer.getOffset());
 		assertEquals(text.length() - 1, lexer.getLength());
 		assertEquals(text.substring(1 + 3), lexer.getText());
@@ -486,7 +486,7 @@
 		lexer.reset(this.input.reset(text).init());
 		
 		assertEquals(RTerminal.STRING_R, lexer.next());
-		assertEquals(STATUS12_SYNTAX_TOKEN_NOT_CLOSED, lexer.getFlags());
+		assertEquals(TYPE12_SYNTAX_TOKEN_NOT_CLOSED, lexer.getFlags());
 		assertEquals(1, lexer.getOffset());
 		assertEquals(text.length() - 1, lexer.getLength());
 		assertEquals(text.substring(1 + 6), lexer.getText());
@@ -510,7 +510,7 @@
 		lexer.reset(this.input.reset(text).init());
 		
 		assertEquals(RTerminal.STRING_R, lexer.next());
-		assertEquals(STATUS12_SYNTAX_TOKEN_NOT_CLOSED, lexer.getFlags());
+		assertEquals(TYPE12_SYNTAX_TOKEN_NOT_CLOSED, lexer.getFlags());
 		assertEquals(1, lexer.getOffset());
 		assertEquals(text.length() - 1, lexer.getLength());
 		assertEquals(text.substring(1 + 6), lexer.getText());
diff --git a/r/org.eclipse.statet.r.core-tests/src/org/eclipse/statet/r/core/rsource/RLexerStringTextTest.java b/r/org.eclipse.statet.r.core-tests/src/org/eclipse/statet/r/core/rsource/RLexerStringTextTest.java
index a1d185f..0469c0b 100644
--- a/r/org.eclipse.statet.r.core-tests/src/org/eclipse/statet/r/core/rsource/RLexerStringTextTest.java
+++ b/r/org.eclipse.statet.r.core-tests/src/org/eclipse/statet/r/core/rsource/RLexerStringTextTest.java
@@ -16,12 +16,12 @@
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_CODEPOINT_INVALID;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_HEX_DIGIT_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_NOT_CLOSED;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_UNKOWN;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS123_SYNTAX_TEXT_NULLCHAR;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_CODEPOINT_INVALID;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_HEX_DIGIT_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_NOT_CLOSED;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_UNKOWN;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_TEXT_NULLCHAR;
 import static org.eclipse.statet.r.core.rsource.ast.RAstTests.assertDetail;
 
 import org.junit.jupiter.api.Test;
@@ -82,7 +82,7 @@
 		lexer.reset(this.input.reset(" 'abc \\x e' ").init());
 		
 		assertEquals(RTerminal.STRING_S, lexer.next());
-		assertEquals(STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_HEX_DIGIT_MISSING, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_HEX_DIGIT_MISSING, lexer.getFlags());
 		assertEquals("abc \\x e", lexer.getText());
 		assertDetail(6, 2, "\\x", lexer.getStatusDetail());
 		assertEquals(RTerminal.EOF, lexer.next());
@@ -105,7 +105,7 @@
 		lexer.reset(this.input.reset(" 'abc \\u e' ").init());
 		
 		assertEquals(RTerminal.STRING_S, lexer.next());
-		assertEquals(STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_HEX_DIGIT_MISSING, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_HEX_DIGIT_MISSING, lexer.getFlags());
 		assertEquals("abc \\u e", lexer.getText());
 		assertDetail(6, 2, "\\uxxxx", lexer.getStatusDetail());
 		assertEquals(RTerminal.EOF, lexer.next());
@@ -128,7 +128,7 @@
 		lexer.reset(this.input.reset(" 'abc \\u{} e' ").init());
 		
 		assertEquals(RTerminal.STRING_S, lexer.next());
-		assertEquals(STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_HEX_DIGIT_MISSING, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_HEX_DIGIT_MISSING, lexer.getFlags());
 		assertEquals("abc \\u{} e", lexer.getText());
 		assertDetail(6, 4, "\\u{xxxx}", lexer.getStatusDetail());
 		assertEquals(RTerminal.EOF, lexer.next());
@@ -140,7 +140,7 @@
 		lexer.reset(this.input.reset(" 'abc \\u{1 e' ").init());
 		
 		assertEquals(RTerminal.STRING_S, lexer.next());
-		assertEquals(STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_NOT_CLOSED, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_NOT_CLOSED, lexer.getFlags());
 		assertEquals("abc \\u{1 e", lexer.getText());
 		assertDetail(6, 4, "\\u{xxxx}", lexer.getStatusDetail());
 		assertEquals(RTerminal.EOF, lexer.next());
@@ -148,7 +148,7 @@
 		lexer.reset(this.input.reset(" 'abc \\u{FFFFF} e' ").init());
 		
 		assertEquals(RTerminal.STRING_S, lexer.next());
-		assertEquals(STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_NOT_CLOSED, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_NOT_CLOSED, lexer.getFlags());
 		assertEquals("abc \\u{FFFFF} e", lexer.getText());
 		assertDetail(6, 7, "\\u{xxxx}", lexer.getStatusDetail());
 		assertEquals(RTerminal.EOF, lexer.next());
@@ -171,7 +171,7 @@
 		lexer.reset(this.input.reset(" 'abc \\U e' ").init());
 		
 		assertEquals(RTerminal.STRING_S, lexer.next());
-		assertEquals(STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_HEX_DIGIT_MISSING, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_HEX_DIGIT_MISSING, lexer.getFlags());
 		assertEquals("abc \\U e", lexer.getText());
 		assertDetail(6, 2, "\\Uxxxxxxxx", lexer.getStatusDetail());
 		assertEquals(RTerminal.EOF, lexer.next());
@@ -194,7 +194,7 @@
 		lexer.reset(this.input.reset(" 'abc \\U{} e' ").init());
 		
 		assertEquals(RTerminal.STRING_S, lexer.next());
-		assertEquals(STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_HEX_DIGIT_MISSING, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_HEX_DIGIT_MISSING, lexer.getFlags());
 		assertEquals("abc \\U{} e", lexer.getText());
 		assertDetail(6, 4, "\\U{xxxxxxxx}", lexer.getStatusDetail());
 		assertEquals(RTerminal.EOF, lexer.next());
@@ -206,7 +206,7 @@
 		lexer.reset(this.input.reset(" 'abc \\U{1 e' ").init());
 		
 		assertEquals(RTerminal.STRING_S, lexer.next());
-		assertEquals(STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_NOT_CLOSED, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_NOT_CLOSED, lexer.getFlags());
 		assertEquals("abc \\U{1 e", lexer.getText());
 		assertDetail(6, 4, "\\U{xxxxxxxx}", lexer.getStatusDetail());
 		assertEquals(RTerminal.EOF, lexer.next());
@@ -214,7 +214,7 @@
 		lexer.reset(this.input.reset(" 'abc \\U{FFFFFFFFF} e' ").init());
 		
 		assertEquals(RTerminal.STRING_S, lexer.next());
-		assertEquals(STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_NOT_CLOSED, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_NOT_CLOSED, lexer.getFlags());
 		assertEquals("abc \\U{FFFFFFFFF} e", lexer.getText());
 		assertDetail(6, 11, "\\U{xxxxxxxx}", lexer.getStatusDetail());
 		assertEquals(RTerminal.EOF, lexer.next());
@@ -227,7 +227,7 @@
 		lexer.reset(this.input.reset(" 'abc \u0000 e' ").init());
 		
 		assertEquals(RTerminal.STRING_S, lexer.next());
-		assertEquals(STATUS123_SYNTAX_TEXT_NULLCHAR, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_TEXT_NULLCHAR, lexer.getFlags());
 		assertEquals("abc \u0000 e", lexer.getText());
 		assertDetail(6, 1, null, lexer.getStatusDetail());
 		assertEquals(RTerminal.EOF, lexer.next());
@@ -235,7 +235,7 @@
 		lexer.reset(this.input.reset(" 'abc \\0 e' ").init());
 		
 		assertEquals(RTerminal.STRING_S, lexer.next());
-		assertEquals(STATUS123_SYNTAX_TEXT_NULLCHAR, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_TEXT_NULLCHAR, lexer.getFlags());
 		assertEquals("abc \\0 e", lexer.getText());
 		assertDetail(6, 2, null, lexer.getStatusDetail());
 		assertEquals(RTerminal.EOF, lexer.next());
@@ -243,7 +243,7 @@
 		lexer.reset(this.input.reset(" 'abc \\x00 e' ").init());
 		
 		assertEquals(RTerminal.STRING_S, lexer.next());
-		assertEquals(STATUS123_SYNTAX_TEXT_NULLCHAR, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_TEXT_NULLCHAR, lexer.getFlags());
 		assertEquals("abc \\x00 e", lexer.getText());
 		assertDetail(6, 4, null, lexer.getStatusDetail());
 		assertEquals(RTerminal.EOF, lexer.next());
@@ -251,7 +251,7 @@
 		lexer.reset(this.input.reset(" 'abc \\u0 e' ").init());
 		
 		assertEquals(RTerminal.STRING_S, lexer.next());
-		assertEquals(STATUS123_SYNTAX_TEXT_NULLCHAR, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_TEXT_NULLCHAR, lexer.getFlags());
 		assertEquals("abc \\u0 e", lexer.getText());
 		assertDetail(6, 3, null, lexer.getStatusDetail());
 		assertEquals(RTerminal.EOF, lexer.next());
@@ -259,7 +259,7 @@
 		lexer.reset(this.input.reset(" 'abc \\u{0} e' ").init());
 		
 		assertEquals(RTerminal.STRING_S, lexer.next());
-		assertEquals(STATUS123_SYNTAX_TEXT_NULLCHAR, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_TEXT_NULLCHAR, lexer.getFlags());
 		assertEquals("abc \\u{0} e", lexer.getText());
 		assertDetail(6, 5, null, lexer.getStatusDetail());
 		assertEquals(RTerminal.EOF, lexer.next());
@@ -267,7 +267,7 @@
 		lexer.reset(this.input.reset(" 'abc \\U0 e' ").init());
 		
 		assertEquals(RTerminal.STRING_S, lexer.next());
-		assertEquals(STATUS123_SYNTAX_TEXT_NULLCHAR, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_TEXT_NULLCHAR, lexer.getFlags());
 		assertEquals("abc \\U0 e", lexer.getText());
 		assertDetail(6, 3, null, lexer.getStatusDetail());
 		assertEquals(RTerminal.EOF, lexer.next());
@@ -275,7 +275,7 @@
 		lexer.reset(this.input.reset(" 'abc \\U{0000} e' ").init());
 		
 		assertEquals(RTerminal.STRING_S, lexer.next());
-		assertEquals(STATUS123_SYNTAX_TEXT_NULLCHAR, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_TEXT_NULLCHAR, lexer.getFlags());
 		assertEquals("abc \\U{0000} e", lexer.getText());
 		assertDetail(6, 8, null, lexer.getStatusDetail());
 		assertEquals(RTerminal.EOF, lexer.next());
@@ -288,7 +288,7 @@
 		lexer.reset(this.input.reset(" 'abc \\U110000 e' ").init());
 		
 		assertEquals(RTerminal.STRING_S, lexer.next());
-		assertEquals(STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_CODEPOINT_INVALID, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_CODEPOINT_INVALID, lexer.getFlags());
 		assertEquals("abc \\U110000 e", lexer.getText());
 		assertDetail(6, 8, "U+110000", lexer.getStatusDetail());
 		assertEquals(RTerminal.EOF, lexer.next());
@@ -296,7 +296,7 @@
 		lexer.reset(this.input.reset(" 'abc \\U{110000} e' ").init());
 		
 		assertEquals(RTerminal.STRING_S, lexer.next());
-		assertEquals(STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_CODEPOINT_INVALID, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_CODEPOINT_INVALID, lexer.getFlags());
 		assertEquals("abc \\U{110000} e", lexer.getText());
 		assertDetail(6, 10, "U+110000", lexer.getStatusDetail());
 		assertEquals(RTerminal.EOF, lexer.next());
@@ -308,7 +308,7 @@
 		lexer.reset(this.input.reset(" 'abc \\c' ").init());
 		
 		assertEquals(RTerminal.STRING_S, lexer.next());
-		assertEquals(STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_UNKOWN, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_UNKOWN, lexer.getFlags());
 		assertEquals("abc \\c", lexer.getText());
 		assertDetail(6, 2, "\\c", lexer.getStatusDetail());
 		assertEquals(RTerminal.EOF, lexer.next());
@@ -366,7 +366,7 @@
 		lexer.reset(this.input.reset(" `abc \\u1 \\u02 \\u003 \\uAAAA \\uFFF0 e` ").init());
 		
 		assertEquals(RTerminal.SYMBOL_G, lexer.next());
-		assertEquals(STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED, lexer.getFlags());
 		assertEquals("abc \\u1 \\u02 \\u003 \\uAAAA \\uFFF0 e", lexer.getText());
 		assertDetail(6, 3, "\\uxxxx", lexer.getStatusDetail());
 		assertEquals(RTerminal.EOF, lexer.next());
@@ -378,7 +378,7 @@
 		lexer.reset(this.input.reset(" `abc \\u{1} \\u{02} \\u{003} \\u{AAAA} \\u{FFF0} e` ").init());
 		
 		assertEquals(RTerminal.SYMBOL_G, lexer.next());
-		assertEquals(STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED, lexer.getFlags());
 		assertEquals("abc \\u{1} \\u{02} \\u{003} \\u{AAAA} \\u{FFF0} e", lexer.getText());
 		assertDetail(6, 5, "\\u{xxxx}", lexer.getStatusDetail());
 		assertEquals(RTerminal.EOF, lexer.next());
@@ -390,7 +390,7 @@
 		lexer.reset(this.input.reset(" `abc \\u{1 e` ").init());
 		
 		assertEquals(RTerminal.SYMBOL_G, lexer.next());
-		assertEquals(STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED, lexer.getFlags());
 		assertEquals("abc \\u{1 e", lexer.getText());
 		assertDetail(6, 4, "\\u{xxxx}", lexer.getStatusDetail());
 		assertEquals(RTerminal.EOF, lexer.next());
@@ -398,7 +398,7 @@
 		lexer.reset(this.input.reset(" `abc \\u{FFFFF} e` ").init());
 		
 		assertEquals(RTerminal.SYMBOL_G, lexer.next());
-		assertEquals(STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED, lexer.getFlags());
 		assertEquals("abc \\u{FFFFF} e", lexer.getText());
 		assertDetail(6, 7, "\\u{xxxx}", lexer.getStatusDetail());
 		assertEquals(RTerminal.EOF, lexer.next());
@@ -410,7 +410,7 @@
 		lexer.reset(this.input.reset(" `abc \\U1 \\U02 \\U003 \\UAAAA \\UFFF0 \\U1D11E \\U24F5C e` ").init());
 		
 		assertEquals(RTerminal.SYMBOL_G, lexer.next());
-		assertEquals(STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED, lexer.getFlags());
 		assertEquals("abc \\U1 \\U02 \\U003 \\UAAAA \\UFFF0 \\U1D11E \\U24F5C e", lexer.getText());
 		assertDetail(6, 3, "\\Uxxxxxxxx", lexer.getStatusDetail());
 		assertEquals(RTerminal.EOF, lexer.next());
@@ -422,7 +422,7 @@
 		lexer.reset(this.input.reset(" `abc \\U{1} \\U{02} \\U{003} \\U{AAAA} \\U{FFF0} \\U{1D11E} \\U{24F5C} e` ").init());
 		
 		assertEquals(RTerminal.SYMBOL_G, lexer.next());
-		assertEquals(STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED, lexer.getFlags());
 		assertEquals("abc \\U{1} \\U{02} \\U{003} \\U{AAAA} \\U{FFF0} \\U{1D11E} \\U{24F5C} e", lexer.getText());
 		assertDetail(6, 5, "\\U{xxxxxxxx}", lexer.getStatusDetail());
 		assertEquals(RTerminal.EOF, lexer.next());
@@ -434,7 +434,7 @@
 		lexer.reset(this.input.reset(" `abc \\U{1 e` ").init());
 		
 		assertEquals(RTerminal.SYMBOL_G, lexer.next());
-		assertEquals(STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED, lexer.getFlags());
 		assertEquals("abc \\U{1 e", lexer.getText());
 		assertDetail(6, 4, "\\U{xxxxxxxx}", lexer.getStatusDetail());
 		assertEquals(RTerminal.EOF, lexer.next());
@@ -442,7 +442,7 @@
 		lexer.reset(this.input.reset(" `abc \\U{FFFFFFFFF} e` ").init());
 		
 		assertEquals(RTerminal.SYMBOL_G, lexer.next());
-		assertEquals(STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED, lexer.getFlags());
 		assertEquals("abc \\U{FFFFFFFFF} e", lexer.getText());
 		assertDetail(6, 11, "\\U{xxxxxxxx}", lexer.getStatusDetail());
 		assertEquals(RTerminal.EOF, lexer.next());
@@ -454,7 +454,7 @@
 		lexer.reset(this.input.reset(" `abc \u0000 e` ").init());
 		
 		assertEquals(RTerminal.SYMBOL_G, lexer.next());
-		assertEquals(STATUS123_SYNTAX_TEXT_NULLCHAR, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_TEXT_NULLCHAR, lexer.getFlags());
 		assertEquals("abc \u0000 e", lexer.getText());
 		assertDetail(6, 1, null, lexer.getStatusDetail());
 		assertEquals(RTerminal.EOF, lexer.next());
@@ -462,7 +462,7 @@
 		lexer.reset(this.input.reset(" `abc \\0 e` ").init());
 		
 		assertEquals(RTerminal.SYMBOL_G, lexer.next());
-		assertEquals(STATUS123_SYNTAX_TEXT_NULLCHAR, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_TEXT_NULLCHAR, lexer.getFlags());
 		assertEquals("abc \\0 e", lexer.getText());
 		assertDetail(6, 2, null, lexer.getStatusDetail());
 		assertEquals(RTerminal.EOF, lexer.next());
@@ -470,7 +470,7 @@
 		lexer.reset(this.input.reset(" `abc \\x00 e` ").init());
 		
 		assertEquals(RTerminal.SYMBOL_G, lexer.next());
-		assertEquals(STATUS123_SYNTAX_TEXT_NULLCHAR, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_TEXT_NULLCHAR, lexer.getFlags());
 		assertEquals("abc \\x00 e", lexer.getText());
 		assertDetail(6, 4, null, lexer.getStatusDetail());
 		assertEquals(RTerminal.EOF, lexer.next());
@@ -478,7 +478,7 @@
 		lexer.reset(this.input.reset(" `abc \\u0 e` ").init());
 		
 		assertEquals(RTerminal.SYMBOL_G, lexer.next());
-		assertEquals(STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED, lexer.getFlags());
 		assertEquals("abc \\u0 e", lexer.getText());
 		assertDetail(6, 3, "\\uxxxx", lexer.getStatusDetail());
 		assertEquals(RTerminal.EOF, lexer.next());
@@ -486,7 +486,7 @@
 		lexer.reset(this.input.reset(" `abc \\u{0} e` ").init());
 		
 		assertEquals(RTerminal.SYMBOL_G, lexer.next());
-		assertEquals(STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED, lexer.getFlags());
 		assertEquals("abc \\u{0} e", lexer.getText());
 		assertDetail(6, 5, "\\u{xxxx}", lexer.getStatusDetail());
 		assertEquals(RTerminal.EOF, lexer.next());
@@ -494,7 +494,7 @@
 		lexer.reset(this.input.reset(" `abc \\U0 e` ").init());
 		
 		assertEquals(RTerminal.SYMBOL_G, lexer.next());
-		assertEquals(STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED, lexer.getFlags());
 		assertEquals("abc \\U0 e", lexer.getText());
 		assertDetail(6, 3, "\\Uxxxxxxxx", lexer.getStatusDetail());
 		assertEquals(RTerminal.EOF, lexer.next());
@@ -502,7 +502,7 @@
 		lexer.reset(this.input.reset(" `abc \\U{0000} e` ").init());
 		
 		assertEquals(RTerminal.SYMBOL_G, lexer.next());
-		assertEquals(STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED, lexer.getFlags());
 		assertEquals("abc \\U{0000} e", lexer.getText());
 		assertDetail(6, 8, "\\U{xxxxxxxx}", lexer.getStatusDetail());
 		assertEquals(RTerminal.EOF, lexer.next());
@@ -515,7 +515,7 @@
 		lexer.reset(this.input.reset(" `abc \\U{110000} e` ").init());
 		
 		assertEquals(RTerminal.SYMBOL_G, lexer.next());
-		assertEquals(STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED, lexer.getFlags());
 		assertEquals("abc \\U{110000} e", lexer.getText());
 		assertDetail(6, 10, "\\U{xxxxxxxx}", lexer.getStatusDetail());
 		assertEquals(RTerminal.EOF, lexer.next());
@@ -527,7 +527,7 @@
 		lexer.reset(this.input.reset(" `abc \\c` ").init());
 		
 		assertEquals(RTerminal.SYMBOL_G, lexer.next());
-		assertEquals(STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_UNKOWN, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_UNKOWN, lexer.getFlags());
 		assertEquals("abc \\c", lexer.getText());
 		assertDetail(6, 2, "\\c", lexer.getStatusDetail());
 		assertEquals(RTerminal.EOF, lexer.next());
@@ -540,7 +540,7 @@
 		lexer.reset(this.input.reset(" r'(abc \u0000 e)' ").init());
 		
 		assertEquals(RTerminal.STRING_R, lexer.next());
-		assertEquals(STATUS123_SYNTAX_TEXT_NULLCHAR, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_TEXT_NULLCHAR, lexer.getFlags());
 		assertEquals("abc \u0000 e", lexer.getText());
 		assertEquals(1, lexer.getOffset());
 		assertEquals(12, lexer.getLength());
@@ -559,7 +559,7 @@
 		lexer.reset(this.input.reset(text).init());
 		
 		assertEquals(RTerminal.STRING_R, lexer.next());
-		assertEquals(STATUS123_SYNTAX_TEXT_NULLCHAR, lexer.getFlags());
+		assertEquals(TYPE123_SYNTAX_TEXT_NULLCHAR, lexer.getFlags());
 		assertEquals(1, lexer.getOffset());
 		assertEquals(text.length() - 2, lexer.getLength());
 		assertEquals(text.substring(1 + 3, text.length() - 2 - 1), lexer.getText());
diff --git a/r/org.eclipse.statet.r.core-tests/src/org/eclipse/statet/r/core/rsource/RLexerTest.java b/r/org.eclipse.statet.r.core-tests/src/org/eclipse/statet/r/core/rsource/RLexerTest.java
index 089274d..8b8968b 100644
--- a/r/org.eclipse.statet.r.core-tests/src/org/eclipse/statet/r/core/rsource/RLexerTest.java
+++ b/r/org.eclipse.statet.r.core-tests/src/org/eclipse/statet/r/core/rsource/RLexerTest.java
@@ -16,7 +16,7 @@
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_TOKEN_NOT_CLOSED;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_TOKEN_NOT_CLOSED;
 
 import org.junit.jupiter.api.Test;
 
@@ -470,7 +470,7 @@
 		lexer.reset(this.input.reset(" %/ ").init());
 		
 		assertEquals(RTerminal.SPECIAL, lexer.next());
-		assertEquals(STATUS12_SYNTAX_TOKEN_NOT_CLOSED, lexer.getFlags());
+		assertEquals(TYPE12_SYNTAX_TOKEN_NOT_CLOSED, lexer.getFlags());
 		assertEquals(1, lexer.getOffset());
 		assertEquals(3, lexer.getLength());
 		
@@ -479,7 +479,7 @@
 		lexer.reset(this.input.reset(" %/ \n%").init());
 		
 		assertEquals(RTerminal.SPECIAL, lexer.next());
-		assertEquals(STATUS12_SYNTAX_TOKEN_NOT_CLOSED, lexer.getFlags());
+		assertEquals(TYPE12_SYNTAX_TOKEN_NOT_CLOSED, lexer.getFlags());
 		assertEquals(1, lexer.getOffset());
 		assertEquals(3, lexer.getLength());
 		
diff --git a/r/org.eclipse.statet.r.core-tests/src/org/eclipse/statet/r/core/rsource/ast/RParserFDefTest.java b/r/org.eclipse.statet.r.core-tests/src/org/eclipse/statet/r/core/rsource/ast/RParserFDefTest.java
index 61bf535..3abb277 100644
--- a/r/org.eclipse.statet.r.core-tests/src/org/eclipse/statet/r/core/rsource/ast/RParserFDefTest.java
+++ b/r/org.eclipse.statet.r.core-tests/src/org/eclipse/statet/r/core/rsource/ast/RParserFDefTest.java
@@ -14,12 +14,12 @@
 
 package org.eclipse.statet.r.core.rsource.ast;
 
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_EXPR_AS_BODY_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_FDEF_ARGS_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS3_FDEF;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUSFLAG_ERROR_IN_CHILD;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUSFLAG_SUBSEQUENT;
+import static org.eclipse.statet.ltk.core.StatusCodes.ERROR_IN_CHILD;
+import static org.eclipse.statet.ltk.core.StatusCodes.SUBSEQUENT;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.CTX12_FDEF;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_EXPR_AS_BODY_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_FDEF_ARGS_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION;
 import static org.eclipse.statet.r.core.rsource.ast.RAstTests.ADD_PLUS;
 import static org.eclipse.statet.r.core.rsource.ast.RAstTests.BLOCK;
 import static org.eclipse.statet.r.core.rsource.ast.RAstTests.ERROR_TERM;
@@ -70,10 +70,10 @@
 		RAstNode expr0;
 		
 		expr0= assertExpr("function;\n",
-						 0,  8, FDEF_STD,	STATUS12_SYNTAX_FDEF_ARGS_MISSING | STATUSFLAG_ERROR_IN_CHILD,
+						 0,  8, FDEF_STD,	TYPE12_SYNTAX_FDEF_ARGS_MISSING | ERROR_IN_CHILD,
 											null );
 		assertExpr0Node( 8,  8, FDEF_ARGS,	0, null,	expr0, new int[] { 0 });
-		assertExpr0Node( 8,  8, ERROR_TERM,	STATUS12_SYNTAX_EXPR_AS_BODY_MISSING | STATUS3_FDEF | STATUSFLAG_SUBSEQUENT,
+		assertExpr0Node( 8,  8, ERROR_TERM,	TYPE123_SYNTAX_EXPR_AS_BODY_MISSING | CTX12_FDEF | SUBSEQUENT,
 											null,		expr0, new int[] { 1 });
 	}
 	
@@ -82,17 +82,17 @@
 		RAstNode expr0;
 		
 		expr0= assertExpr("function();\n",
-						 0, 10, FDEF_STD,	STATUSFLAG_ERROR_IN_CHILD,
+						 0, 10, FDEF_STD,	ERROR_IN_CHILD,
 											null );
 		assertExpr0Node( 9,  9, FDEF_ARGS,	0, null,	expr0, new int[] { 0 });
-		assertExpr0Node(10, 10, ERROR_TERM,	STATUS12_SYNTAX_EXPR_AS_BODY_MISSING | STATUS3_FDEF,
+		assertExpr0Node(10, 10, ERROR_TERM,	TYPE123_SYNTAX_EXPR_AS_BODY_MISSING | CTX12_FDEF,
 											null,		expr0, new int[] { 1 });
 		
 		expr0= assertExpr("function(x, y= 0) ",
-						 0, 17, FDEF_STD,	STATUSFLAG_ERROR_IN_CHILD,
+						 0, 17, FDEF_STD,	ERROR_IN_CHILD,
 											null );
 		assertExpr0Node( 9, 16, FDEF_ARGS,	0, null,	expr0, new int[] { 0 });
-		assertExpr0Node(17, 17, ERROR_TERM,	STATUS12_SYNTAX_EXPR_AS_BODY_MISSING | STATUS3_FDEF,
+		assertExpr0Node(17, 17, ERROR_TERM,	TYPE123_SYNTAX_EXPR_AS_BODY_MISSING | CTX12_FDEF,
 											null,		expr0, new int[] { 1 });
 	}
 	
@@ -122,10 +122,10 @@
 		RAstNode expr0;
 		
 		expr0= assertExpr("\\;\n",
-						 0,  1, FDEF_B,		STATUS12_SYNTAX_FDEF_ARGS_MISSING | STATUSFLAG_ERROR_IN_CHILD,
+						 0,  1, FDEF_B,		TYPE12_SYNTAX_FDEF_ARGS_MISSING | ERROR_IN_CHILD,
 											null );
 		assertExpr0Node( 1,  1, FDEF_ARGS,	0, null,	expr0, new int[] { 0 });
-		assertExpr0Node( 1,  1, ERROR_TERM,	STATUS12_SYNTAX_EXPR_AS_BODY_MISSING | STATUS3_FDEF | STATUSFLAG_SUBSEQUENT,
+		assertExpr0Node( 1,  1, ERROR_TERM,	TYPE123_SYNTAX_EXPR_AS_BODY_MISSING | CTX12_FDEF | SUBSEQUENT,
 											null,		expr0, new int[] { 1 });
 	}
 	
@@ -134,17 +134,17 @@
 		RAstNode expr0;
 		
 		expr0= assertExpr("\\();\n",
-						 0,  3, FDEF_B,		STATUSFLAG_ERROR_IN_CHILD,
+						 0,  3, FDEF_B,		ERROR_IN_CHILD,
 											null );
 		assertExpr0Node( 2,  2, FDEF_ARGS,	0, null,	expr0, new int[] { 0 });
-		assertExpr0Node( 3,  3, ERROR_TERM,	STATUS12_SYNTAX_EXPR_AS_BODY_MISSING | STATUS3_FDEF,
+		assertExpr0Node( 3,  3, ERROR_TERM,	TYPE123_SYNTAX_EXPR_AS_BODY_MISSING | CTX12_FDEF,
 											null,		expr0, new int[] { 1 });
 		
 		expr0= assertExpr("\\(x, y= 0) ",
-						 0, 10, FDEF_B,		STATUSFLAG_ERROR_IN_CHILD,
+						 0, 10, FDEF_B,		ERROR_IN_CHILD,
 											null );
 		assertExpr0Node( 2,  9, FDEF_ARGS,	0, null,	expr0, new int[] { 0 });
-		assertExpr0Node(10, 10, ERROR_TERM,	STATUS12_SYNTAX_EXPR_AS_BODY_MISSING | STATUS3_FDEF,
+		assertExpr0Node(10, 10, ERROR_TERM,	TYPE123_SYNTAX_EXPR_AS_BODY_MISSING | CTX12_FDEF,
 											null,		expr0, new int[] { 1 });
 	}
 	
@@ -154,19 +154,19 @@
 		RAstNode expr0;
 		
 		expr0= assertExpr("\\() 1",
-						 0,  5, FDEF_B,		STATUS12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION | STATUS3_FDEF,
+						 0,  5, FDEF_B,		TYPE12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION | CTX12_FDEF,
 											null );
 		assertExpr0Node( 2,  2, FDEF_ARGS,	0, null,	expr0, new int[] { 0 });
 		assertExpr0Node( 4,  5, NUM_NUM,	0, "1",		expr0, new int[] { 1 });
 		
 		expr0= assertExpr("\\() { x; call(x); }",
-						 0, 19, FDEF_B,		STATUS12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION | STATUS3_FDEF,
+						 0, 19, FDEF_B,		TYPE12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION | CTX12_FDEF,
 											null );
 		assertExpr0Node( 2,  2, FDEF_ARGS,	0, null,	expr0, new int[] { 0 });
 		assertExpr0Node( 4, 19, BLOCK,		0, null,	expr0, new int[] { 1 });
 		
 		expr0= assertExpr("\\(x, y= 0) x + y",
-						 0, 16, FDEF_B,		STATUS12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION | STATUS3_FDEF,
+						 0, 16, FDEF_B,		TYPE12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION | CTX12_FDEF,
 											null );
 		assertExpr0Node( 2,  9, FDEF_ARGS,	0, null,	expr0, new int[] { 0 });
 		assertExpr0Node(11, 16, ADD_PLUS,	0, null,	expr0, new int[] { 1 });
diff --git a/r/org.eclipse.statet.r.core-tests/src/org/eclipse/statet/r/core/rsource/ast/RParserPipeTest.java b/r/org.eclipse.statet.r.core-tests/src/org/eclipse/statet/r/core/rsource/ast/RParserPipeTest.java
index f14657b..2cd0855 100644
--- a/r/org.eclipse.statet.r.core-tests/src/org/eclipse/statet/r/core/rsource/ast/RParserPipeTest.java
+++ b/r/org.eclipse.statet.r.core-tests/src/org/eclipse/statet/r/core/rsource/ast/RParserPipeTest.java
@@ -14,11 +14,11 @@
 
 package org.eclipse.statet.r.core.rsource.ast;
 
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_FCALL_AFTER_OP_EXPR_UNEXPECTED;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_FCALL_AFTER_OP_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS3_PIPE;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUSFLAG_ERROR_IN_CHILD;
+import static org.eclipse.statet.ltk.core.StatusCodes.ERROR_IN_CHILD;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.CTX12_PIPE;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_FCALL_AFTER_OP_EXPR_UNEXPECTED;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_FCALL_AFTER_OP_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION;
 import static org.eclipse.statet.r.core.rsource.ast.RAstTests.ERROR_TERM;
 import static org.eclipse.statet.r.core.rsource.ast.RAstTests.FCALL;
 import static org.eclipse.statet.r.core.rsource.ast.RAstTests.MULT_DIV;
@@ -80,9 +80,9 @@
 		RAstNode expr0;
 		
 		expr0= assertExpr("x |> ;",
-				0,  4, PIPE_FORWARD, STATUSFLAG_ERROR_IN_CHILD, null );
+				0,  4, PIPE_FORWARD, ERROR_IN_CHILD, null );
 		assertExpr0Node( 0,  1, SYMBOL_STD,	0, "x",		expr0, new int[] { 0 });
-		assertExpr0Node( 4,  4, ERROR_TERM,	STATUS12_SYNTAX_FCALL_AFTER_OP_MISSING | STATUS3_PIPE,
+		assertExpr0Node( 4,  4, ERROR_TERM,	TYPE12_SYNTAX_FCALL_AFTER_OP_MISSING | CTX12_PIPE,
 											null,		expr0, new int[] { 1 });
 	}
 	
@@ -91,9 +91,9 @@
 		RAstNode expr0;
 		
 		expr0= assertExpr("x |> f",
-				0,  6, PIPE_FORWARD, STATUSFLAG_ERROR_IN_CHILD, null );
+				0,  6, PIPE_FORWARD, ERROR_IN_CHILD, null );
 		assertExpr0Node( 0,  1, SYMBOL_STD,	0, "x",		expr0, new int[] { 0 });
-		assertExpr0Node( 5,  6, SYMBOL_STD,	STATUS12_SYNTAX_FCALL_AFTER_OP_EXPR_UNEXPECTED | STATUS3_PIPE,
+		assertExpr0Node( 5,  6, SYMBOL_STD,	TYPE12_SYNTAX_FCALL_AFTER_OP_EXPR_UNEXPECTED | CTX12_PIPE,
 				"f",		expr0, new int[] { 1 });
 	}
 	
@@ -103,16 +103,16 @@
 		RAstNode expr0;
 		
 		expr0= assertExpr("x |> f()",
-						 0,  8, PIPE_FORWARD, STATUS12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION | STATUS3_PIPE,
+						 0,  8, PIPE_FORWARD, TYPE12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION | CTX12_PIPE,
 								null );
 		assertExpr0Node( 0,  1, SYMBOL_STD,	0, "x",		expr0, new int[] { 0 });
 		assertExpr0Node( 5,  8, FCALL,		0, null,	expr0, new int[] { 1 });
 		assertExpr0Node( 5,  6, SYMBOL_STD,	0, "f",		expr0, new int[] { 1, 0 });
 		
 		expr0= assertExpr("x |> f1() |> f2()",
-						 0, 17, PIPE_FORWARD, STATUS12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION | STATUS3_PIPE | STATUSFLAG_ERROR_IN_CHILD,
+						 0, 17, PIPE_FORWARD, TYPE12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION | CTX12_PIPE | ERROR_IN_CHILD,
 								null );
-		assertExpr0Node( 0,  9, PIPE_FORWARD, STATUS12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION | STATUS3_PIPE,
+		assertExpr0Node( 0,  9, PIPE_FORWARD, TYPE12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION | CTX12_PIPE,
 								null,					expr0, new int[] { 0 });
 		assertExpr0Node( 0,  1, SYMBOL_STD,	0, "x",		expr0, new int[] { 0, 0 });
 		assertExpr0Node( 5,  9, FCALL,		0, null,	expr0, new int[] { 0, 1 });
@@ -121,7 +121,7 @@
 		assertExpr0Node(13, 15, SYMBOL_STD,	0, "f2",	expr0, new int[] { 1, 0 });
 		
 		expr0= assertExpr("f1() |> f2()",
-						 0, 12, PIPE_FORWARD, STATUS12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION | STATUS3_PIPE,
+						 0, 12, PIPE_FORWARD, TYPE12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION | CTX12_PIPE,
 								null );
 		assertExpr0Node( 0,  4, FCALL,		0, null,	expr0, new int[] { 0 });
 		assertExpr0Node( 0,  2, SYMBOL_STD,	0, "f1",	expr0, new int[] { 0, 0 });
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/rmodel/SourceAnalyzer.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/rmodel/SourceAnalyzer.java
index b3ac7a8..c11b267 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/rmodel/SourceAnalyzer.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/rmodel/SourceAnalyzer.java
@@ -45,6 +45,7 @@
 import org.eclipse.statet.internal.r.core.rmodel.RSourceElementByElementAccess.RPkgImport;
 import org.eclipse.statet.internal.r.core.rmodel.RSourceElementByElementAccess.RSlot;
 import org.eclipse.statet.ltk.ast.core.AstInfo;
+import org.eclipse.statet.ltk.core.StatusCodes;
 import org.eclipse.statet.ltk.model.core.element.LtkModelElement;
 import org.eclipse.statet.ltk.model.core.element.SourceStructElement;
 import org.eclipse.statet.ltk.model.core.element.WorkspaceSourceUnit;
@@ -59,7 +60,6 @@
 import org.eclipse.statet.r.core.rmodel.RSourceFrame;
 import org.eclipse.statet.r.core.rmodel.RSourceUnit;
 import org.eclipse.statet.r.core.rmodel.RSourceUnitModelInfo;
-import org.eclipse.statet.r.core.rsource.RSourceConstants;
 import org.eclipse.statet.r.core.rsource.RTerminal;
 import org.eclipse.statet.r.core.rsource.ast.Arithmetic;
 import org.eclipse.statet.r.core.rsource.ast.Assignment;
@@ -1102,7 +1102,7 @@
 	@Override
 	public void visit(final FDef.Arg node) throws InvocationTargetException {
 		final RAstNode nameNode= node.getNameChild();
-		if ((nameNode.getStatusCode() & RSourceConstants.STATUSFLAG_REAL_ERROR) == 0) {
+		if ((nameNode.getStatusCode() & StatusCodes.ERROR) == 0) {
 			final ElementAccess access= new ElementAccess.Default(node);
 			access.flags= ElementAccess.A_WRITE | ElementAccess.A_ARG;
 			access.nameNode= nameNode;
@@ -1396,7 +1396,7 @@
 	private static boolean isValidPackageName(final RAstNode node) {
 		switch (node.getNodeType()) {
 		case SYMBOL:
-			return ((node.getStatusCode() & RSourceConstants.STATUSFLAG_REAL_ERROR) == 0);
+			return ((node.getStatusCode() & StatusCodes.ERROR) == 0);
 		case STRING_CONST:
 			// TODO check
 			return true;
@@ -1415,7 +1415,7 @@
 		case SYMBOL:
 			return resolveElementName((Symbol) node, access);
 		case STRING_CONST:
-			if (allowString && ((node.getStatusCode() & RSourceConstants.STATUSFLAG_REAL_ERROR) == 0)) {
+			if (allowString && ((node.getStatusCode() & StatusCodes.ERROR) == 0)) {
 				access.nameNode= node;
 				return node.getText();
 			}
@@ -1443,7 +1443,7 @@
 	}
 	
 	private @Nullable String resolveElementName(final Symbol node, final ElementAccess access) {
-		if ((node.getStatusCode() & RSourceConstants.STATUSFLAG_REAL_ERROR) == 0) {
+		if ((node.getStatusCode() & StatusCodes.ERROR) == 0) {
 			access.nameNode= node;
 			return node.getText();
 		}
@@ -1507,7 +1507,7 @@
 		// register explicit
 		BuildSourceFrame envir;
 		if (namespaceName != null &&
-				((elementChild.getStatusCode() & RSourceConstants.STATUSFLAG_REAL_ERROR) == 0)) {
+				((elementChild.getStatusCode() & StatusCodes.ERROR) == 0)) {
 			envir= getPkgEnvir(namespaceName);
 		}
 		else {
@@ -3008,7 +3008,7 @@
 			if (args.getChildCount() > 0 && replValueArg != null) {
 				final FCall.Arg firstArg= args.getChild(0);
 				final RAstNode argValue= firstArg.getValueChild();
-				if (argValue != null) { //$NON-NLS-1$
+				if (argValue != null) {
 					final ElementAccess access= new ElementAccess.Default(node);
 					access.flags= ElementAccess.A_WRITE;
 					final String mainName= resolveElementName(argValue, access, false);
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/rmodel/SyntaxProblemReporter.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/rmodel/SyntaxProblemReporter.java
index 1ccf606..86d5483 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/rmodel/SyntaxProblemReporter.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/internal/r/core/rmodel/SyntaxProblemReporter.java
@@ -18,56 +18,57 @@
 import static org.eclipse.statet.jcommons.lang.ObjectUtils.nonNullLateInit;
 
 import static org.eclipse.statet.ltk.ast.core.AstNode.NA_OFFSET;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS123_SYNTAX_NUMBER_EXP_DIGIT_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS123_SYNTAX_NUMBER_HEX_DIGIT_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS123_SYNTAX_NUMBER_HEX_FLOAT_EXP_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS123_SYNTAX_NUMBER_INT_WITH_DEC_POINT;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS123_SYNTAX_NUMBER_NON_INT_WITH_L;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_CODEPOINT_INVALID;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_HEX_DIGIT_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_NOT_CLOSED;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_UNKOWN;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS123_SYNTAX_TEXT_NULLCHAR;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_CC_NOT_CLOSED;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_CONDITION_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_CONDITION_NOT_CLOSED;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_ELEMENTNAME_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_EXPR_AFTER_OP_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_EXPR_AS_ARGVALUE_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_EXPR_AS_BODY_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_EXPR_AS_CONDITION_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_EXPR_AS_FORSEQ_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_EXPR_BEFORE_OP_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_EXPR_IN_GROUP_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_FCALL_AFTER_OP_EXPR_UNEXPECTED;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_FCALL_AFTER_OP_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_FCALL_NOT_CLOSED;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_FDEF_ARGS_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_FDEF_ARGS_NOT_CLOSED;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_IF_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_IN_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_OPERATOR_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_SYMBOL_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_TEXT_INVALID;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_TOKEN_NOT_CLOSED;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_TOKEN_OPENING_INCOMPLETE;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_TOKEN_UNEXPECTED;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_TOKEN_UNKNOWN;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS3_ELSE;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS3_FDEF;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS3_FOR;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS3_IF;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS3_PIPE;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS3_REPEAT;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS3_WHILE;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUSFLAG_SUBSEQUENT;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS_MASK_12;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS_MASK_123;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS_MASK_3;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS_OK;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS_RUNTIME_ERROR;
+import static org.eclipse.statet.ltk.core.StatusCodes.CTX12;
+import static org.eclipse.statet.ltk.core.StatusCodes.SUBSEQUENT;
+import static org.eclipse.statet.ltk.core.StatusCodes.TYPE1;
+import static org.eclipse.statet.ltk.core.StatusCodes.TYPE12;
+import static org.eclipse.statet.ltk.core.StatusCodes.TYPE123;
+import static org.eclipse.statet.ltk.core.StatusCodes.TYPE1_RUNTIME_ERROR;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.CTX12_ELSE;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.CTX12_FDEF;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.CTX12_FOR;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.CTX12_IF;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.CTX12_PIPE;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.CTX12_REPEAT;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.CTX12_WHILE;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_EXPR_AFTER_OP_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_EXPR_AS_ARGVALUE_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_EXPR_AS_BODY_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_EXPR_AS_CONDITION_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_EXPR_AS_FORSEQ_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_EXPR_BEFORE_OP_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_EXPR_IN_GROUP_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_NUMBER_EXP_DIGIT_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_NUMBER_HEX_DIGIT_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_NUMBER_HEX_FLOAT_EXP_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_NUMBER_INT_WITH_DEC_POINT;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_NUMBER_NON_INT_WITH_L;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_SEQREL_UNEXPECTED;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_CODEPOINT_INVALID;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_HEX_DIGIT_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_NOT_CLOSED;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_UNKOWN;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_TEXT_NULLCHAR;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_CC_NOT_CLOSED;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_CONDITION_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_CONDITION_NOT_CLOSED;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_ELEMENTNAME_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_FCALL_AFTER_OP_EXPR_UNEXPECTED;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_FCALL_AFTER_OP_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_FDEF_ARGS_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_FDEF_ARGS_NOT_CLOSED;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_IF_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_IN_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_NODE_NOT_CLOSED;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_OPERATOR_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_SYMBOL_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_TEXT_INVALID;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_TOKEN_NOT_CLOSED;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_TOKEN_OPENING_INCOMPLETE;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_TOKEN_UNEXPECTED;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_TOKEN_UNKNOWN;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION;
 
 import java.lang.reflect.InvocationTargetException;
 import java.util.ArrayList;
@@ -85,6 +86,7 @@
 import org.eclipse.statet.ecommons.runtime.core.util.MessageBuilder;
 
 import org.eclipse.statet.internal.r.core.RCorePlugin;
+import org.eclipse.statet.ltk.core.StatusCodes;
 import org.eclipse.statet.ltk.core.source.SourceContent;
 import org.eclipse.statet.ltk.core.source.StatusDetail;
 import org.eclipse.statet.ltk.core.util.SourceMessageUtil;
@@ -139,10 +141,7 @@
 	
 	private static final int BUFFER_SIZE= 100;
 	
-	private static final int FULL_TEXT_LIMIT= 100;
-	private static final int START_TEXT_LIMIT= 25;
-	
-	private static final int MASK= 0x00ffffff;
+	private static final int MASK= TYPE123 | CTX12 | SUBSEQUENT;
 	
 	
 	private final boolean reportSubsequent= false;
@@ -189,8 +188,8 @@
 	
 	
 	private boolean requiredCheck(final int code) {
-		return code != STATUS_OK &&
-				(this.reportSubsequent || ((code & STATUSFLAG_SUBSEQUENT) == 0));
+		return code != StatusCodes.TYPE1_OK &&
+				(this.reportSubsequent || (code & SUBSEQUENT) == 0);
 	}
 	
 	protected final void addProblem(final int severity, final int code, final String message,
@@ -217,34 +216,35 @@
 	
 	private void handleCommonCodes(final RAstNode node, final int code)
 			throws BadLocationException, InvocationTargetException {
-		STATUS: switch (code & STATUS_MASK_12) {
-		case STATUS_RUNTIME_ERROR:
-			throw new InvocationTargetException(new CoreException(
-					new Status(IStatus.ERROR, RCore.BUNDLE_ID, -1,
-							"Error occurred when parsing source code. Please submit a bug report with a code snippet.", //$NON-NLS-1$
-							null)));
-		
-		case STATUS12_SYNTAX_TOKEN_UNEXPECTED:
+		TYPE12: switch (code & TYPE12) {
+		case TYPE12_SYNTAX_TOKEN_UNEXPECTED:
 			addProblem(Problem.SEVERITY_ERROR, code, this.messageBuilder.bind(
 					ProblemMessages.Syntax_TokenUnexpected_message,
 							this.messageUtil.getFullText(node) ),
 					node.getStartOffset(), node.getEndOffset() );
-			break STATUS;
-		case STATUS12_SYNTAX_FCALL_AFTER_OP_EXPR_UNEXPECTED:
-			switch (code & STATUS_MASK_3) {
-			case STATUS3_PIPE:
+			return;
+		case TYPE12_SYNTAX_FCALL_AFTER_OP_EXPR_UNEXPECTED:
+			switch (code & CTX12) {
+			case CTX12_PIPE:
 				addProblem(Problem.SEVERITY_ERROR, code,
 						ProblemMessages.Syntax_ExprUnexpected_FCallAfterPipeExpected_message,
 						node.getStartOffset(), node.getEndOffset() );
-				break STATUS;
+				return;
 			default:
-				handleUnknownCodes(node);
-				break STATUS;
+				break TYPE12;
 			}
-			
+		default:
+			break TYPE12;
+		}
+		switch (code & TYPE1) {
+		case TYPE1_RUNTIME_ERROR:
+			throw new InvocationTargetException(new CoreException(
+					new Status(IStatus.ERROR, RCore.BUNDLE_ID, -1,
+							"Error occurred when parsing source code. Please submit a bug report with a code snippet.", //$NON-NLS-1$
+							null)));
 		default:
 			handleUnknownCodes(node);
-			break STATUS;
+			return;
 		}
 	}
 	
@@ -300,11 +300,11 @@
 	public void visit(final SourceComponent node) throws InvocationTargetException {
 		final int code= (node.getStatusCode() & MASK);
 		if (requiredCheck(code)) {
-			try {
-//				STATUS: switch ((code & RSourceConstants.STATUS_MASK_2)) {
+			STATUS: try {
+//				switch (code & TYPE12) {
 //				default:
 					handleCommonCodes(node, code);
-//					break STATUS;
+					break STATUS;
 //				}
 			}
 			catch (final BadLocationException e) {
@@ -318,9 +318,9 @@
 	public void visit(final Block node) throws InvocationTargetException {
 		final int code= (node.getStatusCode() & MASK);
 		if (requiredCheck(code)) {
-			try {
-				STATUS: switch ((code & STATUS_MASK_12)) {
-				case STATUS12_SYNTAX_CC_NOT_CLOSED:
+			STATUS: try {
+				switch (code & TYPE12) {
+				case TYPE12_SYNTAX_CC_NOT_CLOSED:
 					addProblem(Problem.SEVERITY_ERROR, code,
 							ProblemMessages.Syntax_BlockNotClosed_message,
 							node.getEndOffset() - 1, node.getEndOffset() + 1 );
@@ -342,8 +342,8 @@
 		final int code= (node.getStatusCode() & MASK);
 		if (requiredCheck(code)) {
 			try {
-				STATUS: switch ((code & STATUS_MASK_12)) {
-				case STATUS12_SYNTAX_CC_NOT_CLOSED:
+				STATUS: switch (code & TYPE12) {
+				case TYPE12_SYNTAX_CC_NOT_CLOSED:
 					addProblem(Problem.SEVERITY_ERROR, code,
 							ProblemMessages.Syntax_GroupNotClosed_message,
 							node.getEndOffset() - 1, node.getEndOffset() + 1 );
@@ -364,19 +364,19 @@
 	public void visit(final CIfElse node) throws InvocationTargetException {
 		final int code= (node.getStatusCode() & MASK);
 		if (requiredCheck(code)) {
-			try {
-				STATUS: switch ((code & STATUS_MASK_12)) {
-				case STATUS12_SYNTAX_IF_MISSING:
+			STATUS: try {
+				switch (code & TYPE12) {
+				case TYPE12_SYNTAX_IF_MISSING:
 					addProblem(Problem.SEVERITY_ERROR, code,
 							ProblemMessages.Syntax_IfOfElseMissing_message,
 							node.getStartOffset(), node.getStartOffset() + 1 );
 					break STATUS;
-				case STATUS12_SYNTAX_CONDITION_MISSING:
+				case TYPE12_SYNTAX_CONDITION_MISSING:
 					addProblem(Problem.SEVERITY_ERROR, code,
 							ProblemMessages.Syntax_ConditionMissing_If_message,
 							node.getStartOffset() + 1, node.getStartOffset() + 3 );
 					break STATUS;
-				case STATUS12_SYNTAX_CONDITION_NOT_CLOSED:
+				case TYPE12_SYNTAX_CONDITION_NOT_CLOSED:
 					addProblem(Problem.SEVERITY_ERROR, code,
 							ProblemMessages.Syntax_ConditionNotClosed_If_message,
 							node.getCondChild().getEndOffset() - 1, node.getCondChild().getEndOffset() + 1 );
@@ -397,19 +397,19 @@
 	public void visit(final CForLoop node) throws InvocationTargetException {
 		final int code= (node.getStatusCode() & MASK);
 		if (requiredCheck(code)) {
-			try {
-				STATUS: switch ((code & STATUS_MASK_12)) {
-				case STATUS12_SYNTAX_CONDITION_MISSING:
+			STATUS: try {
+				switch (code & TYPE12) {
+				case TYPE12_SYNTAX_CONDITION_MISSING:
 					addProblem(Problem.SEVERITY_ERROR, code,
 							ProblemMessages.Syntax_ConditionMissing_For_message,
 							node.getStartOffset() + 2, node.getStartOffset() + 4 );
 					break STATUS;
-				case STATUS12_SYNTAX_CONDITION_NOT_CLOSED:
+				case TYPE12_SYNTAX_CONDITION_NOT_CLOSED:
 					addProblem(Problem.SEVERITY_ERROR, code,
 							ProblemMessages.Syntax_ConditionNotClosed_For_message,
 							node.getCondChild().getEndOffset() - 1, node.getCondChild().getEndOffset() + 1 );
 					break STATUS;
-				case STATUS12_SYNTAX_IN_MISSING:
+				case TYPE12_SYNTAX_IN_MISSING:
 					addProblem(Problem.SEVERITY_ERROR, code,
 							ProblemMessages.Syntax_InOfForConditionMissing_message,
 							node.getVarChild().getEndOffset() - 1, node.getVarChild().getEndOffset() + 1 );
@@ -431,12 +431,12 @@
 	public void visit(final CRepeatLoop node) throws InvocationTargetException {
 		final int code= (node.getStatusCode() & MASK);
 		if (requiredCheck(code)) {
-			try {
-				STATUS: {
+			STATUS: try {
+//				switch (code & TYPE12) {
 //				default:
 					handleCommonCodes(node, code);
 					break STATUS;
-				}
+//				}
 			}
 			catch (final BadLocationException e) {
 				throw new InvocationTargetException(e);
@@ -449,14 +449,14 @@
 	public void visit(final CWhileLoop node) throws InvocationTargetException {
 		final int code= (node.getStatusCode() & MASK);
 		if (requiredCheck(code)) {
-			try {
-				STATUS: switch ((code & STATUS_MASK_12)) {
-				case STATUS12_SYNTAX_CONDITION_MISSING:
+			STATUS: try {
+				switch (code & TYPE12) {
+				case TYPE12_SYNTAX_CONDITION_MISSING:
 					addProblem(Problem.SEVERITY_ERROR, code,
 							ProblemMessages.Syntax_ConditionMissing_While_message,
 							node.getStartOffset() + 4, node.getStartOffset() + 6 );
 					break;
-				case STATUS12_SYNTAX_CONDITION_NOT_CLOSED:
+				case TYPE12_SYNTAX_CONDITION_NOT_CLOSED:
 					addProblem(Problem.SEVERITY_ERROR, code,
 							ProblemMessages.Syntax_ConditionNotClosed_While_message,
 							node.getCondChild().getEndOffset() - 1, node.getCondChild().getEndOffset() + 1 );
@@ -477,12 +477,12 @@
 	public void visit(final CLoopCommand node) throws InvocationTargetException {
 		final int code= (node.getStatusCode() & MASK);
 		if (requiredCheck(code)) {
-			try {
-				STATUS: {
+			STATUS: try {
+//				switch (code & TYPE12) {
 //				default:
 					handleCommonCodes(node, code);
 					break STATUS;
-				}
+//				}
 			}
 			catch (final BadLocationException e) {
 				throw new InvocationTargetException(e);
@@ -495,9 +495,9 @@
 	public void visit(final FCall node) throws InvocationTargetException {
 		final int code= (node.getStatusCode() & MASK);
 		if (requiredCheck(code)) {
-			try {
-				STATUS: switch ((code & STATUS_MASK_12)) {
-				case STATUS12_SYNTAX_FCALL_NOT_CLOSED:
+			STATUS: try {
+				switch (code & TYPE12) {
+				case TYPE12_SYNTAX_NODE_NOT_CLOSED:
 					addProblem(Problem.SEVERITY_ERROR, code,
 							ProblemMessages.Syntax_FcallArgsNotClosed_message,
 							node.getArgsChild().getEndOffset() - 1, node.getArgsChild().getEndOffset() + 1 );
@@ -518,11 +518,11 @@
 	public void visit(final FCall.Args node) throws InvocationTargetException {
 		final int code= (node.getStatusCode() & MASK);
 		if (requiredCheck(code)) {
-			try {
-//				STATUS: switch ((code & STATUS_MASK_12)) {
+			STATUS: try {
+//				switch (code & TYPE12) {
 //				default:
 					handleCommonCodes(node, code);
-//					break STATUS;
+					break STATUS;
 //				}
 			}
 			catch (final BadLocationException e) {
@@ -536,11 +536,11 @@
 	public void visit(final FCall.Arg node) throws InvocationTargetException {
 		final int code= (node.getStatusCode() & MASK);
 		if (requiredCheck(code)) {
-			try {
-//				STATUS: switch ((code & STATUS_MASK_12)) {
+			STATUS: try {
+//				switch (code & TYPE12) {
 //				default:
 					handleCommonCodes(node, code);
-//					break STATUS;
+					break STATUS;
 //				}
 			}
 			catch (final BadLocationException e) {
@@ -554,22 +554,22 @@
 	public void visit(final FDef node) throws InvocationTargetException {
 		final int code= (node.getStatusCode() & MASK);
 		if (requiredCheck(code)) {
-			try {
+			STATUS: try {
 				final int offset;
-				STATUS: switch ((code & STATUS_MASK_123)) {
-				case STATUS12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION | STATUS3_FDEF:
+				switch (code & (TYPE12 | CTX12)) {
+				case TYPE12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION | CTX12_FDEF:
 					offset= node.getArgsCloseOffset();
 					addProblem(Problem.SEVERITY_ERROR, code,
 							ProblemMessages.Syntax_FdefShorthandUnsupported_message,
 							node.getStartOffset(), (offset != NA_OFFSET) ? offset + 1 : node.getArgsChild().getEndOffset() );
 					break STATUS;
-				case STATUS12_SYNTAX_FDEF_ARGS_MISSING:
+				case TYPE12_SYNTAX_FDEF_ARGS_MISSING:
 					offset= node.getStartOffset() + node.getOperator(0).text.length();
 					addProblem(Problem.SEVERITY_ERROR, code,
 							ProblemMessages.Syntax_FdefArgsMissing_message,
 							offset - 1, offset + 1 );
 					break STATUS;
-				case STATUS12_SYNTAX_FDEF_ARGS_NOT_CLOSED:
+				case TYPE12_SYNTAX_FDEF_ARGS_NOT_CLOSED:
 					offset= node.getArgsChild().getEndOffset();
 					addProblem(Problem.SEVERITY_ERROR, code,
 							ProblemMessages.Syntax_FdefArgsNotClosed_message,
@@ -591,11 +591,11 @@
 	public void visit(final FDef.Args node) throws InvocationTargetException {
 		final int code= (node.getStatusCode() & MASK);
 		if (requiredCheck(code)) {
-			try {
-//				STATUS: switch ((code & STATUS_MASK_12)) {
+			STATUS: try {
+//				switch (code & TYPE12) {
 //				default:
 					handleCommonCodes(node, code);
-//					break STATUS;
+					break STATUS;
 //				}
 			}
 			catch (final BadLocationException e) {
@@ -609,11 +609,11 @@
 	public void visit(final FDef.Arg node) throws InvocationTargetException {
 		final int code= (node.getStatusCode() & MASK);
 		if (requiredCheck(code)) {
-			try {
-//				STATUS: switch ((code & STATUS_MASK_12)) {
+			STATUS: try {
+//				switch (code & TYPE12) {
 //				default:
 					handleCommonCodes(node, code);
-//					break STATUS;
+					break STATUS;
 //				}
 			}
 			catch (final BadLocationException e) {
@@ -627,11 +627,11 @@
 	public void visit(final Assignment node) throws InvocationTargetException {
 		final int code= (node.getStatusCode() & MASK);
 		if (requiredCheck(code)) {
-			try {
-//				STATUS: switch ((code & STATUS_MASK_12)) {
+			STATUS: try {
+//				switch (code & TYPE12) {
 //				default:
 					handleCommonCodes(node, code);
-//					break STATUS;
+					break STATUS;
 //				}
 			}
 			catch (final BadLocationException e) {
@@ -645,9 +645,9 @@
 	public void visit(final Pipe node) throws InvocationTargetException {
 		final int code= (node.getStatusCode() & MASK);
 		if (requiredCheck(code)) {
-			try {
-				STATUS: switch ((code & STATUS_MASK_123)) {
-				case STATUS12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION | STATUS3_PIPE:
+			STATUS: try {
+				switch (code & (TYPE12 | CTX12)) {
+				case TYPE12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION | CTX12_PIPE:
 					addProblem(Problem.SEVERITY_ERROR, code,
 							ProblemMessages.Syntax_PipeRightUnsupported_message,
 							node.getStartOffset(), node.getEndOffset() );
@@ -668,11 +668,11 @@
 	public void visit(final Model node) throws InvocationTargetException {
 		final int code= (node.getStatusCode() & MASK);
 		if (requiredCheck(code)) {
-			try {
-//				STATUS: switch ((code & STATUS_MASK_12)) {
+			STATUS: try {
+//				switch (code & TYPE12) {
 //				default:
 					handleCommonCodes(node, code);
-//					break STATUS;
+					break STATUS;
 //				}
 			}
 			catch (final BadLocationException e) {
@@ -686,18 +686,17 @@
 	public void visit(final Relational node) throws InvocationTargetException {
 		final int code= (node.getStatusCode() & MASK);
 		if (requiredCheck(code)) {
-			try {
-				if ((code & STATUS_MASK_123) == (RSourceConstants.STATUS123_SYNTAX_SEQREL_UNEXPECTED)) {
+			STATUS: try {
+				switch (code & TYPE123) {
+				case TYPE123_SYNTAX_SEQREL_UNEXPECTED:
 					addProblem(Problem.SEVERITY_ERROR, code, this.messageBuilder.bind(
 							ProblemMessages.Syntax_TokenUnexpected_SeqRel_message,
 									node.getOperator(0).text ),
 							node.getStartOffset(), node.getEndOffset() );
-				}
-				else {
-//				STATUS: switch ((code & STATUS_MASK_12)) {
-//				default:
+					break STATUS;
+				default:
 					handleCommonCodes(node, code);
-//					break STATUS;
+					break STATUS;
 				}
 			}
 			catch (final BadLocationException e) {
@@ -711,11 +710,11 @@
 	public void visit(final Logical node) throws InvocationTargetException {
 		final int code= (node.getStatusCode() & MASK);
 		if (requiredCheck(code)) {
-			try {
-//				STATUS: switch ((code & STATUS_MASK_12)) {
+			STATUS: try {
+//				switch (code & TYPE12) {
 //				default:
 					handleCommonCodes(node, code);
-//					break STATUS;
+					break STATUS;
 //				}
 			}
 			catch (final BadLocationException e) {
@@ -729,11 +728,11 @@
 	public void visit(final Arithmetic node) throws InvocationTargetException {
 		final int code= (node.getStatusCode() & MASK);
 		if (requiredCheck(code)) {
-			try {
-//				STATUS: switch ((code & STATUS_MASK_12)) {
+			STATUS: try {
+//				switch (code & TYPE12) {
 //				default:
 					handleCommonCodes(node, code);
-//					break STATUS;
+					break STATUS;
 //				}
 			}
 			catch (final BadLocationException e) {
@@ -747,11 +746,11 @@
 	public void visit(final Power node) throws InvocationTargetException {
 		final int code= (node.getStatusCode() & MASK);
 		if (requiredCheck(code)) {
-			try {
-//				STATUS: switch ((code & STATUS_MASK_12)) {
+			STATUS: try {
+//				switch (code & TYPE12) {
 //				default:
 					handleCommonCodes(node, code);
-//					break STATUS;
+					break STATUS;
 //				}
 			}
 			catch (final BadLocationException e) {
@@ -765,11 +764,11 @@
 	public void visit(final Seq node) throws InvocationTargetException {
 		final int code= (node.getStatusCode() & MASK);
 		if (requiredCheck(code)) {
-			try {
-//				STATUS: switch ((code & STATUS_MASK_12)) {
+			STATUS: try {
+//				switch (code & TYPE12) {
 //				default:
 					handleCommonCodes(node, code);
-//					break STATUS;
+					break STATUS;
 //				}
 			}
 			catch (final BadLocationException e) {
@@ -783,9 +782,9 @@
 	public void visit(final Special node) throws InvocationTargetException {
 		final int code= (node.getStatusCode() & MASK);
 		if (requiredCheck(code)) {
-			try {
-				STATUS: switch ((code & STATUS_MASK_12)) {
-				case STATUS12_SYNTAX_TOKEN_NOT_CLOSED:
+			STATUS: try {
+				switch (code & TYPE12) {
+				case TYPE12_SYNTAX_TOKEN_NOT_CLOSED:
 					addProblem(Problem.SEVERITY_ERROR, code, this.messageBuilder.bind(
 							ProblemMessages.Syntax_SpecialNotClosed_message,
 									this.valueFormatter.escapeString(this.messageUtil.getStartText(node, 1)) ),
@@ -807,12 +806,12 @@
 	public void visit(final Sign node) throws InvocationTargetException {
 		final int code= (node.getStatusCode() & MASK);
 		if (requiredCheck(code)) {
-			try {
-				STATUS: {
+			STATUS: try {
+//				switch (code & TYPE12) {
 //				default:
 					handleCommonCodes(node, code);
 					break STATUS;
-				}
+//				}
 			}
 			catch (final BadLocationException e) {
 				throw new InvocationTargetException(e);
@@ -825,9 +824,9 @@
 	public void visit(final SubIndexed node) throws InvocationTargetException {
 		final int code= (node.getStatusCode() & MASK);
 		if (requiredCheck(code)) {
-			try {
-				STATUS: switch ((code & STATUS_MASK_12)) {
-				case RSourceConstants.STATUS12_SYNTAX_SUBINDEXED_NOT_CLOSED:
+			STATUS: try {
+				switch (code & TYPE12) {
+				case RSourceConstants.TYPE12_SYNTAX_NODE_NOT_CLOSED:
 					if (node.getNodeType() == NodeType.SUB_INDEXED_S) {
 						addProblem(Problem.SEVERITY_ERROR, code, this.messageBuilder.bind(
 								ProblemMessages.Syntax_SubindexedNotClosed_S_message,
@@ -865,12 +864,12 @@
 	public void visit(final SubIndexed.Args node) throws InvocationTargetException {
 		final int code= (node.getStatusCode() & MASK);
 		if (requiredCheck(code)) {
-			try {
-				STATUS: {
+			STATUS: try {
+//				switch (code & TYPE12) {
 //				default:
 					handleCommonCodes(node, code);
 					break STATUS;
-				}
+//				}
 			}
 			catch (final BadLocationException e) {
 				throw new InvocationTargetException(e);
@@ -883,12 +882,12 @@
 	public void visit(final SubIndexed.Arg node) throws InvocationTargetException {
 		final int code= (node.getStatusCode() & MASK);
 		if (requiredCheck(code)) {
-			try {
-				STATUS: {
+			STATUS: try {
+//				switch (code & TYPE12) {
 //				default:
 					handleCommonCodes(node, code);
 					break STATUS;
-				}
+//				}
 			}
 			catch (final BadLocationException e) {
 				throw new InvocationTargetException(e);
@@ -901,12 +900,12 @@
 	public void visit(final SubNamed node) throws InvocationTargetException {
 		final int code= (node.getStatusCode() & MASK);
 		if (requiredCheck(code)) {
-			try {
-				STATUS: {
+			STATUS: try {
+//				switch (code & TYPE12) {
 //				default:
 					handleCommonCodes(node, code);
 					break STATUS;
-				}
+//				}
 			}
 			catch (final BadLocationException e) {
 				throw new InvocationTargetException(e);
@@ -919,11 +918,11 @@
 	public void visit(final NSGet node) throws InvocationTargetException {
 		final int code= (node.getStatusCode() & MASK);
 		if (requiredCheck(code)) {
-			try {
-//				STATUS: switch ((code & STATUS_MASK_12)) {
+			STATUS: try {
+//				switch (code & TYPE12) {
 //				default:
 					handleCommonCodes(node, code);
-//					break STATUS;
+					break STATUS;
 //				}
 			}
 			catch (final BadLocationException e) {
@@ -935,37 +934,37 @@
 	
 	private void handleTextInvalid(final RAstNode node, final int code) throws BadLocationException {
 		final StatusDetail detail= StatusDetail.getStatusDetail(node);
-		switch ((code & STATUS_MASK_123)) {
-		case STATUS123_SYNTAX_TEXT_NULLCHAR:
+		switch (code & TYPE123) {
+		case TYPE123_SYNTAX_TEXT_NULLCHAR:
 			addProblem(Problem.SEVERITY_ERROR, code,
 					ProblemMessages.Syntax_String_NullCharNotAllowed_message,
 					detail.getStartOffset(), detail.getEndOffset() );
 			return;
-		case STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_HEX_DIGIT_MISSING:
+		case TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_HEX_DIGIT_MISSING:
 			addProblem(Problem.SEVERITY_ERROR, code, this.messageBuilder.bind(
 					ProblemMessages.Syntax_String_EscapeSeqHexDigitMissing_message,
 							detail.getText() ),
 					detail.getStartOffset(), detail.getEndOffset() );
 			return;
-		case STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_NOT_CLOSED:
+		case TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_NOT_CLOSED:
 			addProblem(Problem.SEVERITY_ERROR, code, this.messageBuilder.bind(
 					ProblemMessages.Syntax_String_EscapeSeqNotClosed_message,
 							detail.getText() ),
 					detail.getStartOffset(), detail.getEndOffset() );
 			return;
-		case STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED:
+		case TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED:
 			addProblem(Problem.SEVERITY_ERROR, code, this.messageBuilder.bind(
 					ProblemMessages.Syntax_String_QuotedSymbol_EscapeSeqUnexpected_message,
 							detail.getText() ),
 					detail.getStartOffset(), detail.getEndOffset() );
 			return;
-		case STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_UNKOWN:
+		case TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_UNKOWN:
 			addProblem(Problem.SEVERITY_ERROR, code, this.messageBuilder.bind(
 					ProblemMessages.Syntax_String_EscapeSeqUnknown_message,
 							detail.getText() ),
 					detail.getStartOffset(), detail.getEndOffset() );
 			return;
-		case STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_CODEPOINT_INVALID:
+		case TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_CODEPOINT_INVALID:
 			addProblem(Problem.SEVERITY_ERROR, code, this.messageBuilder.bind(
 					ProblemMessages.Syntax_String_CodePointInvalid_message,
 							detail.getText() ),
@@ -982,15 +981,15 @@
 	public void visit(final StringConst node) throws InvocationTargetException {
 		final int code= (node.getStatusCode() & MASK);
 		if (requiredCheck(code)) {
-			try {
-				STATUS: switch ((code & STATUS_MASK_12)) {
-				case STATUS12_SYNTAX_TOKEN_OPENING_INCOMPLETE:
+			STATUS: try {
+				switch (code & TYPE12) {
+				case TYPE12_SYNTAX_TOKEN_OPENING_INCOMPLETE:
 //					(node.getOperator(0) == RTerminal.STRING_R)
 					addProblem(Problem.SEVERITY_ERROR, code,
 							ProblemMessages.Syntax_StringROpeningIncomplete_message,
 							node.getStartOffset(), node.getEndOffset() );
 					break STATUS;
-				case STATUS12_SYNTAX_TOKEN_NOT_CLOSED:
+				case TYPE12_SYNTAX_TOKEN_NOT_CLOSED:
 					addProblem(Problem.SEVERITY_ERROR, code,
 							(node.getOperator(0) == RTerminal.STRING_R) ?
 									this.messageBuilder.bind(ProblemMessages.Syntax_StringRNotClosed_message,
@@ -1001,7 +1000,7 @@
 									node.getOperator(0).text ),
 							node.getStartOffset(), node.getEndOffset() );
 					break STATUS;
-				case STATUS12_SYNTAX_TEXT_INVALID:
+				case TYPE12_SYNTAX_TEXT_INVALID:
 					handleTextInvalid(node, code);
 					break STATUS;
 				default:
@@ -1019,33 +1018,33 @@
 	public void visit(final NumberConst node) throws InvocationTargetException {
 		final int code= (node.getStatusCode() & MASK);
 		if (requiredCheck(code)) {
-			try {
-				STATUS: switch ((code & STATUS_MASK_123)) {
-				case STATUS123_SYNTAX_NUMBER_HEX_DIGIT_MISSING:
+			STATUS: try {
+				switch (code & TYPE123) {
+				case TYPE123_SYNTAX_NUMBER_HEX_DIGIT_MISSING:
 					addProblem(Problem.SEVERITY_ERROR, code, this.messageBuilder.bind(
 							ProblemMessages.Syntax_Number_HexDigitMissing_message,
 									this.messageUtil.getFullText(node) ),
 							node.getStartOffset(), node.getEndOffset() );
 					break STATUS;
-				case STATUS123_SYNTAX_NUMBER_HEX_FLOAT_EXP_MISSING:
+				case TYPE123_SYNTAX_NUMBER_HEX_FLOAT_EXP_MISSING:
 					addProblem(Problem.SEVERITY_ERROR, code, this.messageBuilder.bind(
 							ProblemMessages.Syntax_Number_HexFloatExpMissing_message,
 									this.messageUtil.getFullText(node) ),
 							node.getStartOffset(), node.getEndOffset() );
 					break STATUS;
-				case STATUS123_SYNTAX_NUMBER_EXP_DIGIT_MISSING:
+				case TYPE123_SYNTAX_NUMBER_EXP_DIGIT_MISSING:
 					addProblem(Problem.SEVERITY_ERROR, code, this.messageBuilder.bind(
 							ProblemMessages.Syntax_Number_ExpDigitMissing_message,
 									this.messageUtil.getFullText(node) ),
 							node.getStartOffset(), node.getEndOffset() );
 					break STATUS;
-				case STATUS123_SYNTAX_NUMBER_NON_INT_WITH_L:
+				case TYPE123_SYNTAX_NUMBER_NON_INT_WITH_L:
 					addProblem(Problem.SEVERITY_WARNING, code, this.messageBuilder.bind(
 							ProblemMessages.Syntax_Number_NonIntWithLLiteral_message,
 									this.messageUtil.getFullText(node) ),
 							node.getStartOffset(), node.getEndOffset() );
 					break STATUS;
-				case STATUS123_SYNTAX_NUMBER_INT_WITH_DEC_POINT:
+				case TYPE123_SYNTAX_NUMBER_INT_WITH_DEC_POINT:
 					addProblem(Problem.SEVERITY_WARNING, code, this.messageBuilder.bind(
 							ProblemMessages.Syntax_Number_IntWithDecPoint_message,
 									this.messageUtil.getFullText(node) ),
@@ -1066,11 +1065,11 @@
 	public void visit(final NullConst node) throws InvocationTargetException {
 		final int code= (node.getStatusCode() & MASK);
 		if (requiredCheck(code)) {
-			try {
-//				STATUS: switch ((code & STATUS_MASK_12)) {
+			STATUS: try {
+//				switch (code & TYPE12) {
 //				default:
 					handleCommonCodes(node, code);
-//					break STATUS;
+					break STATUS;
 //				}
 			}
 			catch (final BadLocationException e) {
@@ -1084,27 +1083,27 @@
 	public void visit(final Symbol node) throws InvocationTargetException {
 		final int code= (node.getStatusCode() & MASK);
 		if (requiredCheck(code)) {
-			try {
-				STATUS: switch ((code & STATUS_MASK_12)) {
-				case STATUS12_SYNTAX_SYMBOL_MISSING:
+			STATUS: try {
+				switch (code & TYPE12) {
+				case TYPE12_SYNTAX_SYMBOL_MISSING:
 					addProblem(Problem.SEVERITY_ERROR, code,
 							ProblemMessages.Syntax_SymbolMissing_message,
 							node.getStartOffset() - 1, node.getEndOffset() + 1 );
 					break STATUS;
-				case STATUS12_SYNTAX_ELEMENTNAME_MISSING:
+				case TYPE12_SYNTAX_ELEMENTNAME_MISSING:
 					// this can be a status for string too, but never used there
 					addProblem(Problem.SEVERITY_ERROR, code,
 							ProblemMessages.Syntax_ElementnameMissing_message,
 							node.getStartOffset() - 1, node.getEndOffset() + 1 );
 					break STATUS;
-				case STATUS12_SYNTAX_TOKEN_NOT_CLOSED:
+				case TYPE12_SYNTAX_TOKEN_NOT_CLOSED:
 					// assert(node.getOperator(0) == RTerminal.SYMBOL_G)
 					addProblem(Problem.SEVERITY_ERROR, code, this.messageBuilder.bind(
 							ProblemMessages.Syntax_QuotedSymbolNotClosed_message,
 									this.valueFormatter.escapeString(this.messageUtil.getStartText(node, 1)) ),
 							node.getEndOffset() - 1, node.getEndOffset() + 1 );
 					break STATUS;
-				case STATUS12_SYNTAX_TEXT_INVALID:
+				case TYPE12_SYNTAX_TEXT_INVALID:
 					// assert(node.getOperator(0) == RTerminal.SYMBOL_G)
 					handleTextInvalid(node, code);
 					break STATUS;
@@ -1123,11 +1122,11 @@
 	public void visit(final Help node) throws InvocationTargetException {
 		final int code= (node.getStatusCode() & MASK);
 		if (requiredCheck(code)) {
-			try {
-//				STATUS: switch ((code & STATUS_MASK_12)) {
+			STATUS: try {
+//				switch (code & TYPE12) {
 //				default:
 					handleCommonCodes(node, code);
-//					break;
+					break STATUS;
 //				}
 			}
 			catch (final BadLocationException e) {
@@ -1141,28 +1140,22 @@
 	public void visit(final Dummy node) throws InvocationTargetException {
 		final int code= (node.getStatusCode() & MASK);
 		if (requiredCheck(code)) {
-			try {
-				STATUS: switch (code & STATUS_MASK_12) {
-				case STATUS12_SYNTAX_TOKEN_UNKNOWN:
-					addProblem(Problem.SEVERITY_ERROR, code, this.messageBuilder.bind(
-							ProblemMessages.Syntax_TokenUnknown_message,
-									this.messageUtil.getFullText(node) ),
-							node.getStartOffset(), node.getEndOffset() );
-					break STATUS;
-				case STATUS12_SYNTAX_EXPR_BEFORE_OP_MISSING:
+			STATUS: try {
+				switch (code & TYPE123) {
+				case TYPE123_SYNTAX_EXPR_BEFORE_OP_MISSING:
 					addProblem(Problem.SEVERITY_ERROR, code,
 							ProblemMessages.Syntax_ExprBeforeOpMissing_message,
 							extStartOffset(node.getStartOffset()), node.getEndOffset() + 1 );
 					break STATUS;
-				case STATUS12_SYNTAX_EXPR_AFTER_OP_MISSING:
+				case TYPE123_SYNTAX_EXPR_AFTER_OP_MISSING:
 					addProblem(Problem.SEVERITY_ERROR, code, this.messageBuilder.bind(
 							ProblemMessages.Syntax_ExprAfterOpMissing_message,
 									this.messageUtil.getFullText(node) ),
 							node.getStartOffset() - 1, extEndOffset(node.getEndOffset()) );
 					break STATUS;
-				case STATUS12_SYNTAX_FCALL_AFTER_OP_MISSING:
-					switch (code & STATUS_MASK_3) {
-					case STATUS3_PIPE:
+				case TYPE12_SYNTAX_FCALL_AFTER_OP_MISSING:
+					switch (code & CTX12) {
+					case CTX12_PIPE:
 						addProblem(Problem.SEVERITY_ERROR, code,
 								ProblemMessages.Syntax_FCallAfterPipeMissing_message,
 								node.getStartOffset() - 1, extEndOffset(node.getEndOffset()) );
@@ -1176,33 +1169,33 @@
 //							ProblemMessages.,
 //							node.getStartOffset() - 1, node.getEndOffset() + 1);
 //					break;
-				case STATUS12_SYNTAX_EXPR_AS_CONDITION_MISSING:
+				case TYPE123_SYNTAX_EXPR_AS_CONDITION_MISSING:
 					addProblem(Problem.SEVERITY_ERROR, code,
 							ProblemMessages.Syntax_ExprAsConditionMissing_message,
 							node.getStartOffset() - 1, node.getEndOffset() + 1 );
 					break STATUS;
-				case STATUS12_SYNTAX_EXPR_AS_FORSEQ_MISSING:
+				case TYPE123_SYNTAX_EXPR_AS_FORSEQ_MISSING:
 					addProblem(Problem.SEVERITY_ERROR, code,
 							ProblemMessages.Syntax_ExprAsForSequenceMissing_message,
 							node.getStartOffset() - 1, node.getEndOffset() + 1 );
 					break STATUS;
-				case STATUS12_SYNTAX_EXPR_AS_BODY_MISSING:
+				case TYPE123_SYNTAX_EXPR_AS_BODY_MISSING:
 					{	final String message;
-						STATUS3: switch (code & STATUS_MASK_3) {
-						case STATUS3_IF:
+						CTX12: switch (code & CTX12) {
+						case CTX12_IF:
 							message= ProblemMessages.Syntax_ExprAsThenBodyMissing_message;
-							break STATUS3;
-						case STATUS3_ELSE:
+							break CTX12;
+						case CTX12_ELSE:
 							message= ProblemMessages.Syntax_ExprAsElseBodyMissing_message;
-							break STATUS3;
-						case STATUS3_FOR:
-						case STATUS3_WHILE:
-						case STATUS3_REPEAT:
+							break CTX12;
+						case CTX12_FOR:
+						case CTX12_WHILE:
+						case CTX12_REPEAT:
 							message= ProblemMessages.Syntax_ExprAsLoopBodyMissing_message;
-							break STATUS3;
-						case STATUS3_FDEF:
+							break CTX12;
+						case CTX12_FDEF:
 							message= ProblemMessages.Syntax_ExprAsFdefBodyMissing_message;
-							break STATUS3;
+							break CTX12;
 						default:
 							handleUnknownCodes(node);
 							break STATUS;
@@ -1217,30 +1210,37 @@
 						}
 						break STATUS;
 					}
-				case STATUS12_SYNTAX_EXPR_IN_GROUP_MISSING:
+				case TYPE123_SYNTAX_EXPR_IN_GROUP_MISSING:
 					addProblem(Problem.SEVERITY_ERROR, code,
 							ProblemMessages.Syntax_ExprInGroupMissing_message,
 							node.getStartOffset() - 1, node.getEndOffset() + 1 );
 					break STATUS;
-				case STATUS12_SYNTAX_EXPR_AS_ARGVALUE_MISSING:
-					if ((code & STATUS_MASK_3) == RSourceConstants.STATUS3_FDEF) {
+				case TYPE123_SYNTAX_EXPR_AS_ARGVALUE_MISSING:
+					if ((code & CTX12) == RSourceConstants.CTX12_FDEF) {
 						addProblem(Problem.SEVERITY_ERROR, code,
 								ProblemMessages.Syntax_ExprAsFdefArgDefaultMissing_message,
 								node.getStartOffset() - 1, node.getEndOffset() );
 					}
 					else {
-						handleUnknownCodes(node);
+						break;
 					}
 					break STATUS;
-				case STATUS12_SYNTAX_OPERATOR_MISSING:
+				}
+				switch (code & TYPE12) {
+				case TYPE12_SYNTAX_TOKEN_UNKNOWN:
+					addProblem(Problem.SEVERITY_ERROR, code, this.messageBuilder.bind(
+							ProblemMessages.Syntax_TokenUnknown_message,
+									this.messageUtil.getFullText(node) ),
+							node.getStartOffset(), node.getEndOffset() );
+					break STATUS;
+				case TYPE12_SYNTAX_OPERATOR_MISSING:
 					if (node.getChildCount() == 2) {
 						addProblem(Problem.SEVERITY_ERROR, code,
 								ProblemMessages.Syntax_OperatorMissing_message,
 								node.getChild(0).getEndOffset() - 1, node.getChild(1).getStartOffset() + 1 );
+						break STATUS;
 					}
-					else {
-						handleUnknownCodes(node);
-					}
+					handleUnknownCodes(node);
 					break STATUS;
 				default:
 					handleCommonCodes(node, code);
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/data/RValueValidator.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/data/RValueValidator.java
index e2c6434..90692ef 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/data/RValueValidator.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/data/RValueValidator.java
@@ -16,8 +16,8 @@
 
 import org.eclipse.statet.jcommons.text.core.input.StringParserInput;
 
+import org.eclipse.statet.ltk.core.StatusCodes;
 import org.eclipse.statet.r.core.rsource.RLexer;
-import org.eclipse.statet.r.core.rsource.RSourceConstants;
 import org.eclipse.statet.r.core.rsource.RTerminal;
 import org.eclipse.statet.rj.data.RCharacterStore;
 import org.eclipse.statet.rj.data.RComplexStore;
@@ -294,7 +294,7 @@
 			break;
 		}
 		
-		if ((this.lexer.getFlags() & RSourceConstants.STATUSFLAG_REAL_ERROR) != 0) {
+		if ((this.lexer.getFlags() & StatusCodes.ERROR) != 0) {
 			return INVALID;
 		}
 		
@@ -371,7 +371,7 @@
 				this.complexValue.setNum(0, addSign(sign, value));
 				sign= (this.lexer.getType() == RTerminal.PLUS) ? 1 : -1;
 				nextToken= this.lexer.next();
-				if ((this.lexer.getFlags() & RSourceConstants.STATUSFLAG_REAL_ERROR) != 0) {
+				if ((this.lexer.getFlags() & StatusCodes.ERROR) != 0) {
 					return INVALID;
 				}
 				switch (nextToken) {
@@ -484,7 +484,7 @@
 			this.lexer.reset(new StringParserInput(expression).init());
 			
 			if (this.lexer.next() != RTerminal.STRING_D
-					|| (this.lexer.getFlags() & RSourceConstants.STATUSFLAG_REAL_ERROR) != 0) {
+					|| (this.lexer.getFlags() & StatusCodes.ERROR) != 0) {
 				return false;
 			}
 			expression= this.lexer.getText();
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/refactoring/RRefactoringAdapter.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/refactoring/RRefactoringAdapter.java
index fc0885d..57755ad 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/refactoring/RRefactoringAdapter.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/refactoring/RRefactoringAdapter.java
@@ -35,6 +35,7 @@
 import org.eclipse.statet.internal.r.core.refactoring.Messages;
 import org.eclipse.statet.ltk.ast.core.AstInfo;
 import org.eclipse.statet.ltk.ast.core.util.AstSelection;
+import org.eclipse.statet.ltk.core.StatusCodes;
 import org.eclipse.statet.ltk.model.core.ModelManager;
 import org.eclipse.statet.ltk.model.core.element.SourceUnit;
 import org.eclipse.statet.ltk.model.core.element.SourceUnitModelInfo;
@@ -45,7 +46,6 @@
 import org.eclipse.statet.r.core.rmodel.RModel;
 import org.eclipse.statet.r.core.rmodel.RSourceUnit;
 import org.eclipse.statet.r.core.rsource.RLexer;
-import org.eclipse.statet.r.core.rsource.RSourceConstants;
 import org.eclipse.statet.r.core.rsource.RSourceIndenter;
 import org.eclipse.statet.r.core.rsource.RTerminal;
 import org.eclipse.statet.r.core.rsource.ast.Assignment;
@@ -235,7 +235,7 @@
 					Messages.RIdentifiers_error_Empty_message;
 		}
 		if ((nextToken != RTerminal.SYMBOL && nextToken != RTerminal.SYMBOL_G)
-				|| ((this.lexer.getFlags() & RSourceConstants.STATUSFLAG_REAL_ERROR) != 0)
+				|| ((this.lexer.getFlags() & StatusCodes.ERROR) != 0)
 				|| (this.lexer.next() != RTerminal.EOF)) {
 			return (identifierMessageName != null) ?
 					NLS.bind(Messages.RIdentifiers_error_InvalidFor_message, identifierMessageName, Messages.RIdentifiers_error_Empty_message) :
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rmodel/RGraphicFunctions.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rmodel/RGraphicFunctions.java
index 7dc455b..47ae790 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rmodel/RGraphicFunctions.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rmodel/RGraphicFunctions.java
@@ -30,7 +30,7 @@
 import org.eclipse.statet.ecommons.graphics.core.NamedColorDef;
 import org.eclipse.statet.ecommons.graphics.core.NumberedRefColorDef;
 
-import org.eclipse.statet.r.core.rsource.RSourceConstants;
+import org.eclipse.statet.ltk.core.StatusCodes;
 import org.eclipse.statet.r.core.rsource.ast.FCall;
 import org.eclipse.statet.r.core.rsource.ast.NSGet;
 import org.eclipse.statet.r.core.rsource.ast.NodeType;
@@ -986,7 +986,7 @@
 	}
 	
 	private @Nullable String resolveElementName(final RAstNode node) {
-		if ((node.getStatusCode() & RSourceConstants.STATUSFLAG_REAL_ERROR) != 0) {
+		if ((node.getStatusCode() & StatusCodes.ERROR) != 0) {
 			return null;
 		}
 		switch (node.getNodeType()) {
@@ -996,9 +996,9 @@
 		case NS_GET: {
 			final NSGet ns= (NSGet) node;
 			if (ns.getNamespaceChild().getNodeType() == NodeType.SYMBOL
-					&& (ns.getNamespaceChild().getStatusCode() & RSourceConstants.STATUSFLAG_REAL_ERROR) == 0
+					&& (ns.getNamespaceChild().getStatusCode() & StatusCodes.ERROR) == 0
 					&& ns.getElementChild().getNodeType() == NodeType.SYMBOL
-					&& (ns.getElementChild().getStatusCode() & RSourceConstants.STATUSFLAG_REAL_ERROR) == 0) {
+					&& (ns.getElementChild().getStatusCode() & StatusCodes.ERROR) == 0) {
 				final String namespace= ns.getNamespaceChild().getText();
 				if (namespace != null
 						&& (namespace.equals("base") //$NON-NLS-1$
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/RLexer.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/RLexer.java
index 3845ee8..46c509a 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/RLexer.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/RLexer.java
@@ -14,19 +14,19 @@
 
 package org.eclipse.statet.r.core.rsource;
 
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS123_SYNTAX_NUMBER_EXP_DIGIT_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS123_SYNTAX_NUMBER_HEX_DIGIT_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS123_SYNTAX_NUMBER_HEX_FLOAT_EXP_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS123_SYNTAX_NUMBER_INT_WITH_DEC_POINT;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS123_SYNTAX_NUMBER_NON_INT_WITH_L;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_CODEPOINT_INVALID;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_HEX_DIGIT_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_NOT_CLOSED;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_UNKOWN;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS123_SYNTAX_TEXT_NULLCHAR;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_TOKEN_NOT_CLOSED;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_TOKEN_OPENING_INCOMPLETE;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS_MASK_12;
+import static org.eclipse.statet.ltk.core.StatusCodes.TYPE12;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_NUMBER_EXP_DIGIT_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_NUMBER_HEX_DIGIT_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_NUMBER_HEX_FLOAT_EXP_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_NUMBER_INT_WITH_DEC_POINT;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_NUMBER_NON_INT_WITH_L;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_CODEPOINT_INVALID;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_HEX_DIGIT_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_NOT_CLOSED;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_UNKOWN;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_TEXT_NULLCHAR;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_TOKEN_NOT_CLOSED;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_TOKEN_OPENING_INCOMPLETE;
 
 import org.eclipse.statet.jcommons.lang.NonNullByDefault;
 import org.eclipse.statet.jcommons.lang.Nullable;
@@ -187,7 +187,7 @@
 		case EOF:
 			return null;
 		case SPECIAL:
-			if ((this.foundFlags & STATUS_MASK_12) == STATUS12_SYNTAX_TOKEN_NOT_CLOSED) {
+			if ((this.foundFlags & TYPE12) == TYPE12_SYNTAX_TOKEN_NOT_CLOSED) {
 				return this.input.getString(1, this.foundNum);
 			}
 			return this.input.getString(1, this.foundNum - 1);
@@ -197,15 +197,15 @@
 			if (this.textBuilderText) {
 				return this.textBuilder.toString();
 			}
-			if ((this.foundFlags & STATUS_MASK_12) == STATUS12_SYNTAX_TOKEN_NOT_CLOSED) {
+			if ((this.foundFlags & TYPE12) == TYPE12_SYNTAX_TOKEN_NOT_CLOSED) {
 				return this.input.getString(1, this.foundNum);
 			}
 			return this.input.getString(1, this.foundNum - 1);
 		case STRING_R:
-			switch (this.foundFlags & STATUS_MASK_12) {
-			case STATUS12_SYNTAX_TOKEN_OPENING_INCOMPLETE:
+			switch (this.foundFlags & TYPE12) {
+			case TYPE12_SYNTAX_TOKEN_OPENING_INCOMPLETE:
 				return null;
-			case STATUS12_SYNTAX_TOKEN_NOT_CLOSED:
+			case TYPE12_SYNTAX_TOKEN_NOT_CLOSED:
 				return this.input.getString(this.textOffset, this.foundNum);
 			default:
 				return this.input.getString(this.textOffset, this.foundNum - this.textOffset + 1);
@@ -226,7 +226,7 @@
 		case EOF:
 			return null;
 		case SPECIAL:
-			if ((this.foundFlags & STATUS_MASK_12) == STATUS12_SYNTAX_TOKEN_NOT_CLOSED) {
+			if ((this.foundFlags & TYPE12) == TYPE12_SYNTAX_TOKEN_NOT_CLOSED) {
 				return this.input.getString(1, this.foundNum, textFactory);
 			}
 			return this.input.getString(1, this.foundNum - 1, textFactory);
@@ -236,15 +236,15 @@
 			if (this.textBuilderText) {
 				return textFactory.get(this.textBuilder);
 			}
-			if ((this.foundFlags & STATUS_MASK_12) == STATUS12_SYNTAX_TOKEN_NOT_CLOSED) {
+			if ((this.foundFlags & TYPE12) == TYPE12_SYNTAX_TOKEN_NOT_CLOSED) {
 				return this.input.getString(1, this.foundNum, textFactory);
 			}
 			return this.input.getString(1, this.foundNum - 1, textFactory);
 		case STRING_R:
-			switch (this.foundFlags & STATUS_MASK_12) {
-			case STATUS12_SYNTAX_TOKEN_OPENING_INCOMPLETE:
+			switch (this.foundFlags & TYPE12) {
+			case TYPE12_SYNTAX_TOKEN_OPENING_INCOMPLETE:
 				return null;
-			case STATUS12_SYNTAX_TOKEN_NOT_CLOSED:
+			case TYPE12_SYNTAX_TOKEN_NOT_CLOSED:
 				return this.input.getString(this.textOffset, this.foundNum,
 						textFactory );
 			default:
@@ -268,15 +268,15 @@
 		case STRING_D:
 		case STRING_S:
 		case SYMBOL_G:
-			if ((this.foundFlags & STATUS_MASK_12) == STATUS12_SYNTAX_TOKEN_NOT_CLOSED) {
+			if ((this.foundFlags & TYPE12) == TYPE12_SYNTAX_TOKEN_NOT_CLOSED) {
 				return this.input.getRegionInSource(1, this.foundNum);
 			}
 			return this.input.getRegionInSource(1, this.foundNum - 1);
 		case STRING_R:
-			switch (this.foundFlags & STATUS_MASK_12) {
-			case STATUS12_SYNTAX_TOKEN_OPENING_INCOMPLETE:
+			switch (this.foundFlags & TYPE12) {
+			case TYPE12_SYNTAX_TOKEN_OPENING_INCOMPLETE:
 				return null;
-			case STATUS12_SYNTAX_TOKEN_NOT_CLOSED:
+			case TYPE12_SYNTAX_TOKEN_NOT_CLOSED:
 				return this.input.getRegionInSource(this.textOffset, this.foundNum);
 			default:
 				return this.input.getRegionInSource(this.textOffset, this.foundNum - this.textOffset + 1);
@@ -579,7 +579,7 @@
 				case TextParserInput.EOF:
 				case '\n':
 				case '\r':
-					found(in, RTerminal.SPECIAL, STATUS12_SYNTAX_TOKEN_NOT_CLOSED, n - 1);
+					found(in, RTerminal.SPECIAL, TYPE12_SYNTAX_TOKEN_NOT_CLOSED, n - 1);
 					return;
 				case '%':
 					found(in, RTerminal.SPECIAL, n);
@@ -639,11 +639,11 @@
 				ITER_CN: while (true) {
 					switch (in.get(n++)) {
 					case TextParserInput.EOF:
-						found(in, RTerminal.STRING_D, STATUS12_SYNTAX_TOKEN_NOT_CLOSED, n - 1);
+						found(in, RTerminal.STRING_D, TYPE12_SYNTAX_TOKEN_NOT_CLOSED, n - 1);
 						return;
 					case '\\':
 						if (in.get(n++) == TextParserInput.EOF) {
-							found(in, RTerminal.STRING_D, STATUS12_SYNTAX_TOKEN_NOT_CLOSED, n - 1);
+							found(in, RTerminal.STRING_D, TYPE12_SYNTAX_TOKEN_NOT_CLOSED, n - 1);
 							return;
 						}
 						continue ITER_CN;
@@ -672,11 +672,11 @@
 				ITER_CN: while (true) { // quick check
 					switch (in.get(n++)) {
 					case TextParserInput.EOF:
-						found(in, RTerminal.STRING_S, STATUS12_SYNTAX_TOKEN_NOT_CLOSED, n - 1);
+						found(in, RTerminal.STRING_S, TYPE12_SYNTAX_TOKEN_NOT_CLOSED, n - 1);
 						return;
 					case '\\':
 						if (in.get(n++) == TextParserInput.EOF) {
-							found(in, RTerminal.STRING_S, STATUS12_SYNTAX_TOKEN_NOT_CLOSED, n - 1);
+							found(in, RTerminal.STRING_S, TYPE12_SYNTAX_TOKEN_NOT_CLOSED, n - 1);
 							return;
 						}
 						continue ITER_CN;
@@ -705,11 +705,11 @@
 				ITER_CN: while (true) {
 					switch (in.get(n++)) {
 					case TextParserInput.EOF:
-						found(in, RTerminal.SYMBOL_G, STATUS12_SYNTAX_TOKEN_NOT_CLOSED, n - 1);
+						found(in, RTerminal.SYMBOL_G, TYPE12_SYNTAX_TOKEN_NOT_CLOSED, n - 1);
 						return;
 					case '\\':
 						if (in.get(n++) == TextParserInput.EOF) {
-							found(in, RTerminal.SYMBOL_G, STATUS12_SYNTAX_TOKEN_NOT_CLOSED, n - 1);
+							found(in, RTerminal.SYMBOL_G, TYPE12_SYNTAX_TOKEN_NOT_CLOSED, n - 1);
 							return;
 						}
 						continue ITER_CN;
@@ -1145,23 +1145,23 @@
 				readNumberExp(in, n);
 				return;
 			case 'L':
-				found(in, RTerminal.NUM_INT, STATUS123_SYNTAX_NUMBER_HEX_DIGIT_MISSING, n);
+				found(in, RTerminal.NUM_INT, TYPE123_SYNTAX_NUMBER_HEX_DIGIT_MISSING, n);
 				return;
 			case 'i':
-				found(in, RTerminal.NUM_CPLX, STATUS123_SYNTAX_NUMBER_HEX_DIGIT_MISSING, n);
+				found(in, RTerminal.NUM_CPLX, TYPE123_SYNTAX_NUMBER_HEX_DIGIT_MISSING, n);
 				return;
 			default:
-				found(in, RTerminal.NUM_NUM, STATUS123_SYNTAX_NUMBER_HEX_DIGIT_MISSING, n - 1);
+				found(in, RTerminal.NUM_NUM, TYPE123_SYNTAX_NUMBER_HEX_DIGIT_MISSING, n - 1);
 				return;
 			}
 		case 'L':
-			found(in, RTerminal.NUM_INT, STATUS123_SYNTAX_NUMBER_HEX_DIGIT_MISSING, n);
+			found(in, RTerminal.NUM_INT, TYPE123_SYNTAX_NUMBER_HEX_DIGIT_MISSING, n);
 			return;
 		case 'i':
-			found(in, RTerminal.NUM_CPLX, STATUS123_SYNTAX_NUMBER_HEX_DIGIT_MISSING, n);
+			found(in, RTerminal.NUM_CPLX, TYPE123_SYNTAX_NUMBER_HEX_DIGIT_MISSING, n);
 			return;
 		default:
-			found(in, RTerminal.NUM_NUM, STATUS123_SYNTAX_NUMBER_HEX_DIGIT_MISSING, n - 1);
+			found(in, RTerminal.NUM_NUM, TYPE123_SYNTAX_NUMBER_HEX_DIGIT_MISSING, n - 1);
 			return;
 		}
 		ITER_CN: while (true) {
@@ -1208,7 +1208,7 @@
 					if ((this.configFlags & ENABLE_NUM_VALUE) != 0) {
 						this.numValue= Double.parseDouble(in.getString(0, n - 1) + "p0"); //$NON-NLS-1$
 					}
-					found(in, RTerminal.NUM_NUM, STATUS123_SYNTAX_NUMBER_NON_INT_WITH_L, n);
+					found(in, RTerminal.NUM_NUM, TYPE123_SYNTAX_NUMBER_NON_INT_WITH_L, n);
 					return;
 				}
 			case 'i':
@@ -1266,7 +1266,7 @@
 					if ((this.configFlags & ENABLE_NUM_VALUE) != 0) {
 						this.numValue= Double.parseDouble(in.getString(0, n - 1));
 					}
-					found(in, RTerminal.NUM_NUM, STATUS123_SYNTAX_NUMBER_NON_INT_WITH_L, n);
+					found(in, RTerminal.NUM_NUM, TYPE123_SYNTAX_NUMBER_NON_INT_WITH_L, n);
 					return;
 				}
 			case 'i':
@@ -1333,11 +1333,11 @@
 				return;
 			case 'L':
 				if (isValidInt(in.getString(0, n - 1))) {
-					found(in, RTerminal.NUM_INT, STATUS123_SYNTAX_NUMBER_INT_WITH_DEC_POINT, n);
+					found(in, RTerminal.NUM_INT, TYPE123_SYNTAX_NUMBER_INT_WITH_DEC_POINT, n);
 					return;
 				}
 				else {
-					found(in, RTerminal.NUM_NUM, STATUS123_SYNTAX_NUMBER_NON_INT_WITH_L, n);
+					found(in, RTerminal.NUM_NUM, TYPE123_SYNTAX_NUMBER_NON_INT_WITH_L, n);
 					return;
 				}
 			case 'i':
@@ -1398,13 +1398,13 @@
 				readNumberExp(in, n);
 				return;
 			case 'L':
-				found(in, RTerminal.NUM_INT, STATUS123_SYNTAX_NUMBER_HEX_FLOAT_EXP_MISSING, n);
+				found(in, RTerminal.NUM_INT, TYPE123_SYNTAX_NUMBER_HEX_FLOAT_EXP_MISSING, n);
 				return;
 			case 'i':
-				found(in, RTerminal.NUM_CPLX, STATUS123_SYNTAX_NUMBER_HEX_FLOAT_EXP_MISSING, n);
+				found(in, RTerminal.NUM_CPLX, TYPE123_SYNTAX_NUMBER_HEX_FLOAT_EXP_MISSING, n);
 				return;
 			default:
-				found(in, RTerminal.NUM_NUM, STATUS123_SYNTAX_NUMBER_HEX_FLOAT_EXP_MISSING, n - 1);
+				found(in, RTerminal.NUM_NUM, TYPE123_SYNTAX_NUMBER_HEX_FLOAT_EXP_MISSING, n - 1);
 				return;
 			}
 		}
@@ -1434,13 +1434,13 @@
 		case '9':
 			break FIRST_DIGIT;
 		case 'L':
-			found(in, RTerminal.NUM_INT, STATUS123_SYNTAX_NUMBER_EXP_DIGIT_MISSING, n);
+			found(in, RTerminal.NUM_INT, TYPE123_SYNTAX_NUMBER_EXP_DIGIT_MISSING, n);
 			return;
 		case 'i':
-			found(in, RTerminal.NUM_CPLX, STATUS123_SYNTAX_NUMBER_EXP_DIGIT_MISSING, n);
+			found(in, RTerminal.NUM_CPLX, TYPE123_SYNTAX_NUMBER_EXP_DIGIT_MISSING, n);
 			return;
 		default:
-			found(in, RTerminal.NUM_NUM, STATUS123_SYNTAX_NUMBER_EXP_DIGIT_MISSING, n - 1);
+			found(in, RTerminal.NUM_NUM, TYPE123_SYNTAX_NUMBER_EXP_DIGIT_MISSING, n - 1);
 			return;
 		}
 		ITER_CN: while (true) {
@@ -1462,7 +1462,7 @@
 					return;
 				}
 				else {
-					found(in, RTerminal.NUM_NUM, STATUS123_SYNTAX_NUMBER_NON_INT_WITH_L, n);
+					found(in, RTerminal.NUM_NUM, TYPE123_SYNTAX_NUMBER_NON_INT_WITH_L, n);
 					return;
 				}
 			case 'i':
@@ -1713,7 +1713,7 @@
 				else {
 					this.textBuilderText= false;
 				}
-				found(in, type, STATUS12_SYNTAX_TOKEN_NOT_CLOSED, n - 1);
+				found(in, type, TYPE12_SYNTAX_TOKEN_NOT_CLOSED, n - 1);
 				return;
 			case '\\':
 				switch (in.get(n)) {
@@ -1794,7 +1794,7 @@
 					final long c= (char)Long.parseLong(in.getString(digitsStart, n), 8);
 					if (c == 0) {
 						readQuoted(in, type, cQuote, n,
-								STATUS123_SYNTAX_TEXT_NULLCHAR,
+								TYPE123_SYNTAX_TEXT_NULLCHAR,
 								createDetail(in, digitsStart - 1, n, null) );
 						return;
 					}
@@ -1839,14 +1839,14 @@
 					}
 					if (n == digitsStart) {
 						readQuoted(in, type, cQuote, n,
-								STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_HEX_DIGIT_MISSING,
+								TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_HEX_DIGIT_MISSING,
 								createDetail(in, digitsStart - 2, n, "\\x" ) );
 						return;
 					}
 					final int c= (int)Long.parseLong(in.getString(digitsStart, n), 16);
 					if (c == 0) {
 						readQuoted(in, type, cQuote, n,
-								STATUS123_SYNTAX_TEXT_NULLCHAR,
+								TYPE123_SYNTAX_TEXT_NULLCHAR,
 								createDetail(in, digitsStart - 2, n, null) );
 						return;
 					}
@@ -1893,33 +1893,33 @@
 						if (type == RTerminal.SYMBOL_G) {
 							if (in.get(n) != '}') {
 								readQuoted(in, type, cQuote, n,
-										RSourceConstants.STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED,
+										RSourceConstants.TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED,
 										createDetail(in, digitsStart - 3, n, "\\u{xxxx}") );
 								return;
 							}
 							else {
 								readQuoted(in, type, cQuote, n + 1,
-										RSourceConstants.STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED,
+										RSourceConstants.TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED,
 										createDetail(in, digitsStart - 3, n + 1, "\\u{xxxx}") );
 								return;
 							}
 						}
 						if (in.get(n) != '}') {
 							readQuoted(in, type, cQuote, n,
-									STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_NOT_CLOSED,
+									TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_NOT_CLOSED,
 									createDetail(in, digitsStart - 3, n, "\\u{xxxx}" ));
 							return;
 						}
 						if (n == digitsStart) {
 							readQuoted(in, type, cQuote, n + 1,
-									STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_HEX_DIGIT_MISSING,
+									TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_HEX_DIGIT_MISSING,
 									createDetail(in, digitsStart - 3, n + 1, "\\u{xxxx}" ));
 							return;
 						}
 						final int c= (int)Long.parseLong(in.getString(digitsStart, n), 16);
 						if (c == 0) {
 							readQuoted(in, type, cQuote, n + 1,
-									STATUS123_SYNTAX_TEXT_NULLCHAR,
+									TYPE123_SYNTAX_TEXT_NULLCHAR,
 									createDetail(in, digitsStart - 3, n + 1, null ));
 							return;
 						}
@@ -1964,20 +1964,20 @@
 						}
 						if (type == RTerminal.SYMBOL_G) {
 							readQuoted(in, type, cQuote, n,
-									RSourceConstants.STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED,
+									RSourceConstants.TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED,
 									createDetail(in, digitsStart - 2, n, "\\uxxxx") );
 							return;
 						}
 						if (n == digitsStart) {
 							readQuoted(in, type, cQuote, n,
-									STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_HEX_DIGIT_MISSING,
+									TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_HEX_DIGIT_MISSING,
 									createDetail(in, digitsStart - 2, n, "\\uxxxx") );
 							return;
 						}
 						final int c= (int)Long.parseLong(in.getString(digitsStart, n), 16);
 						if (c == 0) {
 							readQuoted(in, type, cQuote, n,
-									STATUS123_SYNTAX_TEXT_NULLCHAR,
+									TYPE123_SYNTAX_TEXT_NULLCHAR,
 									createDetail(in, digitsStart - 2, n, null) );
 							return;
 						}
@@ -2024,33 +2024,33 @@
 						if (type == RTerminal.SYMBOL_G) {
 							if (in.get(n) != '}') {
 								readQuoted(in, type, cQuote, n,
-										RSourceConstants.STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED,
+										RSourceConstants.TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED,
 										createDetail(in, digitsStart - 3, n, "\\U{xxxxxxxx}") );
 								return;
 							}
 							else {
 								readQuoted(in, type, cQuote, n + 1,
-										RSourceConstants.STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED,
+										RSourceConstants.TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED,
 										createDetail(in, digitsStart - 3, n + 1, "\\U{xxxxxxxx}") );
 								return;
 							}
 						}
 						if (in.get(n) != '}') {
 							readQuoted(in, type, cQuote, n,
-									STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_NOT_CLOSED,
+									TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_NOT_CLOSED,
 									createDetail(in, digitsStart - 3, n, "\\U{xxxxxxxx}") );
 							return;
 						}
 						if (n == digitsStart) {
 							readQuoted(in, type, cQuote, n + 1,
-									STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_HEX_DIGIT_MISSING,
+									TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_HEX_DIGIT_MISSING,
 									createDetail(in, digitsStart - 3 , n + 1, "\\U{xxxxxxxx}") );
 							return;
 						}
 						final int c= (int)Long.parseLong(in.getString(digitsStart, n), 16);
 						if (c == 0) {
 							readQuoted(in, type, cQuote, n + 1,
-									STATUS123_SYNTAX_TEXT_NULLCHAR,
+									TYPE123_SYNTAX_TEXT_NULLCHAR,
 									createDetail(in, digitsStart - 3, n + 1, null) );
 							return;
 						}
@@ -2069,7 +2069,7 @@
 						}
 						else {
 							readQuoted(in, type, cQuote, n + 1,
-									STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_CODEPOINT_INVALID,
+									TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_CODEPOINT_INVALID,
 									createDetail(in, digitsStart - 3, n + 1,
 											StringUtils.formatCodePoint(c)) );
 							return;
@@ -2109,20 +2109,20 @@
 						}
 						if (type == RTerminal.SYMBOL_G) {
 							readQuoted(in, type, cQuote, n,
-									RSourceConstants.STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED,
+									RSourceConstants.TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED,
 									createDetail(in, digitsStart - 2, n, "\\Uxxxxxxxx") );
 							return;
 						}
 						if (n == digitsStart) {
 							readQuoted(in, type, cQuote, n,
-									STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_HEX_DIGIT_MISSING,
+									TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_HEX_DIGIT_MISSING,
 									createDetail(in, digitsStart - 2, n, "\\Uxxxxxxxx") );
 							return;
 						}
 						final int c= (int)Long.parseLong(in.getString(digitsStart, n), 16);
 						if (c == 0) {
 							readQuoted(in, type, cQuote, n,
-									STATUS123_SYNTAX_TEXT_NULLCHAR,
+									TYPE123_SYNTAX_TEXT_NULLCHAR,
 									createDetail(in, digitsStart - 2, n, null) );
 							return;
 						}
@@ -2141,7 +2141,7 @@
 						}
 						else {
 							readQuoted(in, type, cQuote, n,
-									STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_CODEPOINT_INVALID,
+									TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_CODEPOINT_INVALID,
 									createDetail(in, digitsStart - 2, n,
 											StringUtils.formatCodePoint(c)) );
 							return;
@@ -2150,7 +2150,7 @@
 					
 				default:
 					readQuoted(in, type, cQuote, n,
-							STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_UNKOWN,
+							TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_UNKOWN,
 							createDetail(in, n - 1, n + 1, in.getString(n - 1, n + 1)) );
 					return;
 				}
@@ -2165,7 +2165,7 @@
 				continue ITER_CN;
 			case 0:
 				readQuoted(in, type, cQuote, n,
-						STATUS123_SYNTAX_TEXT_NULLCHAR,
+						TYPE123_SYNTAX_TEXT_NULLCHAR,
 						createDetail(in, n - 1, n, null) );
 				return;
 			default:
@@ -2192,11 +2192,11 @@
 			final int cn;
 			switch (cn= in.get(n++)) {
 			case TextParserInput.EOF:
-				found(in, type, STATUS12_SYNTAX_TOKEN_NOT_CLOSED, n - 1);
+				found(in, type, TYPE12_SYNTAX_TOKEN_NOT_CLOSED, n - 1);
 				return;
 			case '\\':
 				if (in.get(n++) == TextParserInput.EOF) {
-					found(in, type, STATUS12_SYNTAX_TOKEN_NOT_CLOSED, n - 1);
+					found(in, type, TYPE12_SYNTAX_TOKEN_NOT_CLOSED, n - 1);
 					return;
 				}
 				continue ITER_CN;
@@ -2243,7 +2243,7 @@
 				break ITER_CN;
 			case TextParserInput.EOF:
 			default:
-				found(in, RTerminal.STRING_R, RSourceConstants.STATUS12_SYNTAX_TOKEN_OPENING_INCOMPLETE, n - 1);
+				found(in, RTerminal.STRING_R, RSourceConstants.TYPE12_SYNTAX_TOKEN_OPENING_INCOMPLETE, n - 1);
 				return;
 			}
 		}
@@ -2252,7 +2252,7 @@
 			final int cn;
 			switch (cn= in.get(n++)) {
 			case TextParserInput.EOF:
-				found(in, RTerminal.STRING_R, STATUS12_SYNTAX_TOKEN_NOT_CLOSED,
+				found(in, RTerminal.STRING_R, TYPE12_SYNTAX_TOKEN_NOT_CLOSED,
 						createDetail(in, 0, n - 1, createStringRClosingSequence(cQuote, cClose, nDashes)),
 						n - 1 );
 				return;
@@ -2267,7 +2267,7 @@
 				continue ITER_CN;
 			case 0:
 				if (status == 0) {
-					status= STATUS123_SYNTAX_TEXT_NULLCHAR;
+					status= TYPE123_SYNTAX_TEXT_NULLCHAR;
 					this.foundDetail= createDetail(in, n - 1, n, null);
 				}
 				continue ITER_CN;
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/RSourceConstants.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/RSourceConstants.java
index 0088e49..dcfa95a 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/RSourceConstants.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/RSourceConstants.java
@@ -14,11 +14,19 @@
 
 package org.eclipse.statet.r.core.rsource;
 
+import static org.eclipse.statet.ltk.core.StatusCodes.ERROR;
+import static org.eclipse.statet.ltk.core.StatusCodes.SHIFT_CTX2;
+import static org.eclipse.statet.ltk.core.StatusCodes.SHIFT_TYPE1;
+import static org.eclipse.statet.ltk.core.StatusCodes.SHIFT_TYPE2;
+import static org.eclipse.statet.ltk.core.StatusCodes.SHIFT_TYPE3;
+
 import org.eclipse.statet.jcommons.collections.ImCollections;
 import org.eclipse.statet.jcommons.collections.ImList;
 import org.eclipse.statet.jcommons.lang.NonNullByDefault;
 import org.eclipse.statet.jcommons.util.Version;
 
+import org.eclipse.statet.ltk.core.StatusCodes;
+
 
 @NonNullByDefault
 public interface RSourceConstants {
@@ -39,96 +47,84 @@
 	}
 	
 	
-	int STATUS_MASK_1=                  0x0_0000_FF00;
-	int STATUS_MASK_12=                 0x0_000F_FFF0;
-	int STATUS_MASK_3=                  0x0_0000_000F;
-	int STATUS_MASK_123=                0x0_000F_FFFF;
-	
-	int STATUS_OK=                      0x0_0000_0000;
-	int STATUS_RUNTIME_ERROR=           0x0_0000_f000;
-	int STATUSFLAG_REAL_ERROR=          0x0_0001_0000;
-	int STATUSFLAG_SUBSEQUENT=          0x0_0010_0000;
-	int STATUSFLAG_ERROR_IN_CHILD=      0x0_0100_0000;
-	
 	/**
 	 * An existing token is not OK.
 	 */
-	int STATUS1_SYNTAX_INCORRECT_TOKEN=                 0x1100;
-	int STATUS12_SYNTAX_TOKEN_OPENING_INCOMPLETE=           STATUS1_SYNTAX_INCORRECT_TOKEN | 0x10 | STATUSFLAG_REAL_ERROR;
-	int STATUS12_SYNTAX_TOKEN_NOT_CLOSED=                   STATUS1_SYNTAX_INCORRECT_TOKEN | 0x20 | STATUSFLAG_REAL_ERROR;
-	int STATUS12_SYNTAX_NUMBER_INVALID=                     STATUS1_SYNTAX_INCORRECT_TOKEN | 0x30 | STATUSFLAG_REAL_ERROR;
-	int STATUS123_SYNTAX_NUMBER_HEX_DIGIT_MISSING=              STATUS12_SYNTAX_NUMBER_INVALID | 0x5;
-	int STATUS123_SYNTAX_NUMBER_HEX_FLOAT_EXP_MISSING=          STATUS12_SYNTAX_NUMBER_INVALID | 0x6;
-	int STATUS123_SYNTAX_NUMBER_EXP_DIGIT_MISSING=              STATUS12_SYNTAX_NUMBER_INVALID | 0x7;
-	int STATUS12_SYNTAX_NUMBER_MISLEADING=                  STATUS1_SYNTAX_INCORRECT_TOKEN | 0x40;
-	int STATUS123_SYNTAX_NUMBER_NON_INT_WITH_L=                 STATUS12_SYNTAX_NUMBER_MISLEADING | 0x1;
-	int STATUS123_SYNTAX_NUMBER_INT_WITH_DEC_POINT=             STATUS12_SYNTAX_NUMBER_MISLEADING | 0x2;
-	int STATUS12_SYNTAX_TEXT_INVALID=                       STATUS1_SYNTAX_INCORRECT_TOKEN | 0x50 | STATUSFLAG_REAL_ERROR;
-	int STATUS123_SYNTAX_TEXT_NULLCHAR=                         STATUS12_SYNTAX_TEXT_INVALID | 0x1;
-	int STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED=            STATUS12_SYNTAX_TEXT_INVALID | 0x3;
-	int STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_NOT_CLOSED=            STATUS12_SYNTAX_TEXT_INVALID | 0x4;
-	int STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_HEX_DIGIT_MISSING=     STATUS12_SYNTAX_TEXT_INVALID | 0x5;
-	int STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_UNKOWN=                STATUS12_SYNTAX_TEXT_INVALID | 0x9;
-	int STATUS123_SYNTAX_TEXT_ESCAPE_SEQ_CODEPOINT_INVALID=     STATUS12_SYNTAX_TEXT_INVALID | 0xB;
-	int STATUS12_SYNTAX_TOKEN_UNKNOWN=                      STATUS1_SYNTAX_INCORRECT_TOKEN | 0x90 | STATUSFLAG_REAL_ERROR;
-	int STATUS12_SYNTAX_TOKEN_UNEXPECTED=                   STATUS1_SYNTAX_INCORRECT_TOKEN | 0xA0 | STATUSFLAG_REAL_ERROR;
-	int STATUS123_SYNTAX_SEQREL_UNEXPECTED=                     STATUS12_SYNTAX_TOKEN_UNEXPECTED | 0x1;
-	int STATUS12_SYNTAX_FCALL_AFTER_OP_EXPR_UNEXPECTED=     STATUS1_SYNTAX_INCORRECT_TOKEN | 0xB0 | STATUSFLAG_REAL_ERROR;
+	static int TYPE1_SYNTAX_INCORRECT_TOKEN=                StatusCodes.TYPE1_SYNTAX_INCORRECT_TOKEN;
+	static int TYPE12_SYNTAX_TOKEN_OPENING_INCOMPLETE=          TYPE1_SYNTAX_INCORRECT_TOKEN | 0x1 << SHIFT_TYPE2 | ERROR;
+	static int TYPE12_SYNTAX_TOKEN_NOT_CLOSED=                  TYPE1_SYNTAX_INCORRECT_TOKEN | 0x2 << SHIFT_TYPE2 | ERROR;
+	static int TYPE12_SYNTAX_NUMBER_INVALID=                    TYPE1_SYNTAX_INCORRECT_TOKEN | 0x3 << SHIFT_TYPE2 | ERROR;
+	static int TYPE123_SYNTAX_NUMBER_HEX_DIGIT_MISSING=             TYPE12_SYNTAX_NUMBER_INVALID | 0x5 << SHIFT_TYPE3;
+	static int TYPE123_SYNTAX_NUMBER_HEX_FLOAT_EXP_MISSING=         TYPE12_SYNTAX_NUMBER_INVALID | 0x6 << SHIFT_TYPE3;
+	static int TYPE123_SYNTAX_NUMBER_EXP_DIGIT_MISSING=             TYPE12_SYNTAX_NUMBER_INVALID | 0x7 << SHIFT_TYPE3;
+	static int TYPE12_SYNTAX_NUMBER_MISLEADING=                 TYPE1_SYNTAX_INCORRECT_TOKEN | 0x4 << SHIFT_TYPE2;
+	static int TYPE123_SYNTAX_NUMBER_NON_INT_WITH_L=                TYPE12_SYNTAX_NUMBER_MISLEADING | 0x1 << SHIFT_TYPE3;
+	static int TYPE123_SYNTAX_NUMBER_INT_WITH_DEC_POINT=            TYPE12_SYNTAX_NUMBER_MISLEADING | 0x2 << SHIFT_TYPE3;
+	static int TYPE12_SYNTAX_TEXT_INVALID=                      TYPE1_SYNTAX_INCORRECT_TOKEN | 0x5 << SHIFT_TYPE2 | ERROR;
+	static int TYPE123_SYNTAX_TEXT_NULLCHAR=                        TYPE12_SYNTAX_TEXT_INVALID | 0x1 << SHIFT_TYPE3;
+	static int TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_UNEXPECTED=           TYPE12_SYNTAX_TEXT_INVALID | 0x3 << SHIFT_TYPE3;
+	static int TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_NOT_CLOSED=           TYPE12_SYNTAX_TEXT_INVALID | 0x4 << SHIFT_TYPE3;
+	static int TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_HEX_DIGIT_MISSING=    TYPE12_SYNTAX_TEXT_INVALID | 0x5 << SHIFT_TYPE3;
+	static int TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_UNKOWN=               TYPE12_SYNTAX_TEXT_INVALID | 0x9 << SHIFT_TYPE3;
+	static int TYPE123_SYNTAX_TEXT_ESCAPE_SEQ_CODEPOINT_INVALID=    TYPE12_SYNTAX_TEXT_INVALID | 0xB << SHIFT_TYPE3;
+	static int TYPE12_SYNTAX_TOKEN_UNKNOWN=                     TYPE1_SYNTAX_INCORRECT_TOKEN | 0x9 << SHIFT_TYPE2 | ERROR;
+	static int TYPE12_SYNTAX_TOKEN_UNEXPECTED=                  TYPE1_SYNTAX_INCORRECT_TOKEN | 0xA << SHIFT_TYPE2 | ERROR;
+	static int TYPE123_SYNTAX_SEQREL_UNEXPECTED=                    TYPE12_SYNTAX_TOKEN_UNEXPECTED | 0x1;
+	static int TYPE12_SYNTAX_FCALL_AFTER_OP_EXPR_UNEXPECTED=    TYPE1_SYNTAX_INCORRECT_TOKEN | 0xB << SHIFT_TYPE2 | ERROR;
 	
 	/**
 	 * A token (represented by an node) is missing.
 	 */
-	int STATUS1_SYNTAX_MISSING_TOKEN=                   0x1300;
-	int STATUS12_SYNTAX_EXPR_AS_REF_MISSING=                STATUS1_SYNTAX_MISSING_TOKEN | 0x10 | STATUSFLAG_REAL_ERROR;
-	int STATUS12_SYNTAX_EXPR_BEFORE_OP_MISSING=             STATUS1_SYNTAX_MISSING_TOKEN | 0x20 | STATUSFLAG_REAL_ERROR;
-	int STATUS12_SYNTAX_EXPR_AFTER_OP_MISSING=              STATUS1_SYNTAX_MISSING_TOKEN | 0x30 | STATUSFLAG_REAL_ERROR;
-	int STATUS12_SYNTAX_EXPR_AS_CONDITION_MISSING=          STATUS1_SYNTAX_MISSING_TOKEN | 0x40 | STATUSFLAG_REAL_ERROR;
-	int STATUS12_SYNTAX_EXPR_AS_FORSEQ_MISSING=             STATUS1_SYNTAX_MISSING_TOKEN | 0x50 | STATUSFLAG_REAL_ERROR;
-	int STATUS12_SYNTAX_EXPR_AS_BODY_MISSING=               STATUS1_SYNTAX_MISSING_TOKEN | 0x60 | STATUSFLAG_REAL_ERROR;
-	int STATUS12_SYNTAX_EXPR_IN_GROUP_MISSING=              STATUS1_SYNTAX_MISSING_TOKEN | 0x70 | STATUSFLAG_REAL_ERROR;
-	int STATUS12_SYNTAX_EXPR_AS_ARGVALUE_MISSING=           STATUS1_SYNTAX_MISSING_TOKEN | 0x80 | STATUSFLAG_REAL_ERROR;
-	int STATUS12_SYNTAX_ELEMENTNAME_MISSING=                STATUS1_SYNTAX_MISSING_TOKEN | 0x90 | STATUSFLAG_REAL_ERROR;
-	int STATUS12_SYNTAX_FCALL_AFTER_OP_MISSING=             STATUS1_SYNTAX_MISSING_TOKEN | 0xB0 | STATUSFLAG_REAL_ERROR;
-	int STATUS12_SYNTAX_SYMBOL_MISSING=                     STATUS1_SYNTAX_MISSING_TOKEN | 0xF0 | STATUSFLAG_REAL_ERROR;
-//	SyntaxValidity P_MISSING_EXPR_STATUS= new SyntaxValidity(SyntaxValidity.ERROR,
-//	P_CAT_SYNTAX_FLAG | 0x210,
-//	"Syntax Error/Missing Expression: a valid expression is expected.");
+	static int TYPE1_SYNTAX_MISSING_TOKEN=                  0x3 << SHIFT_TYPE1;
+	static int TYPE12_SYNTAX_EXPR_MISSING=                      TYPE1_SYNTAX_MISSING_TOKEN | 0x1 << SHIFT_TYPE2 | ERROR;
+	static int TYPE123_SYNTAX_EXPR_AS_REF_MISSING=                  TYPE12_SYNTAX_EXPR_MISSING | 0x1 << SHIFT_TYPE3 | ERROR;
+	static int TYPE123_SYNTAX_EXPR_BEFORE_OP_MISSING=               TYPE12_SYNTAX_EXPR_MISSING | 0x2 << SHIFT_TYPE3 | ERROR;
+	static int TYPE123_SYNTAX_EXPR_AFTER_OP_MISSING=                TYPE12_SYNTAX_EXPR_MISSING | 0x3 << SHIFT_TYPE3 | ERROR;
+	static int TYPE123_SYNTAX_EXPR_AS_CONDITION_MISSING=            TYPE12_SYNTAX_EXPR_MISSING | 0x4 << SHIFT_TYPE3 | ERROR;
+	static int TYPE123_SYNTAX_EXPR_AS_FORSEQ_MISSING=               TYPE12_SYNTAX_EXPR_MISSING | 0x5 << SHIFT_TYPE3 | ERROR;
+	static int TYPE123_SYNTAX_EXPR_AS_BODY_MISSING=                 TYPE12_SYNTAX_EXPR_MISSING | 0x6 << SHIFT_TYPE3 | ERROR;
+	static int TYPE123_SYNTAX_EXPR_IN_GROUP_MISSING=                TYPE12_SYNTAX_EXPR_MISSING | 0x7 << SHIFT_TYPE3 | ERROR;
+	static int TYPE123_SYNTAX_EXPR_AS_ARGVALUE_MISSING=             TYPE12_SYNTAX_EXPR_MISSING | 0x8 << SHIFT_TYPE3 | ERROR;
+	static int TYPE12_SYNTAX_ELEMENTNAME_MISSING=               TYPE1_SYNTAX_MISSING_TOKEN | 0x2 << SHIFT_TYPE2 | ERROR;
+	static int TYPE12_SYNTAX_SYMBOL_MISSING=                    TYPE1_SYNTAX_MISSING_TOKEN | 0x3 << SHIFT_TYPE2 | ERROR;
+	static int TYPE12_SYNTAX_OPERATOR_MISSING=                  TYPE1_SYNTAX_MISSING_TOKEN | 0x8 << SHIFT_TYPE2 | ERROR;
+	static int TYPE12_SYNTAX_FCALL_AFTER_OP_MISSING=            TYPE1_SYNTAX_MISSING_TOKEN | 0xB << SHIFT_TYPE2 | ERROR;
 	
-	int STATUS12_SYNTAX_OPERATOR_MISSING=                   0x1410 | STATUSFLAG_REAL_ERROR;
-	int STATUS12_SYNTAX_FCALL_NOT_CLOSED=                   0x1420 | STATUSFLAG_REAL_ERROR;
-	int STATUS12_SYNTAX_SUBINDEXED_NOT_CLOSED=              0x1430 | STATUSFLAG_REAL_ERROR;
+	static int TYPE1_SYNTAX_INCOMPLETE_NODE=                0x4 << SHIFT_TYPE1;
+	static int TYPE12_SYNTAX_NODE_NOT_CLOSED=                   TYPE1_SYNTAX_INCOMPLETE_NODE | 0x1 << SHIFT_TYPE2 | ERROR;
 	
 	/**
 	 * A control statement (part of an existing node) is incomplete.
 	 */
-	int STATUS1_SYNTAX_INCOMPLETE_CC=                   0x1500;
-	int STATUS12_SYNTAX_CC_NOT_CLOSED=                      STATUS1_SYNTAX_INCOMPLETE_CC | 0x10 | STATUSFLAG_REAL_ERROR;
-	int STATUS12_SYNTAX_IF_MISSING=                         STATUS1_SYNTAX_INCOMPLETE_CC | 0x30 | STATUSFLAG_REAL_ERROR;
-	int STATUS12_SYNTAX_CONDITION_MISSING=                  STATUS1_SYNTAX_INCOMPLETE_CC | 0x40 | STATUSFLAG_REAL_ERROR;
-	int STATUS12_SYNTAX_IN_MISSING=                         STATUS1_SYNTAX_INCOMPLETE_CC | 0x50 | STATUSFLAG_REAL_ERROR;
-	int STATUS12_SYNTAX_CONDITION_NOT_CLOSED=               STATUS1_SYNTAX_INCOMPLETE_CC | 0x60 | STATUSFLAG_REAL_ERROR;
+	static int TYPE1_SYNTAX_INCOMPLETE_CC=                  0x5 << SHIFT_TYPE1;
+	static int TYPE12_SYNTAX_CC_NOT_CLOSED=                     TYPE1_SYNTAX_INCOMPLETE_CC | 0x1 << SHIFT_TYPE2 | ERROR;
+	static int TYPE12_SYNTAX_IF_MISSING=                        TYPE1_SYNTAX_INCOMPLETE_CC | 0x3 << SHIFT_TYPE2 | ERROR;
+	static int TYPE12_SYNTAX_CONDITION_MISSING=                 TYPE1_SYNTAX_INCOMPLETE_CC | 0x4 << SHIFT_TYPE2 | ERROR;
+	static int TYPE12_SYNTAX_IN_MISSING=                        TYPE1_SYNTAX_INCOMPLETE_CC | 0x5 << SHIFT_TYPE2 | ERROR;
+	static int TYPE12_SYNTAX_CONDITION_NOT_CLOSED=              TYPE1_SYNTAX_INCOMPLETE_CC | 0x6 << SHIFT_TYPE2 | ERROR;
 	
 	/**
 	 * A function definition is incomplete.
 	 */
-	int STATUS1_SYNTAX_INCOMPLETE_FDEF=                 0x1600;
-	int STATUS12_SYNTAX_FDEF_ARGS_MISSING=                  STATUS1_SYNTAX_INCOMPLETE_FDEF | 0x10 | STATUSFLAG_REAL_ERROR;
-	int STATUS12_SYNTAX_FDEF_ARGS_NOT_CLOSED=               STATUS1_SYNTAX_INCOMPLETE_FDEF | 0x20 | STATUSFLAG_REAL_ERROR;
+	static int TYPE1_SYNTAX_INCOMPLETE_FDEF=                0x6 << SHIFT_TYPE1;
+	static int TYPE12_SYNTAX_FDEF_ARGS_MISSING=                 TYPE1_SYNTAX_INCOMPLETE_FDEF | 0x1 << SHIFT_TYPE2 | ERROR;
+	static int TYPE12_SYNTAX_FDEF_ARGS_NOT_CLOSED=              TYPE1_SYNTAX_INCOMPLETE_FDEF | 0x2 << SHIFT_TYPE2 | ERROR;
 	
 	/**
 	 * Syntax not supported by current config.
 	 */
-	int STATUS1_SYNTAX_INCOMPATIBLE=                    0x1700;
-	int STATUS12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION=        STATUS1_SYNTAX_INCOMPATIBLE | 0x10 | STATUSFLAG_REAL_ERROR;
-	int STATUS12_SYNTAX_OPTIONAL_IN_LANG_VERSION=           STATUS1_SYNTAX_INCOMPATIBLE | 0x20;
+	static int TYPE1_SYNTAX_INCOMPATIBLE=                   0x7 << SHIFT_TYPE1;
+	static int TYPE12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION=       TYPE1_SYNTAX_INCOMPATIBLE | 0x1 << SHIFT_TYPE2 | ERROR;
+	static int TYPE12_SYNTAX_OPTIONAL_IN_LANG_VERSION=          TYPE1_SYNTAX_INCOMPATIBLE | 0x2 << SHIFT_TYPE2;
 	
-	int STATUS3_IF=                     0x1;
-	int STATUS3_ELSE=                   0x2;
-	int STATUS3_FOR=                    0x3;
-	int STATUS3_WHILE=                  0x4;
-	int STATUS3_REPEAT=                 0x5;
-	int STATUS3_FDEF=                   0x6;
-	int STATUS3_FCALL=                  0x7;
-	int STATUS3_PIPE=                   0x8;
+	
+	static int CTX12_IF=                    0x1 << SHIFT_CTX2;
+	static int CTX12_ELSE=                  0x2 << SHIFT_CTX2;
+	static int CTX12_FOR=                   0x3 << SHIFT_CTX2;
+	static int CTX12_WHILE=                 0x4 << SHIFT_CTX2;
+	static int CTX12_REPEAT=                0x5 << SHIFT_CTX2;
+	static int CTX12_FDEF=                  0x6 << SHIFT_CTX2;
+	static int CTX12_FCALL=                 0x7 << SHIFT_CTX2;
+	static int CTX12_PIPE=                  0x8 << SHIFT_CTX2;
 	
 }
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/CForLoop.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/CForLoop.java
index 12c1b93..6481f0a 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/CForLoop.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/CForLoop.java
@@ -14,9 +14,9 @@
 
 package org.eclipse.statet.r.core.rsource.ast;
 
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_EXPR_AS_BODY_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_EXPR_AS_FORSEQ_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS3_FOR;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.CTX12_FOR;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_EXPR_AS_BODY_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_EXPR_AS_FORSEQ_MISSING;
 
 import java.lang.reflect.InvocationTargetException;
 
@@ -166,10 +166,10 @@
 	@Override
 	final int getMissingExprStatus(final Expression expr) {
 		if (this.condExpr == expr) {
-			return (STATUS12_SYNTAX_EXPR_AS_FORSEQ_MISSING | STATUS3_FOR);
+			return TYPE123_SYNTAX_EXPR_AS_FORSEQ_MISSING | CTX12_FOR;
 		}
 		if (this.loopExpr == expr) {
-			return (STATUS12_SYNTAX_EXPR_AS_BODY_MISSING | STATUS3_FOR);
+			return TYPE123_SYNTAX_EXPR_AS_BODY_MISSING | CTX12_FOR;
 		}
 		throw new IllegalArgumentException();
 	}
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/CIfElse.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/CIfElse.java
index 4d1a762..5037b76 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/CIfElse.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/CIfElse.java
@@ -14,10 +14,10 @@
 
 package org.eclipse.statet.r.core.rsource.ast;
 
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_EXPR_AS_BODY_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_EXPR_AS_CONDITION_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS3_ELSE;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS3_IF;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.CTX12_ELSE;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.CTX12_IF;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_EXPR_AS_BODY_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_EXPR_AS_CONDITION_MISSING;
 
 import java.lang.reflect.InvocationTargetException;
 
@@ -191,13 +191,13 @@
 	@Override
 	final int getMissingExprStatus(final Expression expr) {
 		if (this.condExpr == expr) {
-			return (STATUS12_SYNTAX_EXPR_AS_CONDITION_MISSING | STATUS3_IF);
+			return TYPE123_SYNTAX_EXPR_AS_CONDITION_MISSING | CTX12_IF;
 		}
 		if (this.thenExpr == expr) {
-			return (STATUS12_SYNTAX_EXPR_AS_BODY_MISSING | STATUS3_IF);
+			return TYPE123_SYNTAX_EXPR_AS_BODY_MISSING | CTX12_IF;
 		}
 		if (this.withElse && this.elseExpr == expr) {
-			return (STATUS12_SYNTAX_EXPR_AS_BODY_MISSING | STATUS3_ELSE);
+			return TYPE123_SYNTAX_EXPR_AS_BODY_MISSING | CTX12_ELSE;
 		}
 		throw new IllegalArgumentException();
 	}
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/CRepeatLoop.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/CRepeatLoop.java
index 85cd880..e43314c 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/CRepeatLoop.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/CRepeatLoop.java
@@ -14,8 +14,8 @@
 
 package org.eclipse.statet.r.core.rsource.ast;
 
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_EXPR_AS_BODY_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS3_REPEAT;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.CTX12_REPEAT;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_EXPR_AS_BODY_MISSING;
 
 import java.lang.reflect.InvocationTargetException;
 
@@ -127,7 +127,7 @@
 	@Override
 	final int getMissingExprStatus(final Expression expr) {
 		if (this.loopExpr == expr) {
-			return (STATUS12_SYNTAX_EXPR_AS_BODY_MISSING | STATUS3_REPEAT);
+			return TYPE123_SYNTAX_EXPR_AS_BODY_MISSING | CTX12_REPEAT;
 		}
 		throw new IllegalArgumentException();
 	}
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/CWhileLoop.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/CWhileLoop.java
index 10ff440..38009fb 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/CWhileLoop.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/CWhileLoop.java
@@ -14,9 +14,9 @@
 
 package org.eclipse.statet.r.core.rsource.ast;
 
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_EXPR_AS_BODY_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_EXPR_AS_CONDITION_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS3_WHILE;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.CTX12_WHILE;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_EXPR_AS_BODY_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_EXPR_AS_CONDITION_MISSING;
 
 import java.lang.reflect.InvocationTargetException;
 
@@ -153,10 +153,10 @@
 	@Override
 	final int getMissingExprStatus(final Expression expr) {
 		if (this.condExpr == expr) {
-			return (STATUS12_SYNTAX_EXPR_AS_CONDITION_MISSING | STATUS3_WHILE);
+			return TYPE123_SYNTAX_EXPR_AS_CONDITION_MISSING | CTX12_WHILE;
 		}
 		if (this.loopExpr == expr) {
-			return (STATUS12_SYNTAX_EXPR_AS_BODY_MISSING | STATUS3_WHILE);
+			return TYPE123_SYNTAX_EXPR_AS_BODY_MISSING | CTX12_WHILE;
 		}
 		throw new IllegalArgumentException();
 	}
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/Dummy.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/Dummy.java
index 184cd24..3dca3f1 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/Dummy.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/Dummy.java
@@ -14,8 +14,8 @@
 
 package org.eclipse.statet.r.core.rsource.ast;
 
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_EXPR_AFTER_OP_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_EXPR_BEFORE_OP_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_EXPR_AFTER_OP_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_EXPR_BEFORE_OP_MISSING;
 
 import java.lang.reflect.InvocationTargetException;
 
@@ -209,10 +209,10 @@
 		@Override
 		final int getMissingExprStatus(final Expression expr) {
 			if (expr == this.leftExpr) {
-				return STATUS12_SYNTAX_EXPR_BEFORE_OP_MISSING;
+				return TYPE123_SYNTAX_EXPR_BEFORE_OP_MISSING;
 			}
 			if (expr == this.rightExpr) {
-				return STATUS12_SYNTAX_EXPR_AFTER_OP_MISSING;
+				return TYPE123_SYNTAX_EXPR_AFTER_OP_MISSING;
 			}
 			throw new IllegalArgumentException();
 		}
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/ExpressionList.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/ExpressionList.java
index 7ffe800..b30d377 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/ExpressionList.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/ExpressionList.java
@@ -14,7 +14,7 @@
 
 package org.eclipse.statet.r.core.rsource.ast;
 
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS1_SYNTAX_MISSING_TOKEN;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE1_SYNTAX_MISSING_TOKEN;
 
 import java.lang.reflect.InvocationTargetException;
 import java.util.ArrayList;
@@ -113,7 +113,7 @@
 	
 	@Override
 	final int getMissingExprStatus(final Expression expr) {
-		return STATUS1_SYNTAX_MISSING_TOKEN;
+		return TYPE1_SYNTAX_MISSING_TOKEN;
 	}
 	
 }
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/FCall.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/FCall.java
index 1130b80..b24cdd5 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/FCall.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/FCall.java
@@ -14,7 +14,7 @@
 
 package org.eclipse.statet.r.core.rsource.ast;
 
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_EXPR_AS_REF_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_EXPR_AS_REF_MISSING;
 
 import java.lang.reflect.InvocationTargetException;
 
@@ -307,7 +307,7 @@
 	@Override
 	final int getMissingExprStatus(final Expression expr) {
 		if (expr == this.refExpr) {
-			return STATUS12_SYNTAX_EXPR_AS_REF_MISSING;
+			return TYPE123_SYNTAX_EXPR_AS_REF_MISSING;
 		}
 		throw new IllegalArgumentException();
 	}
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/FDef.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/FDef.java
index 91af465..ab8c1d5 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/FDef.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/FDef.java
@@ -14,9 +14,9 @@
 
 package org.eclipse.statet.r.core.rsource.ast;
 
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_EXPR_AS_ARGVALUE_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_EXPR_AS_BODY_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS3_FDEF;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.CTX12_FDEF;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_EXPR_AS_ARGVALUE_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_EXPR_AS_BODY_MISSING;
 
 import java.lang.reflect.InvocationTargetException;
 
@@ -325,7 +325,7 @@
 		@Override
 		final int getMissingExprStatus(final Expression expr) {
 			if (this.withDefault && this.defaultExpr == expr) {
-				return (STATUS12_SYNTAX_EXPR_AS_ARGVALUE_MISSING | STATUS3_FDEF);
+				return TYPE123_SYNTAX_EXPR_AS_ARGVALUE_MISSING | CTX12_FDEF;
 			}
 			throw new IllegalArgumentException();
 		}
@@ -447,7 +447,7 @@
 	@Override
 	final int getMissingExprStatus(final Expression expr) {
 		if (expr == this.expr) {
-			return (STATUS12_SYNTAX_EXPR_AS_BODY_MISSING | STATUS3_FDEF);
+			return TYPE123_SYNTAX_EXPR_AS_BODY_MISSING | CTX12_FDEF;
 		}
 		throw new IllegalArgumentException();
 	}
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/Group.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/Group.java
index a0a2fe7..f16ab95 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/Group.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/Group.java
@@ -14,7 +14,7 @@
 
 package org.eclipse.statet.r.core.rsource.ast;
 
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_EXPR_IN_GROUP_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_EXPR_IN_GROUP_MISSING;
 
 import java.lang.reflect.InvocationTargetException;
 
@@ -131,7 +131,7 @@
 	@Override
 	final int getMissingExprStatus(final Expression expr) {
 		if (this.expr == expr) {
-			return STATUS12_SYNTAX_EXPR_IN_GROUP_MISSING;
+			return TYPE123_SYNTAX_EXPR_IN_GROUP_MISSING;
 		}
 		throw new IllegalArgumentException();
 	}
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/Help.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/Help.java
index cc26445..0222885 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/Help.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/Help.java
@@ -14,8 +14,8 @@
 
 package org.eclipse.statet.r.core.rsource.ast;
 
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_EXPR_AFTER_OP_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS_OK;
+import static org.eclipse.statet.ltk.core.StatusCodes.TYPE1_OK;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_EXPR_AFTER_OP_MISSING;
 
 import java.lang.reflect.InvocationTargetException;
 
@@ -159,10 +159,10 @@
 	@Override
 	final int getMissingExprStatus(final Expression expr) {
 		if (this.rightExpr == expr) {
-			return STATUS12_SYNTAX_EXPR_AFTER_OP_MISSING;
+			return TYPE123_SYNTAX_EXPR_AFTER_OP_MISSING;
 		}
 		if (this.leftExpr == expr) {
-			return STATUS_OK;
+			return TYPE1_OK;
 		}
 		throw new IllegalArgumentException();
 	}
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/Model.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/Model.java
index 2e555a6..64bb069 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/Model.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/Model.java
@@ -14,8 +14,8 @@
 
 package org.eclipse.statet.r.core.rsource.ast;
 
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_EXPR_AFTER_OP_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS_OK;
+import static org.eclipse.statet.ltk.core.StatusCodes.TYPE1_OK;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_EXPR_AFTER_OP_MISSING;
 
 import java.lang.reflect.InvocationTargetException;
 
@@ -157,10 +157,10 @@
 	@Override
 	final int getMissingExprStatus(final Expression expr) {
 		if (this.rightExpr == expr) {
-			return STATUS12_SYNTAX_EXPR_AFTER_OP_MISSING;
+			return TYPE123_SYNTAX_EXPR_AFTER_OP_MISSING;
 		}
 		if (this.leftExpr == expr) {
-			return STATUS_OK;
+			return TYPE1_OK;
 		}
 		throw new IllegalArgumentException();
 	}
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/Pipe.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/Pipe.java
index 2eec85e..d85f847 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/Pipe.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/Pipe.java
@@ -14,9 +14,9 @@
 
 package org.eclipse.statet.r.core.rsource.ast;
 
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_EXPR_BEFORE_OP_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_FCALL_AFTER_OP_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS3_PIPE;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.CTX12_PIPE;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_EXPR_BEFORE_OP_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_FCALL_AFTER_OP_MISSING;
 
 import java.lang.reflect.InvocationTargetException;
 
@@ -109,10 +109,10 @@
 	@Override
 	int getMissingExprStatus(final Expression expr) {
 		if (this.leftExpr == expr) {
-			return STATUS12_SYNTAX_EXPR_BEFORE_OP_MISSING | STATUS3_PIPE;
+			return TYPE123_SYNTAX_EXPR_BEFORE_OP_MISSING | CTX12_PIPE;
 		}
 		if (this.rightExpr == expr) {
-			return STATUS12_SYNTAX_FCALL_AFTER_OP_MISSING | STATUS3_PIPE;
+			return TYPE12_SYNTAX_FCALL_AFTER_OP_MISSING | CTX12_PIPE;
 		}
 		throw new IllegalArgumentException();
 	}
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/RAstNode.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/RAstNode.java
index 9b47a1c..6a6f935 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/RAstNode.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/RAstNode.java
@@ -14,7 +14,7 @@
 
 package org.eclipse.statet.r.core.rsource.ast;
 
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS_OK;
+import static org.eclipse.statet.ltk.core.StatusCodes.TYPE1_OK;
 
 import java.lang.reflect.InvocationTargetException;
 
@@ -53,7 +53,7 @@
 	
 	
 	protected RAstNode() {
-		this.status= STATUS_OK;
+		this.status= TYPE1_OK;
 	}
 	
 	protected RAstNode(final int status) {
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/RAsts.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/RAsts.java
index bd10e3d..34ec846 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/RAsts.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/RAsts.java
@@ -40,7 +40,6 @@
 import org.eclipse.statet.r.core.rmodel.ArgsDefinition;
 import org.eclipse.statet.r.core.rmodel.ArgsDefinition.Arg;
 import org.eclipse.statet.r.core.rmodel.RCoreFunctions;
-import org.eclipse.statet.r.core.rsource.RSourceConstants;
 
 
 /**
@@ -816,12 +815,6 @@
 	}
 	
 	
-	public static boolean hasErrors(final RAstNode node) {
-		return ((node.getStatusCode() &
-						(RSourceConstants.STATUSFLAG_REAL_ERROR | RSourceConstants.STATUSFLAG_ERROR_IN_CHILD)
-				) != 0 );
-	}
-	
 	public static int @Nullable [] computeRExpressionIndex(RAstNode node, final RAstNode baseNode) {
 		final IntList topdown= new IntArrayList();
 		ITER_DOWN: while (node != baseNode) {
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/RParser.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/RParser.java
index 2beb022..b6a8178 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/RParser.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/RParser.java
@@ -17,33 +17,32 @@
 import static org.eclipse.statet.jcommons.lang.ObjectUtils.nonNullAssert;
 
 import static org.eclipse.statet.ltk.ast.core.AstNode.NA_OFFSET;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS123_SYNTAX_SEQREL_UNEXPECTED;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_CC_NOT_CLOSED;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_CONDITION_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_CONDITION_NOT_CLOSED;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_ELEMENTNAME_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_EXPR_AS_BODY_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_EXPR_AS_CONDITION_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_FCALL_NOT_CLOSED;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_FDEF_ARGS_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_FDEF_ARGS_NOT_CLOSED;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_IF_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_IN_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_OPERATOR_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_SUBINDEXED_NOT_CLOSED;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_SYMBOL_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_TOKEN_UNEXPECTED;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_TOKEN_UNKNOWN;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS3_FDEF;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS3_FOR;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS3_IF;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS3_PIPE;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS3_WHILE;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUSFLAG_ERROR_IN_CHILD;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUSFLAG_REAL_ERROR;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUSFLAG_SUBSEQUENT;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS_RUNTIME_ERROR;
+import static org.eclipse.statet.ltk.core.StatusCodes.ERROR;
+import static org.eclipse.statet.ltk.core.StatusCodes.ERROR_IN_CHILD;
+import static org.eclipse.statet.ltk.core.StatusCodes.SUBSEQUENT;
+import static org.eclipse.statet.ltk.core.StatusCodes.TYPE1_RUNTIME_ERROR;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.CTX12_FDEF;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.CTX12_FOR;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.CTX12_IF;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.CTX12_PIPE;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.CTX12_WHILE;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_EXPR_AS_BODY_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_EXPR_AS_CONDITION_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_SEQREL_UNEXPECTED;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_CC_NOT_CLOSED;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_CONDITION_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_CONDITION_NOT_CLOSED;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_ELEMENTNAME_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_FDEF_ARGS_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_FDEF_ARGS_NOT_CLOSED;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_IF_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_IN_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_NODE_NOT_CLOSED;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_OPERATOR_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_SYMBOL_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_TOKEN_UNEXPECTED;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_TOKEN_UNKNOWN;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -270,7 +269,7 @@
 		catch (final Exception e) {
 			RCorePlugin.logError("Error occured while parsing R code", e);
 			final SourceComponent dummy= new SourceComponent();
-			dummy.status= STATUS_RUNTIME_ERROR;
+			dummy.status= TYPE1_RUNTIME_ERROR;
 			if (this.commentsLevel != 0) {
 				dummy.comments= ImCollections.emptyList();
 			}
@@ -505,7 +504,7 @@
 				{	final Pipe node= new Pipe.Forward();
 					setupFromSourceToken(node);
 					if (this.rLangVersion < LANG_VERSION_4_1) {
-						node.status= STATUS12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION | STATUS3_PIPE;
+						node.status= TYPE12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION | CTX12_PIPE;
 					}
 					consumeToken();
 					appendOp(context, node);
@@ -709,7 +708,7 @@
 		}
 		else {
 			node.endOffset= this.lexer.getOffset();
-			node.status |= STATUS12_SYNTAX_CC_NOT_CLOSED;
+			node.status |= TYPE12_SYNTAX_CC_NOT_CLOSED;
 			return node;
 		}
 	}
@@ -727,7 +726,7 @@
 		}
 		else {
 			node.endOffset= this.lexer.getOffset();
-			node.status |= STATUS12_SYNTAX_CC_NOT_CLOSED;
+			node.status |= TYPE12_SYNTAX_CC_NOT_CLOSED;
 			return node;
 		}
 	}
@@ -768,7 +767,8 @@
 				break;
 			}
 		default:
-			node.namespace= errorNonExistingSymbol(node, node.startOffset, STATUS12_SYNTAX_ELEMENTNAME_MISSING);
+			node.namespace= errorNonExistingSymbol(node, node.startOffset,
+					TYPE12_SYNTAX_ELEMENTNAME_MISSING );
 			break;
 		}
 		
@@ -786,7 +786,8 @@
 			node.endOffset= node.element.endOffset;
 			return node;
 		default:
-			node.element= errorNonExistingSymbol(node, node.endOffset, STATUS12_SYNTAX_ELEMENTNAME_MISSING);
+			node.element= errorNonExistingSymbol(node, node.endOffset,
+					TYPE12_SYNTAX_ELEMENTNAME_MISSING );
 			return node;
 		}
 	}
@@ -821,7 +822,8 @@
 			node.endOffset= node.subname.endOffset;
 			return node;
 		default:
-			node.subname= errorNonExistingSymbol(node, node.endOffset, STATUS12_SYNTAX_ELEMENTNAME_MISSING);
+			node.subname= errorNonExistingSymbol(node, node.endOffset,
+					TYPE12_SYNTAX_ELEMENTNAME_MISSING );
 			return node;
 		}
 	}
@@ -858,7 +860,7 @@
 				}
 				else {
 					node.endOffset= node.closeOffset + 1;
-					node.status |= STATUS12_SYNTAX_SUBINDEXED_NOT_CLOSED;
+					node.status |= TYPE12_SYNTAX_NODE_NOT_CLOSED;
 					return node;
 				}
 			}
@@ -869,7 +871,7 @@
 		}
 		else {
 			node.endOffset= node.sublist.endOffset;
-			node.status |= STATUS12_SYNTAX_SUBINDEXED_NOT_CLOSED;
+			node.status |= TYPE12_SYNTAX_NODE_NOT_CLOSED;
 			return node;
 		}
 	}
@@ -899,13 +901,13 @@
 			}
 			else {
 				node.endOffset= node.condExpr.node.endOffset;
-				node.status |= STATUS12_SYNTAX_CONDITION_NOT_CLOSED;
+				node.status |= TYPE12_SYNTAX_CONDITION_NOT_CLOSED;
 			}
 		}
 		else {
-			node.status= STATUS12_SYNTAX_CONDITION_MISSING;
+			node.status= TYPE12_SYNTAX_CONDITION_MISSING;
 			node.condExpr.node= errorNonExistExpression(node, node.endOffset,
-					(STATUS12_SYNTAX_EXPR_AS_CONDITION_MISSING | STATUSFLAG_SUBSEQUENT | STATUS3_IF));
+					TYPE123_SYNTAX_EXPR_AS_CONDITION_MISSING | SUBSEQUENT | CTX12_IF );
 		}
 		
 		// then
@@ -920,7 +922,7 @@
 		}
 		else {
 			node.thenExpr.node= errorNonExistExpression(node, node.condExpr.node.endOffset,
-					(STATUS12_SYNTAX_EXPR_AS_BODY_MISSING | STATUSFLAG_SUBSEQUENT | STATUS3_IF));
+					TYPE123_SYNTAX_EXPR_AS_BODY_MISSING | SUBSEQUENT | CTX12_IF );
 		}
 		
 		// else
@@ -937,11 +939,11 @@
 	final CIfElse scanCElse(final ExprContext context) { // else without if
 		final CIfElse node= new CIfElse();
 		setupFromSourceToken(node);
-		node.status= STATUS12_SYNTAX_IF_MISSING;
+		node.status= TYPE12_SYNTAX_IF_MISSING;
 		node.condExpr.node= errorNonExistExpression(node, node.startOffset,
-				(STATUS12_SYNTAX_EXPR_AS_CONDITION_MISSING | STATUSFLAG_SUBSEQUENT | STATUS3_IF));
+				TYPE123_SYNTAX_EXPR_AS_CONDITION_MISSING | SUBSEQUENT | CTX12_IF );
 		node.thenExpr.node= errorNonExistExpression(node, node.startOffset,
-				(STATUS12_SYNTAX_EXPR_AS_BODY_MISSING | STATUSFLAG_SUBSEQUENT | STATUS3_IF));
+				TYPE123_SYNTAX_EXPR_AS_BODY_MISSING | SUBSEQUENT | CTX12_IF );
 		node.elseOffset= this.lexer.getOffset();
 		node.withElse= true;
 		consumeToken();
@@ -969,7 +971,8 @@
 				readLines();
 				break;
 			default:
-				node.varSymbol= errorNonExistingSymbol(node, node.condOpenOffset + 1, STATUS12_SYNTAX_SYMBOL_MISSING);
+				node.varSymbol= errorNonExistingSymbol(node, node.condOpenOffset + 1,
+						TYPE12_SYNTAX_SYMBOL_MISSING );
 				ok--;
 				break;
 			}
@@ -984,10 +987,10 @@
 			}
 			else {
 				node.endOffset= node.varSymbol.endOffset;
-				node.status |= (ok >= 0) ? STATUS12_SYNTAX_IN_MISSING :
-						(STATUS12_SYNTAX_IN_MISSING | STATUSFLAG_SUBSEQUENT);
+				node.status |= (ok >= 0) ? TYPE12_SYNTAX_IN_MISSING :
+						(TYPE12_SYNTAX_IN_MISSING | SUBSEQUENT);
 				node.condExpr.node= errorNonExistExpression(node, node.endOffset,
-						(STATUS12_SYNTAX_EXPR_AS_CONDITION_MISSING | STATUSFLAG_SUBSEQUENT));
+						TYPE123_SYNTAX_EXPR_AS_CONDITION_MISSING | SUBSEQUENT );
 			}
 			
 			if (this.nextType == RTerminal.GROUP_CLOSE) {
@@ -999,24 +1002,24 @@
 			}
 			else {
 				node.endOffset= node.condExpr.node.endOffset;
-				if ((node.status & STATUSFLAG_REAL_ERROR) == 0) {
-					node.status |= (ok >= 0) ? STATUS12_SYNTAX_CONDITION_NOT_CLOSED :
-							(STATUS12_SYNTAX_CONDITION_NOT_CLOSED | STATUSFLAG_SUBSEQUENT);
+				if ((node.status & ERROR) == 0) {
+					node.status |= (ok >= 0) ? TYPE12_SYNTAX_CONDITION_NOT_CLOSED :
+							(TYPE12_SYNTAX_CONDITION_NOT_CLOSED | SUBSEQUENT);
 				}
 			}
 		}
 		else { // missing GROUP_OPEN
-			node.status= STATUS12_SYNTAX_CONDITION_MISSING;
+			node.status= TYPE12_SYNTAX_CONDITION_MISSING;
 			node.varSymbol= errorNonExistingSymbol(node, node.endOffset,
-					STATUS12_SYNTAX_SYMBOL_MISSING | STATUSFLAG_SUBSEQUENT);
+					TYPE12_SYNTAX_SYMBOL_MISSING | SUBSEQUENT );
 			node.condExpr.node= errorNonExistExpression(node, node.endOffset,
-					(STATUS12_SYNTAX_EXPR_AS_CONDITION_MISSING | STATUSFLAG_SUBSEQUENT | STATUS3_FOR));
+					TYPE123_SYNTAX_EXPR_AS_CONDITION_MISSING | SUBSEQUENT | CTX12_FOR);
 		}
 		
 		// loop
 		if (ok <= 0 && !recoverCCont()) {
 			node.loopExpr.node= errorNonExistExpression(node, node.endOffset,
-					(STATUS12_SYNTAX_EXPR_AS_BODY_MISSING | STATUSFLAG_SUBSEQUENT | STATUS3_FOR));
+					TYPE123_SYNTAX_EXPR_AS_BODY_MISSING | SUBSEQUENT | CTX12_FOR );
 		}
 		
 		return node;
@@ -1047,20 +1050,20 @@
 			}
 			else {
 				node.endOffset= node.condExpr.node.endOffset;
-				node.status= (ok >= 0) ? STATUS12_SYNTAX_CONDITION_NOT_CLOSED :
-						(STATUS12_SYNTAX_CONDITION_NOT_CLOSED | STATUSFLAG_SUBSEQUENT);
+				node.status= (ok >= 0) ? TYPE12_SYNTAX_CONDITION_NOT_CLOSED :
+						(TYPE12_SYNTAX_CONDITION_NOT_CLOSED | SUBSEQUENT);
 			}
 		}
 		else {
-			node.status= STATUS12_SYNTAX_CONDITION_MISSING;
+			node.status= TYPE12_SYNTAX_CONDITION_MISSING;
 			node.condExpr.node= errorNonExistExpression(node, node.endOffset,
-					(STATUS12_SYNTAX_EXPR_AS_CONDITION_MISSING | STATUSFLAG_SUBSEQUENT | STATUS3_WHILE));
+					TYPE123_SYNTAX_EXPR_AS_CONDITION_MISSING | SUBSEQUENT | CTX12_WHILE );
 		}
 		
 		// loop
 		if (ok <= 0 && !recoverCCont()) {
 			node.loopExpr.node= errorNonExistExpression(node, node.endOffset,
-					(STATUS12_SYNTAX_EXPR_AS_BODY_MISSING | STATUSFLAG_SUBSEQUENT | STATUS3_WHILE));
+					TYPE123_SYNTAX_EXPR_AS_BODY_MISSING | SUBSEQUENT | CTX12_WHILE );
 		}
 		
 		return node;
@@ -1085,7 +1088,7 @@
 			node= new FDef.B();
 			setupFromSourceToken(node);
 			if (this.rLangVersion < LANG_VERSION_4_1) {
-				node.status= STATUS12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION | STATUS3_FDEF;
+				node.status= TYPE12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION | CTX12_FDEF;
 			}
 			break;
 		default:
@@ -1113,22 +1116,22 @@
 			}
 			else {
 				node.endOffset= node.args.endOffset;
-				if ((node.status & STATUSFLAG_REAL_ERROR) == 0) {
-					node.status= STATUS12_SYNTAX_FDEF_ARGS_NOT_CLOSED;
+				if ((node.status & ERROR) == 0) {
+					node.status= TYPE12_SYNTAX_FDEF_ARGS_NOT_CLOSED;
 				}
 			}
 		}
 		else {
 			node.args.finishMissing(node.endOffset);
-			if ((node.status & STATUSFLAG_REAL_ERROR) == 0) {
-				node.status= STATUS12_SYNTAX_FDEF_ARGS_MISSING;
+			if ((node.status & ERROR) == 0) {
+				node.status= TYPE12_SYNTAX_FDEF_ARGS_MISSING;
 			}
 		}
 		
 		// body
 		if (ok <= 0 && !recoverCCont()) {
 			node.expr.node= errorNonExistExpression(node, node.endOffset,
-					(STATUS12_SYNTAX_EXPR_AS_BODY_MISSING | STATUSFLAG_SUBSEQUENT | STATUS3_FDEF));
+					TYPE123_SYNTAX_EXPR_AS_BODY_MISSING | SUBSEQUENT | CTX12_FDEF );
 		}
 		
 		return node;
@@ -1151,7 +1154,7 @@
 		}
 		else {
 			node.endOffset= node.args.endOffset;
-			node.status |= STATUS12_SYNTAX_FCALL_NOT_CLOSED;
+			node.status |= TYPE12_SYNTAX_NODE_NOT_CLOSED;
 		}
 		
 		return node;
@@ -1183,7 +1186,8 @@
 			}
 			
 			if (arg.argName == null) {
-				arg.argName= errorNonExistingSymbol(arg, arg.endOffset, STATUS12_SYNTAX_SYMBOL_MISSING);
+				arg.argName= errorNonExistingSymbol(arg, arg.endOffset,
+						TYPE12_SYNTAX_SYMBOL_MISSING );
 			}
 			
 			if (this.nextType == RTerminal.EQUAL) {
@@ -1235,7 +1239,8 @@
 				readLines();
 				break;
 			case EQUAL:
-				arg.argName= errorNonExistingSymbol(arg, this.lexer.getOffset(), STATUS12_SYNTAX_ELEMENTNAME_MISSING);
+				arg.argName= errorNonExistingSymbol(arg, this.lexer.getOffset(),
+						TYPE12_SYNTAX_ELEMENTNAME_MISSING );
 				break;
 			default:
 				break;
@@ -1322,7 +1327,8 @@
 				readLines();
 				break;
 			case EQUAL:
-				arg.argName= errorNonExistingSymbol(arg, this.lexer.getOffset(), STATUS12_SYNTAX_ELEMENTNAME_MISSING);
+				arg.argName= errorNonExistingSymbol(arg, this.lexer.getOffset(),
+						TYPE12_SYNTAX_ELEMENTNAME_MISSING );
 				break;
 			default:
 				break;
@@ -1399,7 +1405,7 @@
 		}
 		else {
 			// setup missing op
-			final Dummy.Operator error= new Dummy.Operator(STATUS12_SYNTAX_OPERATOR_MISSING);
+			final Dummy.Operator error= new Dummy.Operator(TYPE12_SYNTAX_OPERATOR_MISSING);
 			error.rParent= context.rootNode;
 			error.leftExpr.node= context.rootExpr.node;
 			error.startOffset= error.endOffset= newNode.startOffset;
@@ -1430,8 +1436,8 @@
 				switch (candType.opAssoc) {
 				case Assoc.NOSTD:
 					left= cand;
-					if ((newNode.status & STATUSFLAG_REAL_ERROR) == 0) {
-						newNode.status= STATUS123_SYNTAX_SEQREL_UNEXPECTED;
+					if ((newNode.status & ERROR) == 0) {
+						newNode.status= TYPE123_SYNTAX_SEQREL_UNEXPECTED;
 					}
 					break ITER_CAND;
 				case Assoc.LEFTSTD:
@@ -1467,13 +1473,13 @@
 		final Dummy.Terminal error= new Dummy.Terminal(status);
 		error.rParent= parent;
 		error.startOffset= error.endOffset= (stopHint != NA_OFFSET) ? stopHint : parent.endOffset;
-		parent.status |= STATUSFLAG_ERROR_IN_CHILD;
+		parent.status |= ERROR_IN_CHILD;
 		return error;
 	}
 	
 	Dummy.Terminal errorFromNext(final @Nullable RAstNode parent) {
 		final Dummy.Terminal error= new Dummy.Terminal((this.nextType == RTerminal.UNKNOWN) ?
-				STATUS12_SYNTAX_TOKEN_UNKNOWN : STATUS12_SYNTAX_TOKEN_UNEXPECTED);
+				TYPE12_SYNTAX_TOKEN_UNKNOWN : TYPE12_SYNTAX_TOKEN_UNEXPECTED);
 		error.rParent= parent;
 		error.startOffset= this.lexer.getOffset();
 		error.endOffset= this.lexer.getOffset() + this.lexer.getLength();
@@ -1482,7 +1488,7 @@
 		}
 		consumeToken();
 		if (parent != null) {
-			parent.status |= STATUSFLAG_ERROR_IN_CHILD;
+			parent.status |= ERROR_IN_CHILD;
 		}
 		return error;
 	}
@@ -1493,7 +1499,7 @@
 		error.startOffset= error.endOffset= offset;
 		error.setText("", null); //$NON-NLS-1$
 		error.status= status;
-		parent.status |= STATUSFLAG_ERROR_IN_CHILD;
+		parent.status |= ERROR_IN_CHILD;
 		return error;
 	}
 	
@@ -1873,7 +1879,7 @@
 	}
 	
 	
-	private List<ArgsBuilder<?>> argBuilders= new ArrayList<>(16);
+	private final List<ArgsBuilder<?>> argBuilders= new ArrayList<>(16);
 	private int argBuildersIdx;
 	
 	private void clearArgsBuilder() {
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/RScannerPostExprVisitor.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/RScannerPostExprVisitor.java
index 46eb4ef..1538bd0 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/RScannerPostExprVisitor.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/RScannerPostExprVisitor.java
@@ -14,14 +14,15 @@
 
 package org.eclipse.statet.r.core.rsource.ast;
 
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_EXPR_BEFORE_OP_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_FCALL_AFTER_OP_EXPR_UNEXPECTED;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_FCALL_AFTER_OP_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS3_PIPE;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUSFLAG_ERROR_IN_CHILD;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUSFLAG_REAL_ERROR;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUSFLAG_SUBSEQUENT;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS_MASK_123;
+import static org.eclipse.statet.ltk.core.StatusCodes.CTX12;
+import static org.eclipse.statet.ltk.core.StatusCodes.ERROR;
+import static org.eclipse.statet.ltk.core.StatusCodes.ERROR_IN_CHILD;
+import static org.eclipse.statet.ltk.core.StatusCodes.SUBSEQUENT;
+import static org.eclipse.statet.ltk.core.StatusCodes.TYPE12;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.CTX12_PIPE;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_EXPR_BEFORE_OP_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_FCALL_AFTER_OP_EXPR_UNEXPECTED;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_FCALL_AFTER_OP_MISSING;
 
 import java.lang.reflect.InvocationTargetException;
 
@@ -37,7 +38,7 @@
 @NonNullByDefault
 /* package */ class RScannerPostExprVisitor extends RAstVisitor {
 	
-	static final int SYNTAXERROR_MASK= (STATUSFLAG_REAL_ERROR | STATUSFLAG_ERROR_IN_CHILD);
+	static final int SYNTAXERROR_MASK= (ERROR | ERROR_IN_CHILD);
 	
 	
 	private boolean syntaxError;
@@ -52,14 +53,14 @@
 			// not used
 		}
 		if (this.syntaxError) {
-			return STATUSFLAG_ERROR_IN_CHILD;
+			return ERROR_IN_CHILD;
 		}
 		return 0;
 	}
 	
 	public int checkTerminal(final RAstNode node) {
 		if ((node.getStatusCode() & SYNTAXERROR_MASK) != 0) {
-			return STATUSFLAG_ERROR_IN_CHILD;
+			return ERROR_IN_CHILD;
 		}
 		return 0;
 	}
@@ -69,7 +70,7 @@
 		this.syntaxError= false;
 		child.acceptInR(this);
 		if (this.syntaxError) {
-			child.rParent.status |= STATUSFLAG_ERROR_IN_CHILD;
+			child.rParent.status |= ERROR_IN_CHILD;
 		}
 		this.syntaxError |= savedSyntaxError;
 	}
@@ -79,14 +80,14 @@
 		this.syntaxError= false;
 		node.acceptInRChildren(this);
 		if (this.syntaxError) {
-			node.status |= STATUSFLAG_ERROR_IN_CHILD;
+			node.status |= ERROR_IN_CHILD;
 		}
 		this.syntaxError |= savedSyntaxError;
 	}
 	
-	private void markSubsequentIfStatus123(final RAstNode node, final int status) {
-		if ((node.getStatusCode() & STATUS_MASK_123) == status) {
-			node.status|= STATUSFLAG_SUBSEQUENT;
+	private void markSubsequentIfStatus12(final RAstNode node, final int status) {
+		if ((node.getStatusCode() & (TYPE12 | CTX12)) == status) {
+			node.status|= SUBSEQUENT;
 		}
 	}
 	
@@ -185,13 +186,13 @@
 	public void visit(final Pipe node) throws InvocationTargetException {
 		final RAstNode target= node.getTargetChild();
 		if (target.getNodeType() != NodeType.F_CALL
-				&& (target.getStatusCode() & STATUS_MASK_123) != (STATUS12_SYNTAX_FCALL_AFTER_OP_MISSING | STATUS3_PIPE) ) {
-			target.status= STATUS12_SYNTAX_FCALL_AFTER_OP_EXPR_UNEXPECTED | STATUS3_PIPE;
+				&& (target.getStatusCode() & (TYPE12 | CTX12)) != (TYPE12_SYNTAX_FCALL_AFTER_OP_MISSING | CTX12_PIPE) ) {
+			target.status= TYPE12_SYNTAX_FCALL_AFTER_OP_EXPR_UNEXPECTED | CTX12_PIPE;
 		}
-		if ((node.getStatusCode() & STATUS_MASK_123) == (RSourceConstants.STATUS12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION | STATUS3_PIPE)) {
-			markSubsequentIfStatus123(node.getSourceChild(), STATUS12_SYNTAX_EXPR_BEFORE_OP_MISSING | STATUS3_PIPE);
-			markSubsequentIfStatus123(target, STATUS12_SYNTAX_FCALL_AFTER_OP_MISSING | STATUS3_PIPE);
-			markSubsequentIfStatus123(target, STATUS12_SYNTAX_FCALL_AFTER_OP_EXPR_UNEXPECTED | STATUS3_PIPE);
+		if ((node.getStatusCode() & (TYPE12 | CTX12)) == (RSourceConstants.TYPE12_SYNTAX_UNSUPPORTED_IN_LANG_VERSION | CTX12_PIPE)) {
+			markSubsequentIfStatus12(node.getSourceChild(), TYPE123_SYNTAX_EXPR_BEFORE_OP_MISSING | CTX12_PIPE);
+			markSubsequentIfStatus12(target, TYPE12_SYNTAX_FCALL_AFTER_OP_MISSING | CTX12_PIPE);
+			markSubsequentIfStatus12(target, TYPE12_SYNTAX_FCALL_AFTER_OP_EXPR_UNEXPECTED | CTX12_PIPE);
 		}
 		doAccecptInChildren(node);
 		node.updateOffsets();
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/RoxygenParser.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/RoxygenParser.java
index 3db0001..e8702f2 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/RoxygenParser.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/RoxygenParser.java
@@ -17,8 +17,8 @@
 import static org.eclipse.statet.internal.r.core.rmodel.RoxygenTagType.SCAN_MODE_FREETEXT;
 import static org.eclipse.statet.internal.r.core.rmodel.RoxygenTagType.SCAN_MODE_RCODE;
 import static org.eclipse.statet.internal.r.core.rmodel.RoxygenTagType.SCAN_MODE_SYMBOL;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_SYMBOL_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_TOKEN_NOT_CLOSED;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_SYMBOL_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE12_SYNTAX_TOKEN_NOT_CLOSED;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -272,7 +272,7 @@
 			symbol= new Symbol.Std();
 			symbol.startOffset= in.getIndex();
 			symbol.endOffset= symbol.startOffset + in.getLengthInSource(num);
-			symbol.status= STATUS12_SYNTAX_SYMBOL_MISSING;
+			symbol.status= TYPE12_SYNTAX_SYMBOL_MISSING;
 			addSymbol(symbol);
 			in.consume(num);
 			return (c < 0 || c == '\n' || c == '\r');
@@ -304,7 +304,7 @@
 			case '\n':
 				num--;
 				symbol= new Symbol.G();
-				symbol.status= STATUS12_SYNTAX_TOKEN_NOT_CLOSED;
+				symbol.status= TYPE12_SYNTAX_TOKEN_NOT_CLOSED;
 				symbol.startOffset= in.getIndex();
 				symbol.endOffset= symbol.startOffset + in.getLengthInSource(num);
 				symbol.setText(in.getString(1, num, this.textCache),
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/Sign.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/Sign.java
index 0975a23..f30e332 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/Sign.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/Sign.java
@@ -14,7 +14,7 @@
 
 package org.eclipse.statet.r.core.rsource.ast;
 
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_EXPR_AFTER_OP_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_EXPR_AFTER_OP_MISSING;
 
 import java.lang.reflect.InvocationTargetException;
 
@@ -183,7 +183,7 @@
 	@Override
 	final int getMissingExprStatus(final Expression expr) {
 		if (this.rightExpr == expr) {
-			return STATUS12_SYNTAX_EXPR_AFTER_OP_MISSING;
+			return TYPE123_SYNTAX_EXPR_AFTER_OP_MISSING;
 		}
 		throw new IllegalArgumentException();
 	}
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/SpecItem.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/SpecItem.java
index e7ef3a0..860bfc0 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/SpecItem.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/SpecItem.java
@@ -14,7 +14,7 @@
 
 package org.eclipse.statet.r.core.rsource.ast;
 
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS_OK;
+import static org.eclipse.statet.ltk.core.StatusCodes.TYPE1_OK;
 
 import java.lang.reflect.InvocationTargetException;
 
@@ -170,7 +170,7 @@
 	@Override
 	final int getMissingExprStatus(final Expression expr) {
 		if (this.valueExpr == expr) {
-			return STATUS_OK;
+			return TYPE1_OK;
 		}
 		throw new IllegalArgumentException();
 	}
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/StdBinary.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/StdBinary.java
index d943c19..352f70c 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/StdBinary.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/StdBinary.java
@@ -14,8 +14,8 @@
 
 package org.eclipse.statet.r.core.rsource.ast;
 
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_EXPR_AFTER_OP_MISSING;
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_EXPR_BEFORE_OP_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_EXPR_AFTER_OP_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_EXPR_BEFORE_OP_MISSING;
 
 import java.lang.reflect.InvocationTargetException;
 
@@ -120,10 +120,10 @@
 	@Override
 	int getMissingExprStatus(final Expression expr) {
 		if (this.leftExpr == expr) {
-			return STATUS12_SYNTAX_EXPR_BEFORE_OP_MISSING;
+			return TYPE123_SYNTAX_EXPR_BEFORE_OP_MISSING;
 		}
 		if (this.rightExpr == expr) {
-			return STATUS12_SYNTAX_EXPR_AFTER_OP_MISSING;
+			return TYPE123_SYNTAX_EXPR_AFTER_OP_MISSING;
 		}
 		throw new IllegalArgumentException();
 	}
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/SubIndexed.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/SubIndexed.java
index 49f28c8..8ee1f5c 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/SubIndexed.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/SubIndexed.java
@@ -14,7 +14,7 @@
 
 package org.eclipse.statet.r.core.rsource.ast;
 
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_EXPR_AS_REF_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_EXPR_AS_REF_MISSING;
 
 import java.lang.reflect.InvocationTargetException;
 
@@ -333,7 +333,7 @@
 	@Override
 	final int getMissingExprStatus(final Expression expr) {
 		if (this.expr == expr) {
-			return STATUS12_SYNTAX_EXPR_AS_REF_MISSING;
+			return TYPE123_SYNTAX_EXPR_AS_REF_MISSING;
 		}
 		throw new IllegalArgumentException();
 	}
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/SubNamed.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/SubNamed.java
index 035d7af..8772012 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/SubNamed.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/rsource/ast/SubNamed.java
@@ -14,7 +14,7 @@
 
 package org.eclipse.statet.r.core.rsource.ast;
 
-import static org.eclipse.statet.r.core.rsource.RSourceConstants.STATUS12_SYNTAX_EXPR_AS_REF_MISSING;
+import static org.eclipse.statet.r.core.rsource.RSourceConstants.TYPE123_SYNTAX_EXPR_AS_REF_MISSING;
 
 import java.lang.reflect.InvocationTargetException;
 
@@ -175,7 +175,7 @@
 	@Override
 	final int getMissingExprStatus(final Expression expr) {
 		if (this.expr == expr) {
-			return STATUS12_SYNTAX_EXPR_AS_REF_MISSING;
+			return TYPE123_SYNTAX_EXPR_AS_REF_MISSING;
 		}
 		throw new IllegalArgumentException();
 	}