Index: src/grammar/lexer.flex
===================================================================
--- src/grammar/lexer.flex	(revision 485)
+++ src/grammar/lexer.flex	(working copy)
@@ -24,6 +24,7 @@
     private StringBuffer codeBody = new StringBuffer(8192);
 	private boolean annoExpected;
     private boolean newMode;
+    private boolean bracketMode;
     private boolean anonymousMode;
     private boolean enumMode;
     private boolean appendingToCodeBody;
@@ -286,6 +287,7 @@
     ";"                 { 
         if (nestingDepth == assignmentDepth) {
             appendingToCodeBody = true;
+            newMode = false;
             popState(); 
             return Parser.SEMI; 
         } else {
@@ -326,8 +328,8 @@
             return Parser.PARENCLOSE; 
         }
     }
-    "["                 { codeBody.append('['); nestingDepth++; }
-    "]"                 { codeBody.append(']'); nestingDepth--; }
+    "["                 { codeBody.append('['); bracketMode = true; nestingDepth++; }
+    "]"                 { codeBody.append(']'); bracketMode = false; nestingDepth--; }
     "new"               {
         codeBody.append("new");
         if (nestingDepth==assignmentDepth) {
@@ -336,14 +338,14 @@
     }
     "<"                 {
         codeBody.append('<');
-        if (newMode && !anonymousMode) { 
+        if (!bracketMode && newMode && !anonymousMode) {
             nestingDepth++; 
         }
     }
     ">"                 {
         codeBody.append('>');
         if (!anonymousMode) {
-	        if (newMode) {
+	        if (!bracketMode && newMode) {
     	        nestingDepth--;
     	    	if (nestingDepth==assignmentDepth) { 
     	            newMode=false;

