From 467ff9565c0e33f4eb63a44704db380a43e3aa44 Mon Sep 17 00:00:00 2001
From: gmantele <gmantele@ari.uni-heidelberg.de>
Date: Wed, 20 Apr 2016 14:24:26 +0200
Subject: [PATCH] [ADQL] Fix interpretation of math functions without
 parameters. Because of a test of the first parameter (non existing for
 functions like PI() and RAND()), a NullPointerException was thrown and so was
 stopping brutally an ADQL query interpretation.

---
 src/adql/parser/ADQLParser.java | 1115 +++++++++++++++++--------------
 src/adql/parser/adqlGrammar.jj  |   22 +-
 2 files changed, 632 insertions(+), 505 deletions(-)

diff --git a/src/adql/parser/ADQLParser.java b/src/adql/parser/ADQLParser.java
index c98e3d9..a56c08a 100644
--- a/src/adql/parser/ADQLParser.java
+++ b/src/adql/parser/ADQLParser.java
@@ -1,3 +1,4 @@
+/* ADQLParser.java */
 /* Generated By:JavaCC: Do not edit this line. ADQLParser.java */
 package adql.parser;
 
@@ -67,7 +68,7 @@ import adql.translator.TranslationException;
 * @see ADQLQueryFactory
 *
 * @author Gr&eacute;gory Mantelet (CDS;ARI) - gmantele@ari.uni-heidelberg.de
-* @version 1.4 (08/2015)
+* @version 1.4 (04/2016)
 */
 public class ADQLParser implements ADQLParserConstants {
 
@@ -493,13 +494,15 @@ public class ADQLParser implements ADQLParserConstants {
 		try{
 			ADQLQuery q = null;
 			q = QueryExpression();
-			switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-				case 0:
+			switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+				case 0:{
 					jj_consume_token(0);
 					break;
-				case EOQ:
+				}
+				case EOQ:{
 					jj_consume_token(EOQ);
 					break;
+				}
 				default:
 					jj_la1[0] = jj_gen;
 					jj_consume_token(-1);
@@ -510,7 +513,7 @@ public class ADQLParser implements ADQLParserConstants {
 				queryChecker.check(q);
 
 			{
-				if (true)
+				if ("" != null)
 					return q;
 			}
 			throw new Error("Missing return statement in function");
@@ -536,41 +539,41 @@ public class ADQLParser implements ADQLParserConstants {
 			Select();
 			From();
 			endPos = query.getFrom().getPosition();
-			switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-				case WHERE:
+			switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+				case WHERE:{
 					Where();
 					endPos = query.getWhere().getPosition();
 					break;
+				}
 				default:
-					jj_la1[1] = jj_gen;
-					;
+					jj_la1[1] = jj_gen;;
 			}
-			switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-				case GROUP_BY:
+			switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+				case GROUP_BY:{
 					GroupBy();
 					endPos = query.getGroupBy().getPosition();
 					break;
+				}
 				default:
-					jj_la1[2] = jj_gen;
-					;
+					jj_la1[2] = jj_gen;;
 			}
-			switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-				case HAVING:
+			switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+				case HAVING:{
 					Having();
 					endPos = query.getHaving().getPosition();
 					break;
+				}
 				default:
-					jj_la1[3] = jj_gen;
-					;
+					jj_la1[3] = jj_gen;;
 			}
-			switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-				case ORDER_BY:
+			switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+				case ORDER_BY:{
 					OrderBy();
 					endPos = query.getOrderBy().getPosition();
 					break;
+				}
 				default:
-					jj_la1[4] = jj_gen;
-					;
+					jj_la1[4] = jj_gen;;
 			}
 			// set the position of the query:
 			query.setPosition(new TextPosition(query.getSelect().getPosition(), endPos));
@@ -583,7 +586,7 @@ public class ADQLParser implements ADQLParserConstants {
 				query = stackQuery.peek();
 
 			{
-				if (true)
+				if ("" != null)
 					return previousQuery;
 			}
 			throw new Error("Missing return statement in function");
@@ -602,7 +605,7 @@ public class ADQLParser implements ADQLParserConstants {
 			end = jj_consume_token(RIGHT_PAR);
 			q.setPosition(new TextPosition(start, end));
 			{
-				if (true)
+				if ("" != null)
 					return q;
 			}
 			throw new Error("Missing return statement in function");
@@ -618,17 +621,17 @@ public class ADQLParser implements ADQLParserConstants {
 			SelectItem item = null;
 			Token start, t = null;
 			start = jj_consume_token(SELECT);
-			switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-				case QUANTIFIER:
+			switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+				case QUANTIFIER:{
 					t = jj_consume_token(QUANTIFIER);
 					select.setDistinctColumns(t.image.equalsIgnoreCase("DISTINCT"));
 					break;
+				}
 				default:
-					jj_la1[5] = jj_gen;
-					;
+					jj_la1[5] = jj_gen;;
 			}
-			switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-				case TOP:
+			switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+				case TOP:{
 					jj_consume_token(TOP);
 					t = jj_consume_token(UNSIGNED_INTEGER);
 					try{
@@ -640,17 +643,18 @@ public class ADQLParser implements ADQLParserConstants {
 						}
 					}
 					break;
+				}
 				default:
-					jj_la1[6] = jj_gen;
-					;
+					jj_la1[6] = jj_gen;;
 			}
 			item = SelectItem();
 			select.add(item);
 			label_1: while(true){
-				switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-					case COMMA:
+				switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+					case COMMA:{
 						;
 						break;
+					}
 					default:
 						jj_la1[7] = jj_gen;
 						break label_1;
@@ -674,43 +678,44 @@ public class ADQLParser implements ADQLParserConstants {
 			ADQLOperand op = null;
 			SelectItem item;
 			Token starToken;
-			switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-				case ASTERISK:
+			switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+				case ASTERISK:{
 					starToken = jj_consume_token(ASTERISK);
 					item = new SelectAllColumns(query);
 					item.setPosition(new TextPosition(starToken));
 					{
-						if (true)
+						if ("" != null)
 							return item;
 					}
 					break;
+				}
 				default:
 					jj_la1[11] = jj_gen;
 					if (jj_2_1(7)){
 						id = Identifier();
 						jj_consume_token(DOT);
 						identifiers.append(id);
-						switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
+						switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
 							case DELIMITED_IDENTIFIER:
-							case REGULAR_IDENTIFIER:
+							case REGULAR_IDENTIFIER:{
 								id = Identifier();
 								jj_consume_token(DOT);
 								identifiers.append(id);
-								switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
+								switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
 									case DELIMITED_IDENTIFIER:
-									case REGULAR_IDENTIFIER:
+									case REGULAR_IDENTIFIER:{
 										id = Identifier();
 										jj_consume_token(DOT);
 										identifiers.append(id);
 										break;
+									}
 									default:
-										jj_la1[8] = jj_gen;
-										;
+										jj_la1[8] = jj_gen;;
 								}
 								break;
+							}
 							default:
-								jj_la1[9] = jj_gen;
-								;
+								jj_la1[9] = jj_gen;;
 						}
 						starToken = jj_consume_token(ASTERISK);
 						try{
@@ -718,7 +723,7 @@ public class ADQLParser implements ADQLParserConstants {
 							TextPosition firstPos = identifiers.get(0).position;
 							item.setPosition(new TextPosition(firstPos.beginLine, firstPos.beginColumn, starToken.endLine, (starToken.endColumn < 0) ? -1 : (starToken.endColumn + 1)));
 							{
-								if (true)
+								if ("" != null)
 									return item;
 							}
 						}catch(Exception ex){
@@ -728,7 +733,7 @@ public class ADQLParser implements ADQLParserConstants {
 							}
 						}
 					}else{
-						switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
+						switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
 							case LEFT_PAR:
 							case PLUS:
 							case MINUS:
@@ -778,18 +783,19 @@ public class ADQLParser implements ADQLParserConstants {
 							case REGULAR_IDENTIFIER:
 							case SCIENTIFIC_NUMBER:
 							case UNSIGNED_FLOAT:
-							case UNSIGNED_INTEGER:
+							case UNSIGNED_INTEGER:{
 								op = ValueExpression();
-								switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-									case AS:
+								switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+									case AS:{
 										jj_consume_token(AS);
 										label = Identifier();
 										break;
+									}
 									default:
-										jj_la1[10] = jj_gen;
-										;
+										jj_la1[10] = jj_gen;;
 								}
 								break;
+							}
 							default:
 								jj_la1[12] = jj_gen;
 								jj_consume_token(-1);
@@ -805,7 +811,7 @@ public class ADQLParser implements ADQLParserConstants {
 				}else
 					item.setPosition(new TextPosition(op.getPosition()));
 				{
-					if (true)
+					if ("" != null)
 						return item;
 				}
 			}catch(Exception ex){
@@ -828,17 +834,19 @@ public class ADQLParser implements ADQLParserConstants {
 				jj_consume_token(FROM);
 				content = TableRef();
 				label_2: while(true){
-					switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-						case COMMA:
+					switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+						case COMMA:{
 							;
 							break;
+						}
 						default:
 							jj_la1[13] = jj_gen;
 							break label_2;
 					}
 					jj_consume_token(COMMA);
 					content2 = TableRef();
-					TextPosition startPos = content.getPosition(), endPos = content2.getPosition();
+					TextPosition startPos = content.getPosition(),
+							endPos = content2.getPosition();
 					content = queryFactory.createJoin(JoinType.CROSS, content, content2);
 					content.setPosition(new TextPosition(startPos, endPos));
 				}
@@ -879,10 +887,11 @@ public class ADQLParser implements ADQLParserConstants {
 			colRef = ColumnRef();
 			groupBy.add(colRef);
 			label_3: while(true){
-				switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-					case COMMA:
+				switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+					case COMMA:{
 						;
 						break;
+					}
 					default:
 						jj_la1[14] = jj_gen;
 						break label_3;
@@ -921,10 +930,11 @@ public class ADQLParser implements ADQLParserConstants {
 			order = OrderItem();
 			orderBy.add(order);
 			label_4: while(true){
-				switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-					case COMMA:
+				switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+					case COMMA:{
 						;
 						break;
+					}
 					default:
 						jj_la1[15] = jj_gen;
 						break label_4;
@@ -946,21 +956,23 @@ public class ADQLParser implements ADQLParserConstants {
 		trace_call("Identifier");
 		try{
 			Token t;
-			switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-				case REGULAR_IDENTIFIER:
+			switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+				case REGULAR_IDENTIFIER:{
 					t = jj_consume_token(REGULAR_IDENTIFIER);
 					{
-						if (true)
+						if ("" != null)
 							return new IdentifierItem(t, false);
 					}
 					break;
-				case DELIMITED_IDENTIFIER:
+				}
+				case DELIMITED_IDENTIFIER:{
 					t = jj_consume_token(DELIMITED_IDENTIFIER);
 					{
-						if (true)
+						if ("" != null)
 							return new IdentifierItem(t, true);
 					}
 					break;
+				}
 				default:
 					jj_la1[16] = jj_gen;
 					jj_consume_token(-1);
@@ -984,28 +996,28 @@ public class ADQLParser implements ADQLParserConstants {
 			IdentifierItem id = null;
 			id = Identifier();
 			identifiers.append(id);
-			switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-				case DOT:
+			switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+				case DOT:{
 					jj_consume_token(DOT);
 					id = Identifier();
 					identifiers.append(id);
 					break;
+				}
 				default:
-					jj_la1[17] = jj_gen;
-					;
+					jj_la1[17] = jj_gen;;
 			}
-			switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-				case DOT:
+			switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+				case DOT:{
 					jj_consume_token(DOT);
 					id = Identifier();
 					identifiers.append(id);
 					break;
+				}
 				default:
-					jj_la1[18] = jj_gen;
-					;
+					jj_la1[18] = jj_gen;;
 			}
 			{
-				if (true)
+				if ("" != null)
 					return identifiers;
 			}
 			throw new Error("Missing return statement in function");
@@ -1023,16 +1035,17 @@ public class ADQLParser implements ADQLParserConstants {
 		trace_call("ColumnName");
 		try{
 			IdentifierItem id;
-			IdentifierItems table = null, identifiers = new IdentifierItems(false);
+			IdentifierItems table = null,
+					identifiers = new IdentifierItems(false);
 			id = Identifier();
-			switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-				case DOT:
+			switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+				case DOT:{
 					jj_consume_token(DOT);
 					table = TableName();
 					break;
+				}
 				default:
-					jj_la1[19] = jj_gen;
-					;
+					jj_la1[19] = jj_gen;;
 			}
 			identifiers.append(id);
 			if (table != null){
@@ -1040,7 +1053,7 @@ public class ADQLParser implements ADQLParserConstants {
 					identifiers.append(table.get(i));
 			}
 			{
-				if (true)
+				if ("" != null)
 					return identifiers;
 			}
 			throw new Error("Missing return statement in function");
@@ -1056,7 +1069,7 @@ public class ADQLParser implements ADQLParserConstants {
 			identifiers = ColumnName();
 			try{
 				{
-					if (true)
+					if ("" != null)
 						return queryFactory.createColumn(identifiers);
 				}
 			}catch(Exception ex){
@@ -1076,14 +1089,16 @@ public class ADQLParser implements ADQLParserConstants {
 		try{
 			IdentifierItem identifier = null;
 			Token ind = null;
-			switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
+			switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
 				case DELIMITED_IDENTIFIER:
-				case REGULAR_IDENTIFIER:
+				case REGULAR_IDENTIFIER:{
 					identifier = Identifier();
 					break;
-				case UNSIGNED_INTEGER:
+				}
+				case UNSIGNED_INTEGER:{
 					ind = jj_consume_token(UNSIGNED_INTEGER);
 					break;
+				}
 				default:
 					jj_la1[20] = jj_gen;
 					jj_consume_token(-1);
@@ -1096,7 +1111,7 @@ public class ADQLParser implements ADQLParserConstants {
 				else
 					colRef = queryFactory.createColRef(Integer.parseInt(ind.image), new TextPosition(ind));
 				{
-					if (true)
+					if ("" != null)
 						return colRef;
 				}
 			}catch(Exception ex){
@@ -1116,38 +1131,42 @@ public class ADQLParser implements ADQLParserConstants {
 		try{
 			IdentifierItem identifier = null;
 			Token ind = null, desc = null;
-			switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
+			switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
 				case DELIMITED_IDENTIFIER:
-				case REGULAR_IDENTIFIER:
+				case REGULAR_IDENTIFIER:{
 					identifier = Identifier();
 					break;
-				case UNSIGNED_INTEGER:
+				}
+				case UNSIGNED_INTEGER:{
 					ind = jj_consume_token(UNSIGNED_INTEGER);
 					break;
+				}
 				default:
 					jj_la1[21] = jj_gen;
 					jj_consume_token(-1);
 					throw new ParseException();
 			}
-			switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
+			switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
 				case ASC:
-				case DESC:
-					switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-						case ASC:
+				case DESC:{
+					switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+						case ASC:{
 							jj_consume_token(ASC);
 							break;
-						case DESC:
+						}
+						case DESC:{
 							desc = jj_consume_token(DESC);
 							break;
+						}
 						default:
 							jj_la1[22] = jj_gen;
 							jj_consume_token(-1);
 							throw new ParseException();
 					}
 					break;
+				}
 				default:
-					jj_la1[23] = jj_gen;
-					;
+					jj_la1[23] = jj_gen;;
 			}
 			try{
 				ADQLOrder order = null;
@@ -1159,7 +1178,7 @@ public class ADQLParser implements ADQLParserConstants {
 					order.setPosition(new TextPosition(ind));
 				}
 				{
-					if (true)
+					if ("" != null)
 						return order;
 				}
 			}catch(Exception ex){
@@ -1183,27 +1202,27 @@ public class ADQLParser implements ADQLParserConstants {
 			FromContent content = null;
 			Token start, end;
 			try{
-				switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
+				switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
 					case DELIMITED_IDENTIFIER:
-					case REGULAR_IDENTIFIER:
+					case REGULAR_IDENTIFIER:{
 						identifiers = TableName();
-						switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
+						switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
 							case AS:
 							case DELIMITED_IDENTIFIER:
-							case REGULAR_IDENTIFIER:
-								switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-									case AS:
+							case REGULAR_IDENTIFIER:{
+								switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+									case AS:{
 										jj_consume_token(AS);
 										break;
+									}
 									default:
-										jj_la1[24] = jj_gen;
-										;
+										jj_la1[24] = jj_gen;;
 								}
 								alias = Identifier();
 								break;
+							}
 							default:
-								jj_la1[25] = jj_gen;
-								;
+								jj_la1[25] = jj_gen;;
 						}
 						content = queryFactory.createTable(identifiers, alias);
 						if (alias == null)
@@ -1211,21 +1230,22 @@ public class ADQLParser implements ADQLParserConstants {
 						else
 							content.setPosition(new TextPosition(identifiers.get(0).position, alias.position));
 						{
-							if (true)
+							if ("" != null)
 								return content;
 						}
 						break;
+					}
 					default:
 						jj_la1[27] = jj_gen;
 						if (jj_2_2(2)){
 							subQuery = SubQueryExpression();
-							switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-								case AS:
+							switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+								case AS:{
 									jj_consume_token(AS);
 									break;
+								}
 								default:
-									jj_la1[26] = jj_gen;
-									;
+									jj_la1[26] = jj_gen;;
 							}
 							alias = Identifier();
 							content = queryFactory.createTable(subQuery, alias);
@@ -1234,21 +1254,22 @@ public class ADQLParser implements ADQLParserConstants {
 							else
 								content.setPosition(new TextPosition(subQuery.getPosition(), alias.position));
 							{
-								if (true)
+								if ("" != null)
 									return content;
 							}
 						}else{
-							switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-								case LEFT_PAR:
+							switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+								case LEFT_PAR:{
 									start = jj_consume_token(LEFT_PAR);
 									content = JoinedTable();
 									end = jj_consume_token(RIGHT_PAR);
 									content.setPosition(new TextPosition(start, end));
 									{
-										if (true)
+										if ("" != null)
 											return content;
 									}
 									break;
+								}
 								default:
 									jj_la1[28] = jj_gen;
 									jj_consume_token(-1);
@@ -1282,7 +1303,7 @@ public class ADQLParser implements ADQLParserConstants {
 				content = JoinSpecification(content);
 			}
 			{
-				if (true)
+				if ("" != null)
 					return content;
 			}
 			throw new Error("Missing return statement in function");
@@ -1298,22 +1319,23 @@ public class ADQLParser implements ADQLParserConstants {
 			content = SimpleTableRef();
 			label_6: while(true){
 				content = JoinSpecification(content);
-				switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
+				switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
 					case NATURAL:
 					case INNER:
 					case RIGHT:
 					case LEFT:
 					case FULL:
-					case JOIN:
+					case JOIN:{
 						;
 						break;
+					}
 					default:
 						jj_la1[29] = jj_gen;
 						break label_6;
 				}
 			}
 			{
-				if (true)
+				if ("" != null)
 					return content;
 			}
 			throw new Error("Missing return statement in function");
@@ -1334,145 +1356,158 @@ public class ADQLParser implements ADQLParserConstants {
 			ADQLJoin join;
 			Token lastPar;
 			try{
-				switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-					case NATURAL:
+				switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+					case NATURAL:{
 						jj_consume_token(NATURAL);
 						natural = true;
-						switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
+						switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
 							case INNER:
 							case RIGHT:
 							case LEFT:
-							case FULL:
-								switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-									case INNER:
+							case FULL:{
+								switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+									case INNER:{
 										jj_consume_token(INNER);
 										break;
+									}
 									case RIGHT:
 									case LEFT:
-									case FULL:
-										switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-											case LEFT:
+									case FULL:{
+										switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+											case LEFT:{
 												jj_consume_token(LEFT);
 												type = JoinType.OUTER_LEFT;
 												break;
-											case RIGHT:
+											}
+											case RIGHT:{
 												jj_consume_token(RIGHT);
 												type = JoinType.OUTER_RIGHT;
 												break;
-											case FULL:
+											}
+											case FULL:{
 												jj_consume_token(FULL);
 												type = JoinType.OUTER_FULL;
 												break;
+											}
 											default:
 												jj_la1[30] = jj_gen;
 												jj_consume_token(-1);
 												throw new ParseException();
 										}
-										switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-											case OUTER:
+										switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+											case OUTER:{
 												jj_consume_token(OUTER);
 												break;
+											}
 											default:
-												jj_la1[31] = jj_gen;
-												;
+												jj_la1[31] = jj_gen;;
 										}
 										break;
+									}
 									default:
 										jj_la1[32] = jj_gen;
 										jj_consume_token(-1);
 										throw new ParseException();
 								}
 								break;
+							}
 							default:
-								jj_la1[33] = jj_gen;
-								;
+								jj_la1[33] = jj_gen;;
 						}
 						jj_consume_token(JOIN);
 						rightTable = TableRef();
 						join = queryFactory.createJoin(type, leftTable, rightTable);
 						join.setPosition(new TextPosition(leftTable.getPosition(), rightTable.getPosition()));
 						{
-							if (true)
+							if ("" != null)
 								return join;
 						}
 						break;
+					}
 					case INNER:
 					case RIGHT:
 					case LEFT:
 					case FULL:
-					case JOIN:
-						switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
+					case JOIN:{
+						switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
 							case INNER:
 							case RIGHT:
 							case LEFT:
-							case FULL:
-								switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-									case INNER:
+							case FULL:{
+								switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+									case INNER:{
 										jj_consume_token(INNER);
 										break;
+									}
 									case RIGHT:
 									case LEFT:
-									case FULL:
-										switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-											case LEFT:
+									case FULL:{
+										switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+											case LEFT:{
 												jj_consume_token(LEFT);
 												type = JoinType.OUTER_LEFT;
 												break;
-											case RIGHT:
+											}
+											case RIGHT:{
 												jj_consume_token(RIGHT);
 												type = JoinType.OUTER_RIGHT;
 												break;
-											case FULL:
+											}
+											case FULL:{
 												jj_consume_token(FULL);
 												type = JoinType.OUTER_FULL;
 												break;
+											}
 											default:
 												jj_la1[34] = jj_gen;
 												jj_consume_token(-1);
 												throw new ParseException();
 										}
-										switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-											case OUTER:
+										switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+											case OUTER:{
 												jj_consume_token(OUTER);
 												break;
+											}
 											default:
-												jj_la1[35] = jj_gen;
-												;
+												jj_la1[35] = jj_gen;;
 										}
 										break;
+									}
 									default:
 										jj_la1[36] = jj_gen;
 										jj_consume_token(-1);
 										throw new ParseException();
 								}
 								break;
+							}
 							default:
-								jj_la1[37] = jj_gen;
-								;
+								jj_la1[37] = jj_gen;;
 						}
 						jj_consume_token(JOIN);
 						rightTable = TableRef();
-						switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-							case ON:
+						switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+							case ON:{
 								jj_consume_token(ON);
 								ConditionsList(condition);
 								join = queryFactory.createJoin(type, leftTable, rightTable, condition);
 								join.setPosition(new TextPosition(leftTable.getPosition(), condition.getPosition()));
 								{
-									if (true)
+									if ("" != null)
 										return join;
 								}
 								break;
-							case USING:
+							}
+							case USING:{
 								jj_consume_token(USING);
 								jj_consume_token(LEFT_PAR);
 								id = Identifier();
 								lstColumns.add(queryFactory.createColumn(id));
 								label_7: while(true){
-									switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-										case COMMA:
+									switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+										case COMMA:{
 											;
 											break;
+										}
 										default:
 											jj_la1[38] = jj_gen;
 											break label_7;
@@ -1485,16 +1520,18 @@ public class ADQLParser implements ADQLParserConstants {
 								join = queryFactory.createJoin(type, leftTable, rightTable, lstColumns);
 								join.setPosition(new TextPosition(leftTable.getPosition().beginLine, leftTable.getPosition().beginColumn, lastPar.endLine, (lastPar.endColumn < 0) ? -1 : (lastPar.endColumn + 1)));
 								{
-									if (true)
+									if ("" != null)
 										return join;
 								}
 								break;
+							}
 							default:
 								jj_la1[39] = jj_gen;
 								jj_consume_token(-1);
 								throw new ParseException();
 						}
 						break;
+					}
 					default:
 						jj_la1[40] = jj_gen;
 						jj_consume_token(-1);
@@ -1526,10 +1563,11 @@ public class ADQLParser implements ADQLParserConstants {
 				str += t.image.substring(1, t.image.length() - 1).replaceAll("''", "'");
 				if (start == null)
 					start = t;
-				switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-					case STRING_LITERAL:
+				switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+					case STRING_LITERAL:{
 						;
 						break;
+					}
 					default:
 						jj_la1[41] = jj_gen;
 						break label_8;
@@ -1539,7 +1577,7 @@ public class ADQLParser implements ADQLParserConstants {
 				cst = queryFactory.createStringConstant(str);
 				cst.setPosition(new TextPosition(start, t));
 				{
-					if (true)
+					if ("" != null)
 						return cst;
 				}
 			}catch(Exception ex){
@@ -1562,16 +1600,19 @@ public class ADQLParser implements ADQLParserConstants {
 		try{
 			Token t;
 			NumericConstant cst;
-			switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-				case SCIENTIFIC_NUMBER:
+			switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+				case SCIENTIFIC_NUMBER:{
 					t = jj_consume_token(SCIENTIFIC_NUMBER);
 					break;
-				case UNSIGNED_FLOAT:
+				}
+				case UNSIGNED_FLOAT:{
 					t = jj_consume_token(UNSIGNED_FLOAT);
 					break;
-				case UNSIGNED_INTEGER:
+				}
+				case UNSIGNED_INTEGER:{
 					t = jj_consume_token(UNSIGNED_INTEGER);
 					break;
+				}
 				default:
 					jj_la1[42] = jj_gen;
 					jj_consume_token(-1);
@@ -1581,7 +1622,7 @@ public class ADQLParser implements ADQLParserConstants {
 				cst = queryFactory.createNumericConstant(t.image);
 				cst.setPosition(new TextPosition(t));
 				{
-					if (true)
+					if ("" != null)
 						return cst;
 				}
 			}catch(Exception ex){
@@ -1601,13 +1642,15 @@ public class ADQLParser implements ADQLParserConstants {
 		try{
 			Token t;
 			NumericConstant cst;
-			switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-				case UNSIGNED_INTEGER:
+			switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+				case UNSIGNED_INTEGER:{
 					t = jj_consume_token(UNSIGNED_INTEGER);
 					break;
-				case UNSIGNED_FLOAT:
+				}
+				case UNSIGNED_FLOAT:{
 					t = jj_consume_token(UNSIGNED_FLOAT);
 					break;
+				}
 				default:
 					jj_la1[43] = jj_gen;
 					jj_consume_token(-1);
@@ -1617,7 +1660,7 @@ public class ADQLParser implements ADQLParserConstants {
 				cst = queryFactory.createNumericConstant(t.image);
 				cst.setPosition(new TextPosition(t));
 				{
-					if (true)
+					if ("" != null)
 						return cst;
 				}
 			}catch(Exception ex){
@@ -1637,25 +1680,27 @@ public class ADQLParser implements ADQLParserConstants {
 		try{
 			Token sign = null, number;
 			NumericConstant cst;
-			switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
+			switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
 				case PLUS:
-				case MINUS:
-					switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-						case PLUS:
+				case MINUS:{
+					switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+						case PLUS:{
 							sign = jj_consume_token(PLUS);
 							break;
-						case MINUS:
+						}
+						case MINUS:{
 							sign = jj_consume_token(MINUS);
 							break;
+						}
 						default:
 							jj_la1[44] = jj_gen;
 							jj_consume_token(-1);
 							throw new ParseException();
 					}
 					break;
+				}
 				default:
-					jj_la1[45] = jj_gen;
-					;
+					jj_la1[45] = jj_gen;;
 			}
 			number = jj_consume_token(UNSIGNED_INTEGER);
 			try{
@@ -1667,7 +1712,7 @@ public class ADQLParser implements ADQLParserConstants {
 					cst.setPosition(new TextPosition(sign, number));
 				}
 				{
-					if (true)
+					if ("" != null)
 						return cst;
 				}
 			}catch(Exception ex){
@@ -1692,48 +1737,52 @@ public class ADQLParser implements ADQLParserConstants {
 			ADQLOperand op;
 			Token left, right;
 			try{
-				switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
+				switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
 					case SCIENTIFIC_NUMBER:
 					case UNSIGNED_FLOAT:
-					case UNSIGNED_INTEGER:
+					case UNSIGNED_INTEGER:{
 						// unsigned_value_specification
 						op = UnsignedNumeric();
 						{
-							if (true)
+							if ("" != null)
 								return op;
 						}
 						break;
+					}
 					case DELIMITED_IDENTIFIER:
-					case REGULAR_IDENTIFIER:
+					case REGULAR_IDENTIFIER:{
 						column = Column();
 						column.setExpectedType('N');
 						{
-							if (true)
+							if ("" != null)
 								return column;
 						}
 						break;
+					}
 					case AVG:
 					case MAX:
 					case MIN:
 					case SUM:
-					case COUNT:
+					case COUNT:{
 						op = SqlFunction();
 						{
-							if (true)
+							if ("" != null)
 								return op;
 						}
 						break;
-					case LEFT_PAR:
+					}
+					case LEFT_PAR:{
 						left = jj_consume_token(LEFT_PAR);
 						op = NumericExpression();
 						right = jj_consume_token(RIGHT_PAR);
 						WrappedOperand wop = queryFactory.createWrappedOperand(op);
 						wop.setPosition(new TextPosition(left, right));
 						{
-							if (true)
+							if ("" != null)
 								return wop;
 						}
 						break;
+					}
 					default:
 						jj_la1[46] = jj_gen;
 						jj_consume_token(-1);
@@ -1759,35 +1808,38 @@ public class ADQLParser implements ADQLParserConstants {
 			ADQLOperand op;
 			Token left, right;
 			try{
-				switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-					case STRING_LITERAL:
+				switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+					case STRING_LITERAL:{
 						// string
 						expr = String();
 						{
-							if (true)
+							if ("" != null)
 								return expr;
 						}
 						break;
+					}
 					case DELIMITED_IDENTIFIER:
-					case REGULAR_IDENTIFIER:
+					case REGULAR_IDENTIFIER:{
 						column = Column();
 						column.setExpectedType('S');
 						{
-							if (true)
+							if ("" != null)
 								return column;
 						}
 						break;
-					case LEFT_PAR:
+					}
+					case LEFT_PAR:{
 						left = jj_consume_token(LEFT_PAR);
 						op = StringExpression();
 						right = jj_consume_token(RIGHT_PAR);
 						WrappedOperand wop = queryFactory.createWrappedOperand(op);
 						wop.setPosition(new TextPosition(left, right));
 						{
-							if (true)
+							if ("" != null)
 								return wop;
 						}
 						break;
+					}
 					default:
 						jj_la1[47] = jj_gen;
 						jj_consume_token(-1);
@@ -1824,15 +1876,16 @@ public class ADQLParser implements ADQLParserConstants {
 				}else if (jj_2_7(2147483647)){
 					valueExpr = UserDefinedFunction();
 				}else{
-					switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
+					switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
 						case BOX:
 						case CENTROID:
 						case CIRCLE:
 						case POINT:
 						case POLYGON:
-						case REGION:
+						case REGION:{
 							valueExpr = GeometryValueFunction();
 							break;
+						}
 						default:
 							jj_la1[48] = jj_gen;
 							if (jj_2_8(2147483647)){
@@ -1840,7 +1893,7 @@ public class ADQLParser implements ADQLParserConstants {
 							}else if (jj_2_9(2147483647)){
 								valueExpr = StringFactor();
 							}else{
-								switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
+								switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
 									case LEFT_PAR:
 									case PLUS:
 									case MINUS:
@@ -1882,9 +1935,10 @@ public class ADQLParser implements ADQLParserConstants {
 									case REGULAR_IDENTIFIER:
 									case SCIENTIFIC_NUMBER:
 									case UNSIGNED_FLOAT:
-									case UNSIGNED_INTEGER:
+									case UNSIGNED_INTEGER:{
 										valueExpr = Factor();
 										break;
+									}
 									default:
 										jj_la1[49] = jj_gen;
 										jj_consume_token(-1);
@@ -1894,7 +1948,7 @@ public class ADQLParser implements ADQLParserConstants {
 					}
 				}
 				{
-					if (true)
+					if ("" != null)
 						return valueExpr;
 				}
 			}catch(Exception ex){
@@ -1915,16 +1969,18 @@ public class ADQLParser implements ADQLParserConstants {
 			Token sign = null;
 			ADQLOperand leftOp, rightOp = null;
 			leftOp = NumericTerm();
-			switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
+			switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
 				case PLUS:
-				case MINUS:
-					switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-						case PLUS:
+				case MINUS:{
+					switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+						case PLUS:{
 							sign = jj_consume_token(PLUS);
 							break;
-						case MINUS:
+						}
+						case MINUS:{
 							sign = jj_consume_token(MINUS);
 							break;
+						}
 						default:
 							jj_la1[50] = jj_gen;
 							jj_consume_token(-1);
@@ -1932,19 +1988,19 @@ public class ADQLParser implements ADQLParserConstants {
 					}
 					rightOp = NumericExpression();
 					break;
+				}
 				default:
-					jj_la1[51] = jj_gen;
-					;
+					jj_la1[51] = jj_gen;;
 			}
 			if (sign == null){
-				if (true)
+				if ("" != null)
 					return leftOp;
 			}else{
 				try{
 					Operation operation = queryFactory.createOperation(leftOp, OperationType.getOperator(sign.image), rightOp);
 					operation.setPosition(new TextPosition(leftOp.getPosition(), rightOp.getPosition()));
 					{
-						if (true)
+						if ("" != null)
 							return operation;
 					}
 				}catch(Exception ex){
@@ -1966,16 +2022,18 @@ public class ADQLParser implements ADQLParserConstants {
 			Token sign = null;
 			ADQLOperand leftOp, rightOp = null;
 			leftOp = Factor();
-			switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
+			switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
 				case ASTERISK:
-				case DIVIDE:
-					switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-						case ASTERISK:
+				case DIVIDE:{
+					switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+						case ASTERISK:{
 							sign = jj_consume_token(ASTERISK);
 							break;
-						case DIVIDE:
+						}
+						case DIVIDE:{
 							sign = jj_consume_token(DIVIDE);
 							break;
+						}
 						default:
 							jj_la1[52] = jj_gen;
 							jj_consume_token(-1);
@@ -1983,19 +2041,19 @@ public class ADQLParser implements ADQLParserConstants {
 					}
 					rightOp = NumericTerm();
 					break;
+				}
 				default:
-					jj_la1[53] = jj_gen;
-					;
+					jj_la1[53] = jj_gen;;
 			}
 			if (sign == null){
-				if (true)
+				if ("" != null)
 					return leftOp;
 			}else{
 				try{
 					Operation operation = queryFactory.createOperation(leftOp, OperationType.getOperator(sign.image), rightOp);
 					operation.setPosition(new TextPosition(leftOp.getPosition(), rightOp.getPosition()));
 					{
-						if (true)
+						if ("" != null)
 							return operation;
 					}
 				}catch(Exception ex){
@@ -2017,31 +2075,33 @@ public class ADQLParser implements ADQLParserConstants {
 			boolean negative = false;
 			Token minusSign = null;
 			ADQLOperand op;
-			switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
+			switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
 				case PLUS:
-				case MINUS:
-					switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-						case PLUS:
+				case MINUS:{
+					switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+						case PLUS:{
 							jj_consume_token(PLUS);
 							break;
-						case MINUS:
+						}
+						case MINUS:{
 							minusSign = jj_consume_token(MINUS);
 							negative = true;
 							break;
+						}
 						default:
 							jj_la1[54] = jj_gen;
 							jj_consume_token(-1);
 							throw new ParseException();
 					}
 					break;
+				}
 				default:
-					jj_la1[55] = jj_gen;
-					;
+					jj_la1[55] = jj_gen;;
 			}
 			if (jj_2_10(2)){
 				op = NumericFunction();
 			}else{
-				switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
+				switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
 					case LEFT_PAR:
 					case AVG:
 					case MAX:
@@ -2052,9 +2112,10 @@ public class ADQLParser implements ADQLParserConstants {
 					case REGULAR_IDENTIFIER:
 					case SCIENTIFIC_NUMBER:
 					case UNSIGNED_FLOAT:
-					case UNSIGNED_INTEGER:
+					case UNSIGNED_INTEGER:{
 						op = NumericValueExpressionPrimary();
 						break;
+					}
 					default:
 						jj_la1[56] = jj_gen;
 						jj_consume_token(-1);
@@ -2079,7 +2140,7 @@ public class ADQLParser implements ADQLParserConstants {
 			}
 
 			{
-				if (true)
+				if ("" != null)
 					return op;
 			}
 			throw new Error("Missing return statement in function");
@@ -2095,10 +2156,11 @@ public class ADQLParser implements ADQLParserConstants {
 			ADQLOperand rightOp = null;
 			leftOp = StringFactor();
 			label_9: while(true){
-				switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-					case CONCAT:
+				switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+					case CONCAT:{
 						;
 						break;
+					}
 					default:
 						jj_la1[57] = jj_gen;
 						break label_9;
@@ -2124,7 +2186,7 @@ public class ADQLParser implements ADQLParserConstants {
 				concat.setPosition(new TextPosition(concat.get(0).getPosition(), concat.get(concat.size() - 1).getPosition()));
 			}
 			{
-				if (true)
+				if ("" != null)
 					return leftOp;
 			}
 			throw new Error("Missing return statement in function");
@@ -2137,23 +2199,25 @@ public class ADQLParser implements ADQLParserConstants {
 		trace_call("StringFactor");
 		try{
 			ADQLOperand op;
-			switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-				case COORDSYS:
+			switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+				case COORDSYS:{
 					op = ExtractCoordSys();
 					break;
+				}
 				default:
 					jj_la1[58] = jj_gen;
 					if (jj_2_11(2)){
 						op = UserDefinedFunction();
 						((UserDefinedFunction)op).setExpectedType('S');
 					}else{
-						switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
+						switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
 							case LEFT_PAR:
 							case STRING_LITERAL:
 							case DELIMITED_IDENTIFIER:
-							case REGULAR_IDENTIFIER:
+							case REGULAR_IDENTIFIER:{
 								op = StringValueExpressionPrimary();
 								break;
+							}
 							default:
 								jj_la1[59] = jj_gen;
 								jj_consume_token(-1);
@@ -2162,7 +2226,7 @@ public class ADQLParser implements ADQLParserConstants {
 					}
 			}
 			{
-				if (true)
+				if ("" != null)
 					return op;
 			}
 			throw new Error("Missing return statement in function");
@@ -2176,19 +2240,21 @@ public class ADQLParser implements ADQLParserConstants {
 		try{
 			ADQLColumn col = null;
 			GeometryFunction gf = null;
-			switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
+			switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
 				case DELIMITED_IDENTIFIER:
-				case REGULAR_IDENTIFIER:
+				case REGULAR_IDENTIFIER:{
 					col = Column();
 					break;
+				}
 				case BOX:
 				case CENTROID:
 				case CIRCLE:
 				case POINT:
 				case POLYGON:
-				case REGION:
+				case REGION:{
 					gf = GeometryValueFunction();
 					break;
+				}
 				default:
 					jj_la1[60] = jj_gen;
 					jj_consume_token(-1);
@@ -2197,11 +2263,11 @@ public class ADQLParser implements ADQLParserConstants {
 			if (col != null){
 				col.setExpectedType('G');
 				{
-					if (true)
+					if ("" != null)
 						return new GeometryValue<GeometryFunction>(col);
 				}
 			}else{
-				if (true)
+				if ("" != null)
 					return new GeometryValue<GeometryFunction>(gf);
 			}
 			throw new Error("Missing return statement in function");
@@ -2220,14 +2286,14 @@ public class ADQLParser implements ADQLParserConstants {
 			Token op = null;
 			boolean notOp = false;
 			try{
-				switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-					case NOT:
+				switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+					case NOT:{
 						op = jj_consume_token(NOT);
 						notOp = true;
 						break;
+					}
 					default:
-						jj_la1[61] = jj_gen;
-						;
+						jj_la1[61] = jj_gen;;
 				}
 				constraint = Constraint();
 				if (notOp){
@@ -2242,35 +2308,38 @@ public class ADQLParser implements ADQLParserConstants {
 				else
 					clause.add(constraint);
 				label_10: while(true){
-					switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
+					switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
 						case AND:
-						case OR:
+						case OR:{
 							;
 							break;
+						}
 						default:
 							jj_la1[62] = jj_gen;
 							break label_10;
 					}
-					switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-						case AND:
+					switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+						case AND:{
 							op = jj_consume_token(AND);
 							break;
-						case OR:
+						}
+						case OR:{
 							op = jj_consume_token(OR);
 							break;
+						}
 						default:
 							jj_la1[63] = jj_gen;
 							jj_consume_token(-1);
 							throw new ParseException();
 					}
-					switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-						case NOT:
+					switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+						case NOT:{
 							jj_consume_token(NOT);
 							notOp = true;
 							break;
+						}
 						default:
-							jj_la1[64] = jj_gen;
-							;
+							jj_la1[64] = jj_gen;;
 					}
 					constraint = Constraint();
 					if (notOp){
@@ -2297,7 +2366,7 @@ public class ADQLParser implements ADQLParserConstants {
 				clause.setPosition(new TextPosition(start, end));
 			}
 			{
-				if (true)
+				if ("" != null)
 					return clause;
 			}
 			throw new Error("Missing return statement in function");
@@ -2314,8 +2383,8 @@ public class ADQLParser implements ADQLParserConstants {
 			if (jj_2_12(2147483647)){
 				constraint = Predicate();
 			}else{
-				switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-					case LEFT_PAR:
+				switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+					case LEFT_PAR:{
 						start = jj_consume_token(LEFT_PAR);
 						try{
 							constraint = queryFactory.createGroupOfConstraints();
@@ -2329,6 +2398,7 @@ public class ADQLParser implements ADQLParserConstants {
 						end = jj_consume_token(RIGHT_PAR);
 						((ConstraintsGroup)constraint).setPosition(new TextPosition(start, end));
 						break;
+					}
 					default:
 						jj_la1[65] = jj_gen;
 						jj_consume_token(-1);
@@ -2336,7 +2406,7 @@ public class ADQLParser implements ADQLParserConstants {
 				}
 			}
 			{
-				if (true)
+				if ("" != null)
 					return constraint;
 			}
 			throw new Error("Missing return statement in function");
@@ -2355,57 +2425,58 @@ public class ADQLParser implements ADQLParserConstants {
 			Token start, notToken = null, end;
 			ADQLConstraint constraint = null;
 			try{
-				switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-					case EXISTS:
+				switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+					case EXISTS:{
 						start = jj_consume_token(EXISTS);
 						q = SubQueryExpression();
 						Exists e = queryFactory.createExists(q);
 						e.setPosition(new TextPosition(start.beginLine, start.beginColumn, q.getPosition().endLine, q.getPosition().endColumn));
 						{
-							if (true)
+							if ("" != null)
 								return e;
 						}
 						break;
+					}
 					default:
 						jj_la1[70] = jj_gen;
 						if (jj_2_14(2147483647)){
 							column = Column();
 							jj_consume_token(IS);
-							switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-								case NOT:
+							switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+								case NOT:{
 									notToken = jj_consume_token(NOT);
 									break;
+								}
 								default:
-									jj_la1[66] = jj_gen;
-									;
+									jj_la1[66] = jj_gen;;
 							}
 							end = jj_consume_token(NULL);
 							IsNull in = queryFactory.createIsNull((notToken != null), column);
 							in.setPosition(new TextPosition(column.getPosition().beginLine, column.getPosition().beginColumn, end.endLine, (end.endColumn < 0) ? -1 : (end.endColumn + 1)));
 							{
-								if (true)
+								if ("" != null)
 									return in;
 							}
 						}else if (jj_2_15(2147483647)){
 							strExpr1 = StringExpression();
-							switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-								case NOT:
+							switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+								case NOT:{
 									notToken = jj_consume_token(NOT);
 									break;
+								}
 								default:
-									jj_la1[67] = jj_gen;
-									;
+									jj_la1[67] = jj_gen;;
 							}
 							jj_consume_token(LIKE);
 							strExpr2 = StringExpression();
 							Comparison comp = queryFactory.createComparison(strExpr1, (notToken == null) ? ComparisonOperator.LIKE : ComparisonOperator.NOTLIKE, strExpr2);
 							comp.setPosition(new TextPosition(strExpr1.getPosition(), strExpr2.getPosition()));
 							{
-								if (true)
+								if ("" != null)
 									return comp;
 							}
 						}else{
-							switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
+							switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
 								case LEFT_PAR:
 								case PLUS:
 								case MINUS:
@@ -2455,27 +2526,29 @@ public class ADQLParser implements ADQLParserConstants {
 								case REGULAR_IDENTIFIER:
 								case SCIENTIFIC_NUMBER:
 								case UNSIGNED_FLOAT:
-								case UNSIGNED_INTEGER:
+								case UNSIGNED_INTEGER:{
 									op = ValueExpression();
-									switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
+									switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
 										case EQUAL:
 										case NOT_EQUAL:
 										case LESS_THAN:
 										case LESS_EQUAL_THAN:
 										case GREATER_THAN:
-										case GREATER_EQUAL_THAN:
+										case GREATER_EQUAL_THAN:{
 											constraint = ComparisonEnd(op);
 											break;
+										}
 										default:
 											jj_la1[68] = jj_gen;
 											if (jj_2_13(2)){
 												constraint = BetweenEnd(op);
 											}else{
-												switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
+												switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
 													case NOT:
-													case IN:
+													case IN:{
 														constraint = InEnd(op);
 														break;
+													}
 													default:
 														jj_la1[69] = jj_gen;
 														jj_consume_token(-1);
@@ -2484,6 +2557,7 @@ public class ADQLParser implements ADQLParserConstants {
 											}
 									}
 									break;
+								}
 								default:
 									jj_la1[71] = jj_gen;
 									jj_consume_token(-1);
@@ -2498,7 +2572,7 @@ public class ADQLParser implements ADQLParserConstants {
 				}
 			}
 			{
-				if (true)
+				if ("" != null)
 					return constraint;
 			}
 			throw new Error("Missing return statement in function");
@@ -2512,25 +2586,31 @@ public class ADQLParser implements ADQLParserConstants {
 		try{
 			Token comp;
 			ADQLOperand rightOp;
-			switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-				case EQUAL:
+			switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+				case EQUAL:{
 					comp = jj_consume_token(EQUAL);
 					break;
-				case NOT_EQUAL:
+				}
+				case NOT_EQUAL:{
 					comp = jj_consume_token(NOT_EQUAL);
 					break;
-				case LESS_THAN:
+				}
+				case LESS_THAN:{
 					comp = jj_consume_token(LESS_THAN);
 					break;
-				case LESS_EQUAL_THAN:
+				}
+				case LESS_EQUAL_THAN:{
 					comp = jj_consume_token(LESS_EQUAL_THAN);
 					break;
-				case GREATER_THAN:
+				}
+				case GREATER_THAN:{
 					comp = jj_consume_token(GREATER_THAN);
 					break;
-				case GREATER_EQUAL_THAN:
+				}
+				case GREATER_EQUAL_THAN:{
 					comp = jj_consume_token(GREATER_EQUAL_THAN);
 					break;
+				}
 				default:
 					jj_la1[72] = jj_gen;
 					jj_consume_token(-1);
@@ -2541,7 +2621,7 @@ public class ADQLParser implements ADQLParserConstants {
 				Comparison comparison = queryFactory.createComparison(leftOp, ComparisonOperator.getOperator(comp.image), rightOp);
 				comparison.setPosition(new TextPosition(leftOp.getPosition(), rightOp.getPosition()));
 				{
-					if (true)
+					if ("" != null)
 						return comparison;
 				}
 			}catch(Exception ex){
@@ -2561,13 +2641,13 @@ public class ADQLParser implements ADQLParserConstants {
 		try{
 			Token start, notToken = null;
 			ADQLOperand min, max;
-			switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-				case NOT:
+			switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+				case NOT:{
 					notToken = jj_consume_token(NOT);
 					break;
+				}
 				default:
-					jj_la1[73] = jj_gen;
-					;
+					jj_la1[73] = jj_gen;;
 			}
 			start = jj_consume_token(BETWEEN);
 			min = ValueExpression();
@@ -2579,7 +2659,7 @@ public class ADQLParser implements ADQLParserConstants {
 					start = notToken;
 				bet.setPosition(new TextPosition(start.beginLine, start.beginColumn, max.getPosition().endLine, max.getPosition().endColumn));
 				{
-					if (true)
+					if ("" != null)
 						return bet;
 				}
 			}catch(Exception ex){
@@ -2601,28 +2681,29 @@ public class ADQLParser implements ADQLParserConstants {
 			ADQLQuery q = null;
 			ADQLOperand item;
 			Vector<ADQLOperand> items = new Vector<ADQLOperand>();
-			switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-				case NOT:
+			switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+				case NOT:{
 					not = jj_consume_token(NOT);
 					break;
+				}
 				default:
-					jj_la1[74] = jj_gen;
-					;
+					jj_la1[74] = jj_gen;;
 			}
 			start = jj_consume_token(IN);
 			if (jj_2_16(2)){
 				q = SubQueryExpression();
 			}else{
-				switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-					case LEFT_PAR:
+				switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+					case LEFT_PAR:{
 						jj_consume_token(LEFT_PAR);
 						item = ValueExpression();
 						items.add(item);
 						label_11: while(true){
-							switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-								case COMMA:
+							switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+								case COMMA:{
 									;
 									break;
+								}
 								default:
 									jj_la1[75] = jj_gen;
 									break label_11;
@@ -2633,6 +2714,7 @@ public class ADQLParser implements ADQLParserConstants {
 						}
 						jj_consume_token(RIGHT_PAR);
 						break;
+					}
 					default:
 						jj_la1[76] = jj_gen;
 						jj_consume_token(-1);
@@ -2654,7 +2736,7 @@ public class ADQLParser implements ADQLParserConstants {
 					in.setPosition(new TextPosition(start.beginLine, start.beginColumn, list[list.length - 1].getPosition().endLine, list[list.length - 1].getPosition().endColumn));
 				}
 				{
-					if (true)
+					if ("" != null)
 						return in;
 				}
 			}catch(Exception ex){
@@ -2679,22 +2761,23 @@ public class ADQLParser implements ADQLParserConstants {
 			ADQLOperand op = null;
 			SQLFunction funct = null;
 			try{
-				switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-					case COUNT:
+				switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+					case COUNT:{
 						fct = jj_consume_token(COUNT);
 						jj_consume_token(LEFT_PAR);
-						switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-							case QUANTIFIER:
+						switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+							case QUANTIFIER:{
 								distinct = jj_consume_token(QUANTIFIER);
 								break;
+							}
 							default:
-								jj_la1[77] = jj_gen;
-								;
+								jj_la1[77] = jj_gen;;
 						}
-						switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-							case ASTERISK:
+						switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+							case ASTERISK:{
 								all = jj_consume_token(ASTERISK);
 								break;
+							}
 							case LEFT_PAR:
 							case PLUS:
 							case MINUS:
@@ -2744,9 +2827,10 @@ public class ADQLParser implements ADQLParserConstants {
 							case REGULAR_IDENTIFIER:
 							case SCIENTIFIC_NUMBER:
 							case UNSIGNED_FLOAT:
-							case UNSIGNED_INTEGER:
+							case UNSIGNED_INTEGER:{
 								op = ValueExpression();
 								break;
+							}
 							default:
 								jj_la1[78] = jj_gen;
 								jj_consume_token(-1);
@@ -2756,42 +2840,48 @@ public class ADQLParser implements ADQLParserConstants {
 						funct = queryFactory.createSQLFunction((all != null) ? SQLFunctionType.COUNT_ALL : SQLFunctionType.COUNT, op, distinct != null && distinct.image.equalsIgnoreCase("distinct"));
 						funct.setPosition(new TextPosition(fct, end));
 						break;
+					}
 					case AVG:
 					case MAX:
 					case MIN:
-					case SUM:
-						switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-							case AVG:
+					case SUM:{
+						switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+							case AVG:{
 								fct = jj_consume_token(AVG);
 								break;
-							case MAX:
+							}
+							case MAX:{
 								fct = jj_consume_token(MAX);
 								break;
-							case MIN:
+							}
+							case MIN:{
 								fct = jj_consume_token(MIN);
 								break;
-							case SUM:
+							}
+							case SUM:{
 								fct = jj_consume_token(SUM);
 								break;
+							}
 							default:
 								jj_la1[79] = jj_gen;
 								jj_consume_token(-1);
 								throw new ParseException();
 						}
 						jj_consume_token(LEFT_PAR);
-						switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-							case QUANTIFIER:
+						switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+							case QUANTIFIER:{
 								distinct = jj_consume_token(QUANTIFIER);
 								break;
+							}
 							default:
-								jj_la1[80] = jj_gen;
-								;
+								jj_la1[80] = jj_gen;;
 						}
 						op = ValueExpression();
 						end = jj_consume_token(RIGHT_PAR);
 						funct = queryFactory.createSQLFunction(SQLFunctionType.valueOf(fct.image.toUpperCase()), op, distinct != null && distinct.image.equalsIgnoreCase("distinct"));
 						funct.setPosition(new TextPosition(fct, end));
 						break;
+					}
 					default:
 						jj_la1[81] = jj_gen;
 						jj_consume_token(-1);
@@ -2804,7 +2894,7 @@ public class ADQLParser implements ADQLParserConstants {
 				}
 			}
 			{
-				if (true)
+				if ("" != null)
 					return funct;
 			}
 			throw new Error("Missing return statement in function");
@@ -2824,7 +2914,7 @@ public class ADQLParser implements ADQLParserConstants {
 			jj_consume_token(COMMA);
 			ops[1] = NumericExpression();
 			{
-				if (true)
+				if ("" != null)
 					return ops;
 			}
 			throw new Error("Missing return statement in function");
@@ -2843,16 +2933,18 @@ public class ADQLParser implements ADQLParserConstants {
 			PointFunction p1 = null, p2 = null;
 			ADQLColumn col1 = null, col2 = null;
 			try{
-				switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
+				switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
 					case CONTAINS:
-					case INTERSECTS:
-						switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-							case CONTAINS:
+					case INTERSECTS:{
+						switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+							case CONTAINS:{
 								fct = jj_consume_token(CONTAINS);
 								break;
-							case INTERSECTS:
+							}
+							case INTERSECTS:{
 								fct = jj_consume_token(INTERSECTS);
 								break;
+							}
 							default:
 								jj_la1[82] = jj_gen;
 								jj_consume_token(-1);
@@ -2868,27 +2960,31 @@ public class ADQLParser implements ADQLParserConstants {
 						else
 							gf = queryFactory.createIntersects(gvf1, gvf2);
 						break;
-					case AREA:
+					}
+					case AREA:{
 						fct = jj_consume_token(AREA);
 						jj_consume_token(LEFT_PAR);
 						gvf1 = GeometryExpression();
 						end = jj_consume_token(RIGHT_PAR);
 						gf = queryFactory.createArea(gvf1);
 						break;
-					case COORD1:
+					}
+					case COORD1:{
 						fct = jj_consume_token(COORD1);
 						jj_consume_token(LEFT_PAR);
-						switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-							case POINT:
+						switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+							case POINT:{
 								p1 = Point();
 								gf = queryFactory.createCoord1(p1);
 								break;
+							}
 							case DELIMITED_IDENTIFIER:
-							case REGULAR_IDENTIFIER:
+							case REGULAR_IDENTIFIER:{
 								col1 = Column();
 								col1.setExpectedType('G');
 								gf = queryFactory.createCoord1(col1);
 								break;
+							}
 							default:
 								jj_la1[83] = jj_gen;
 								jj_consume_token(-1);
@@ -2896,20 +2992,23 @@ public class ADQLParser implements ADQLParserConstants {
 						}
 						end = jj_consume_token(RIGHT_PAR);
 						break;
-					case COORD2:
+					}
+					case COORD2:{
 						fct = jj_consume_token(COORD2);
 						jj_consume_token(LEFT_PAR);
-						switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-							case POINT:
+						switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+							case POINT:{
 								p1 = Point();
 								gf = queryFactory.createCoord2(p1);
 								break;
+							}
 							case DELIMITED_IDENTIFIER:
-							case REGULAR_IDENTIFIER:
+							case REGULAR_IDENTIFIER:{
 								col1 = Column();
 								col1.setExpectedType('G');
 								gf = queryFactory.createCoord2(col1);
 								break;
+							}
 							default:
 								jj_la1[84] = jj_gen;
 								jj_consume_token(-1);
@@ -2917,17 +3016,20 @@ public class ADQLParser implements ADQLParserConstants {
 						}
 						end = jj_consume_token(RIGHT_PAR);
 						break;
-					case DISTANCE:
+					}
+					case DISTANCE:{
 						fct = jj_consume_token(DISTANCE);
 						jj_consume_token(LEFT_PAR);
-						switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-							case POINT:
+						switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+							case POINT:{
 								p1 = Point();
 								break;
+							}
 							case DELIMITED_IDENTIFIER:
-							case REGULAR_IDENTIFIER:
+							case REGULAR_IDENTIFIER:{
 								col1 = Column();
 								break;
+							}
 							default:
 								jj_la1[85] = jj_gen;
 								jj_consume_token(-1);
@@ -2940,14 +3042,16 @@ public class ADQLParser implements ADQLParserConstants {
 							gvp1 = new GeometryValue<PointFunction>(col1);
 						}
 						jj_consume_token(COMMA);
-						switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-							case POINT:
+						switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+							case POINT:{
 								p2 = Point();
 								break;
+							}
 							case DELIMITED_IDENTIFIER:
-							case REGULAR_IDENTIFIER:
+							case REGULAR_IDENTIFIER:{
 								col2 = Column();
 								break;
+							}
 							default:
 								jj_la1[86] = jj_gen;
 								jj_consume_token(-1);
@@ -2962,6 +3066,7 @@ public class ADQLParser implements ADQLParserConstants {
 						end = jj_consume_token(RIGHT_PAR);
 						gf = queryFactory.createDistance(gvp1, gvp2);
 						break;
+					}
 					default:
 						jj_la1[87] = jj_gen;
 						jj_consume_token(-1);
@@ -2975,7 +3080,7 @@ public class ADQLParser implements ADQLParserConstants {
 			}
 			gf.setPosition(new TextPosition(fct, end));
 			{
-				if (true)
+				if ("" != null)
 					return gf;
 			}
 			throw new Error("Missing return statement in function");
@@ -2990,7 +3095,7 @@ public class ADQLParser implements ADQLParserConstants {
 			ADQLOperand coordSys = null;
 			coordSys = StringExpression();
 			{
-				if (true)
+				if ("" != null)
 					return coordSys;
 			}
 			throw new Error("Missing return statement in function");
@@ -3011,8 +3116,8 @@ public class ADQLParser implements ADQLParserConstants {
 			GeometryValue<GeometryFunction> gvf = null;
 			GeometryFunction gf = null;
 			try{
-				switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-					case BOX:
+				switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+					case BOX:{
 						fct = jj_consume_token(BOX);
 						jj_consume_token(LEFT_PAR);
 						coordSys = CoordinateSystem();
@@ -3025,14 +3130,16 @@ public class ADQLParser implements ADQLParserConstants {
 						end = jj_consume_token(RIGHT_PAR);
 						gf = queryFactory.createBox(coordSys, coords[0], coords[1], width, height);
 						break;
-					case CENTROID:
+					}
+					case CENTROID:{
 						fct = jj_consume_token(CENTROID);
 						jj_consume_token(LEFT_PAR);
 						gvf = GeometryExpression();
 						end = jj_consume_token(RIGHT_PAR);
 						gf = queryFactory.createCentroid(gvf);
 						break;
-					case CIRCLE:
+					}
+					case CIRCLE:{
 						fct = jj_consume_token(CIRCLE);
 						jj_consume_token(LEFT_PAR);
 						coordSys = CoordinateSystem();
@@ -3043,10 +3150,12 @@ public class ADQLParser implements ADQLParserConstants {
 						end = jj_consume_token(RIGHT_PAR);
 						gf = queryFactory.createCircle(coordSys, coords[0], coords[1], width);
 						break;
-					case POINT:
+					}
+					case POINT:{
 						gf = Point();
 						break;
-					case POLYGON:
+					}
+					case POLYGON:{
 						fct = jj_consume_token(POLYGON);
 						jj_consume_token(LEFT_PAR);
 						coordSys = CoordinateSystem();
@@ -3064,10 +3173,11 @@ public class ADQLParser implements ADQLParserConstants {
 						vCoords.add(tmp[0]);
 						vCoords.add(tmp[1]);
 						label_12: while(true){
-							switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-								case COMMA:
+							switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+								case COMMA:{
 									;
 									break;
+								}
 								default:
 									jj_la1[88] = jj_gen;
 									break label_12;
@@ -3080,13 +3190,15 @@ public class ADQLParser implements ADQLParserConstants {
 						end = jj_consume_token(RIGHT_PAR);
 						gf = queryFactory.createPolygon(coordSys, vCoords);
 						break;
-					case REGION:
+					}
+					case REGION:{
 						fct = jj_consume_token(REGION);
 						jj_consume_token(LEFT_PAR);
 						op = StringExpression();
 						end = jj_consume_token(RIGHT_PAR);
 						gf = queryFactory.createRegion(op);
 						break;
+					}
 					default:
 						jj_la1[89] = jj_gen;
 						jj_consume_token(-1);
@@ -3101,7 +3213,7 @@ public class ADQLParser implements ADQLParserConstants {
 			if (fct != null && end != null) // = !(gf instanceof Point)
 				gf.setPosition(new TextPosition(fct, end));
 			{
-				if (true)
+				if ("" != null)
 					return gf;
 			}
 			throw new Error("Missing return statement in function");
@@ -3126,7 +3238,7 @@ public class ADQLParser implements ADQLParserConstants {
 				PointFunction pf = queryFactory.createPoint(coordSys, coords[0], coords[1]);
 				pf.setPosition(new TextPosition(start, end));
 				{
-					if (true)
+					if ("" != null)
 						return pf;
 				}
 			}catch(Exception ex){
@@ -3154,7 +3266,7 @@ public class ADQLParser implements ADQLParserConstants {
 				GeometryFunction gf = queryFactory.createExtractCoordSys(gvf);
 				gf.setPosition(new TextPosition(start, end));
 				{
-					if (true)
+					if ("" != null)
 						return gf;
 				}
 			}catch(Exception ex){
@@ -3176,7 +3288,7 @@ public class ADQLParser implements ADQLParserConstants {
 		trace_call("NumericFunction");
 		try{
 			ADQLFunction fct;
-			switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
+			switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
 				case ABS:
 				case CEILING:
 				case DEGREES:
@@ -3191,9 +3303,10 @@ public class ADQLParser implements ADQLParserConstants {
 				case RAND:
 				case ROUND:
 				case SQRT:
-				case TRUNCATE:
+				case TRUNCATE:{
 					fct = MathFunction();
 					break;
+				}
 				case ACOS:
 				case ASIN:
 				case ATAN:
@@ -3201,28 +3314,31 @@ public class ADQLParser implements ADQLParserConstants {
 				case COS:
 				case COT:
 				case SIN:
-				case TAN:
+				case TAN:{
 					fct = TrigFunction();
 					break;
+				}
 				case CONTAINS:
 				case INTERSECTS:
 				case AREA:
 				case COORD1:
 				case COORD2:
-				case DISTANCE:
+				case DISTANCE:{
 					fct = GeometryFunction();
 					break;
-				case REGULAR_IDENTIFIER:
+				}
+				case REGULAR_IDENTIFIER:{
 					fct = UserDefinedFunction();
 					((UserDefinedFunction)fct).setExpectedType('N');
 					break;
+				}
 				default:
 					jj_la1[90] = jj_gen;
 					jj_consume_token(-1);
 					throw new ParseException();
 			}
 			{
-				if (true)
+				if ("" != null)
 					return fct;
 			}
 			throw new Error("Missing return statement in function");
@@ -3238,50 +3354,57 @@ public class ADQLParser implements ADQLParserConstants {
 			ADQLOperand param1 = null, param2 = null;
 			NumericConstant integerValue = null;
 			try{
-				switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-					case ABS:
+				switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+					case ABS:{
 						fct = jj_consume_token(ABS);
 						jj_consume_token(LEFT_PAR);
 						param1 = NumericExpression();
 						end = jj_consume_token(RIGHT_PAR);
 						break;
-					case CEILING:
+					}
+					case CEILING:{
 						fct = jj_consume_token(CEILING);
 						jj_consume_token(LEFT_PAR);
 						param1 = NumericExpression();
 						end = jj_consume_token(RIGHT_PAR);
 						break;
-					case DEGREES:
+					}
+					case DEGREES:{
 						fct = jj_consume_token(DEGREES);
 						jj_consume_token(LEFT_PAR);
 						param1 = NumericExpression();
 						end = jj_consume_token(RIGHT_PAR);
 						break;
-					case EXP:
+					}
+					case EXP:{
 						fct = jj_consume_token(EXP);
 						jj_consume_token(LEFT_PAR);
 						param1 = NumericExpression();
 						end = jj_consume_token(RIGHT_PAR);
 						break;
-					case FLOOR:
+					}
+					case FLOOR:{
 						fct = jj_consume_token(FLOOR);
 						jj_consume_token(LEFT_PAR);
 						param1 = NumericExpression();
 						end = jj_consume_token(RIGHT_PAR);
 						break;
-					case LOG:
+					}
+					case LOG:{
 						fct = jj_consume_token(LOG);
 						jj_consume_token(LEFT_PAR);
 						param1 = NumericExpression();
 						end = jj_consume_token(RIGHT_PAR);
 						break;
-					case LOG10:
+					}
+					case LOG10:{
 						fct = jj_consume_token(LOG10);
 						jj_consume_token(LEFT_PAR);
 						param1 = NumericExpression();
 						end = jj_consume_token(RIGHT_PAR);
 						break;
-					case MOD:
+					}
+					case MOD:{
 						fct = jj_consume_token(MOD);
 						jj_consume_token(LEFT_PAR);
 						param1 = NumericExpression();
@@ -3289,12 +3412,14 @@ public class ADQLParser implements ADQLParserConstants {
 						param2 = NumericExpression();
 						end = jj_consume_token(RIGHT_PAR);
 						break;
-					case PI:
+					}
+					case PI:{
 						fct = jj_consume_token(PI);
 						jj_consume_token(LEFT_PAR);
 						end = jj_consume_token(RIGHT_PAR);
 						break;
-					case POWER:
+					}
+					case POWER:{
 						fct = jj_consume_token(POWER);
 						jj_consume_token(LEFT_PAR);
 						param1 = NumericExpression();
@@ -3302,16 +3427,18 @@ public class ADQLParser implements ADQLParserConstants {
 						param2 = NumericExpression();
 						end = jj_consume_token(RIGHT_PAR);
 						break;
-					case RADIANS:
+					}
+					case RADIANS:{
 						fct = jj_consume_token(RADIANS);
 						jj_consume_token(LEFT_PAR);
 						param1 = NumericExpression();
 						end = jj_consume_token(RIGHT_PAR);
 						break;
-					case RAND:
+					}
+					case RAND:{
 						fct = jj_consume_token(RAND);
 						jj_consume_token(LEFT_PAR);
-						switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
+						switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
 							case LEFT_PAR:
 							case PLUS:
 							case MINUS:
@@ -3353,66 +3480,65 @@ public class ADQLParser implements ADQLParserConstants {
 							case REGULAR_IDENTIFIER:
 							case SCIENTIFIC_NUMBER:
 							case UNSIGNED_FLOAT:
-							case UNSIGNED_INTEGER:
+							case UNSIGNED_INTEGER:{
 								param1 = NumericExpression();
 								break;
+							}
 							default:
-								jj_la1[91] = jj_gen;
-								;
+								jj_la1[91] = jj_gen;;
 						}
 						end = jj_consume_token(RIGHT_PAR);
 						break;
-					case ROUND:
+					}
+					case ROUND:{
 						fct = jj_consume_token(ROUND);
 						jj_consume_token(LEFT_PAR);
 						param1 = NumericExpression();
-						switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-							case COMMA:
+						switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+							case COMMA:{
 								jj_consume_token(COMMA);
 								param2 = SignedInteger();
 								break;
+							}
 							default:
-								jj_la1[92] = jj_gen;
-								;
+								jj_la1[92] = jj_gen;;
 						}
 						end = jj_consume_token(RIGHT_PAR);
 						break;
-					case SQRT:
+					}
+					case SQRT:{
 						fct = jj_consume_token(SQRT);
 						jj_consume_token(LEFT_PAR);
 						param1 = NumericExpression();
 						end = jj_consume_token(RIGHT_PAR);
 						break;
-					case TRUNCATE:
+					}
+					case TRUNCATE:{
 						fct = jj_consume_token(TRUNCATE);
 						jj_consume_token(LEFT_PAR);
 						param1 = NumericExpression();
-						switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-							case COMMA:
+						switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+							case COMMA:{
 								jj_consume_token(COMMA);
 								param2 = SignedInteger();
 								break;
+							}
 							default:
-								jj_la1[93] = jj_gen;
-								;
+								jj_la1[93] = jj_gen;;
 						}
 						end = jj_consume_token(RIGHT_PAR);
 						break;
+					}
 					default:
 						jj_la1[94] = jj_gen;
 						jj_consume_token(-1);
 						throw new ParseException();
 				}
-				if (param1 != null){
-					MathFunction mf = queryFactory.createMathFunction(MathFunctionType.valueOf(fct.image.toUpperCase()), param1, param2);
-					mf.setPosition(new TextPosition(fct, end));
-					{
-						if (true)
-							return mf;
-					}
-				}else{
-					if (true)
-						return null;
+				MathFunction mf = queryFactory.createMathFunction(MathFunctionType.valueOf(fct.image.toUpperCase()), param1, param2);
+				mf.setPosition(new TextPosition(fct, end));
+				{
+					if ("" != null)
+						return mf;
 				}
 			}catch(Exception ex){
 				{
@@ -3431,26 +3557,29 @@ public class ADQLParser implements ADQLParserConstants {
 		try{
 			Token fct = null, end;
 			ADQLOperand param1 = null, param2 = null;
-			switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-				case ACOS:
+			switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+				case ACOS:{
 					fct = jj_consume_token(ACOS);
 					jj_consume_token(LEFT_PAR);
 					param1 = NumericExpression();
 					end = jj_consume_token(RIGHT_PAR);
 					break;
-				case ASIN:
+				}
+				case ASIN:{
 					fct = jj_consume_token(ASIN);
 					jj_consume_token(LEFT_PAR);
 					param1 = NumericExpression();
 					end = jj_consume_token(RIGHT_PAR);
 					break;
-				case ATAN:
+				}
+				case ATAN:{
 					fct = jj_consume_token(ATAN);
 					jj_consume_token(LEFT_PAR);
 					param1 = NumericExpression();
 					end = jj_consume_token(RIGHT_PAR);
 					break;
-				case ATAN2:
+				}
+				case ATAN2:{
 					fct = jj_consume_token(ATAN2);
 					jj_consume_token(LEFT_PAR);
 					param1 = NumericExpression();
@@ -3458,46 +3587,46 @@ public class ADQLParser implements ADQLParserConstants {
 					param2 = NumericExpression();
 					end = jj_consume_token(RIGHT_PAR);
 					break;
-				case COS:
+				}
+				case COS:{
 					fct = jj_consume_token(COS);
 					jj_consume_token(LEFT_PAR);
 					param1 = NumericExpression();
 					end = jj_consume_token(RIGHT_PAR);
 					break;
-				case COT:
+				}
+				case COT:{
 					fct = jj_consume_token(COT);
 					jj_consume_token(LEFT_PAR);
 					param1 = NumericExpression();
 					end = jj_consume_token(RIGHT_PAR);
 					break;
-				case SIN:
+				}
+				case SIN:{
 					fct = jj_consume_token(SIN);
 					jj_consume_token(LEFT_PAR);
 					param1 = NumericExpression();
 					end = jj_consume_token(RIGHT_PAR);
 					break;
-				case TAN:
+				}
+				case TAN:{
 					fct = jj_consume_token(TAN);
 					jj_consume_token(LEFT_PAR);
 					param1 = NumericExpression();
 					end = jj_consume_token(RIGHT_PAR);
 					break;
+				}
 				default:
 					jj_la1[95] = jj_gen;
 					jj_consume_token(-1);
 					throw new ParseException();
 			}
 			try{
-				if (param1 != null){
-					MathFunction mf = queryFactory.createMathFunction(MathFunctionType.valueOf(fct.image.toUpperCase()), param1, param2);
-					mf.setPosition(new TextPosition(fct, end));
-					{
-						if (true)
-							return mf;
-					}
-				}else{
-					if (true)
-						return null;
+				MathFunction mf = queryFactory.createMathFunction(MathFunctionType.valueOf(fct.image.toUpperCase()), param1, param2);
+				mf.setPosition(new TextPosition(fct, end));
+				{
+					if ("" != null)
+						return mf;
 				}
 			}catch(Exception ex){
 				{
@@ -3519,7 +3648,7 @@ public class ADQLParser implements ADQLParserConstants {
 			ADQLOperand op;
 			fct = jj_consume_token(REGULAR_IDENTIFIER);
 			jj_consume_token(LEFT_PAR);
-			switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
+			switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
 				case LEFT_PAR:
 				case PLUS:
 				case MINUS:
@@ -3569,14 +3698,15 @@ public class ADQLParser implements ADQLParserConstants {
 				case REGULAR_IDENTIFIER:
 				case SCIENTIFIC_NUMBER:
 				case UNSIGNED_FLOAT:
-				case UNSIGNED_INTEGER:
+				case UNSIGNED_INTEGER:{
 					op = ValueExpression();
 					params.add(op);
 					label_13: while(true){
-						switch((jj_ntk == -1) ? jj_ntk() : jj_ntk){
-							case COMMA:
+						switch((jj_ntk == -1) ? jj_ntk_f() : jj_ntk){
+							case COMMA:{
 								;
 								break;
+							}
 							default:
 								jj_la1[96] = jj_gen;
 								break label_13;
@@ -3586,9 +3716,9 @@ public class ADQLParser implements ADQLParserConstants {
 						params.add(op);
 					}
 					break;
+				}
 				default:
-					jj_la1[97] = jj_gen;
-					;
+					jj_la1[97] = jj_gen;;
 			}
 			end = jj_consume_token(RIGHT_PAR);
 			//System.out.println("INFO [ADQLParser]: \""+fct.image+"\" (from line "+fct.beginLine+" and column "+fct.beginColumn+" to line "+token.endLine+" and column "+(token.endColumn+1)+") is considered as an user defined function !");
@@ -3601,7 +3731,7 @@ public class ADQLParser implements ADQLParserConstants {
 				UserDefinedFunction udf = queryFactory.createUserDefinedFunction(fct.image, parameters);
 				udf.setPosition(new TextPosition(fct, end));
 				{
-					if (true)
+					if ("" != null)
 						return udf;
 				}
 			}catch(UnsupportedOperationException uoe){
@@ -4392,14 +4522,6 @@ public class ADQLParser implements ADQLParserConstants {
 		return false;
 	}
 
-	private boolean jj_3R_133(){
-		if (jj_scan_token(COMMA))
-			return true;
-		if (jj_3R_42())
-			return true;
-		return false;
-	}
-
 	private boolean jj_3R_66(){
 		Token xsp;
 		xsp = jj_scanpos;
@@ -4414,6 +4536,14 @@ public class ADQLParser implements ADQLParserConstants {
 		return false;
 	}
 
+	private boolean jj_3R_133(){
+		if (jj_scan_token(COMMA))
+			return true;
+		if (jj_3R_42())
+			return true;
+		return false;
+	}
+
 	private boolean jj_3R_25(){
 		if (jj_3R_42())
 			return true;
@@ -4431,6 +4561,14 @@ public class ADQLParser implements ADQLParserConstants {
 		return false;
 	}
 
+	private boolean jj_3R_52(){
+		if (jj_scan_token(DOT))
+			return true;
+		if (jj_3R_71())
+			return true;
+		return false;
+	}
+
 	private boolean jj_3R_115(){
 		if (jj_3R_42())
 			return true;
@@ -4445,14 +4583,6 @@ public class ADQLParser implements ADQLParserConstants {
 		return false;
 	}
 
-	private boolean jj_3R_52(){
-		if (jj_scan_token(DOT))
-			return true;
-		if (jj_3R_71())
-			return true;
-		return false;
-	}
-
 	private boolean jj_3R_21(){
 		if (jj_3R_36())
 			return true;
@@ -4520,6 +4650,18 @@ public class ADQLParser implements ADQLParserConstants {
 		return false;
 	}
 
+	private boolean jj_3R_29(){
+		if (jj_scan_token(DELIMITED_IDENTIFIER))
+			return true;
+		return false;
+	}
+
+	private boolean jj_3R_28(){
+		if (jj_scan_token(REGULAR_IDENTIFIER))
+			return true;
+		return false;
+	}
+
 	private boolean jj_3R_24(){
 		if (jj_scan_token(REGULAR_IDENTIFIER))
 			return true;
@@ -4534,30 +4676,35 @@ public class ADQLParser implements ADQLParserConstants {
 		return false;
 	}
 
-	private boolean jj_3R_29(){
-		if (jj_scan_token(DELIMITED_IDENTIFIER))
+	private boolean jj_3R_141(){
+		if (jj_3R_100())
 			return true;
 		return false;
 	}
 
-	private boolean jj_3R_28(){
-		if (jj_scan_token(REGULAR_IDENTIFIER))
-			return true;
+	private boolean jj_3R_14(){
+		Token xsp;
+		xsp = jj_scanpos;
+		if (jj_3R_28()){
+			jj_scanpos = xsp;
+			if (jj_3R_29())
+				return true;
+		}
 		return false;
 	}
 
-	private boolean jj_3R_141(){
-		if (jj_3R_100())
+	private boolean jj_3R_131(){
+		if (jj_3R_21())
 			return true;
 		return false;
 	}
 
-	private boolean jj_3R_14(){
+	private boolean jj_3R_114(){
 		Token xsp;
 		xsp = jj_scanpos;
-		if (jj_3R_28()){
+		if (jj_3R_131()){
 			jj_scanpos = xsp;
-			if (jj_3R_29())
+			if (jj_3R_132())
 				return true;
 		}
 		return false;
@@ -4575,12 +4722,6 @@ public class ADQLParser implements ADQLParserConstants {
 		return false;
 	}
 
-	private boolean jj_3R_131(){
-		if (jj_3R_21())
-			return true;
-		return false;
-	}
-
 	private boolean jj_3R_93(){
 		if (jj_scan_token(SIN))
 			return true;
@@ -4593,14 +4734,9 @@ public class ADQLParser implements ADQLParserConstants {
 		return false;
 	}
 
-	private boolean jj_3R_114(){
-		Token xsp;
-		xsp = jj_scanpos;
-		if (jj_3R_131()){
-			jj_scanpos = xsp;
-			if (jj_3R_132())
-				return true;
-		}
+	private boolean jj_3R_51(){
+		if (jj_3R_70())
+			return true;
 		return false;
 	}
 
@@ -4616,6 +4752,12 @@ public class ADQLParser implements ADQLParserConstants {
 		return false;
 	}
 
+	private boolean jj_3_11(){
+		if (jj_3R_24())
+			return true;
+		return false;
+	}
+
 	private boolean jj_3R_91(){
 		if (jj_scan_token(COS))
 			return true;
@@ -4644,8 +4786,8 @@ public class ADQLParser implements ADQLParserConstants {
 		return false;
 	}
 
-	private boolean jj_3R_51(){
-		if (jj_3R_70())
+	private boolean jj_3R_50(){
+		if (jj_3R_69())
 			return true;
 		return false;
 	}
@@ -4662,9 +4804,17 @@ public class ADQLParser implements ADQLParserConstants {
 		return false;
 	}
 
-	private boolean jj_3_11(){
-		if (jj_3R_24())
-			return true;
+	private boolean jj_3R_35(){
+		Token xsp;
+		xsp = jj_scanpos;
+		if (jj_3R_50()){
+			jj_scanpos = xsp;
+			if (jj_3_11()){
+				jj_scanpos = xsp;
+				if (jj_3R_51())
+					return true;
+			}
+		}
 		return false;
 	}
 
@@ -4680,12 +4830,6 @@ public class ADQLParser implements ADQLParserConstants {
 		return false;
 	}
 
-	private boolean jj_3R_50(){
-		if (jj_3R_69())
-			return true;
-		return false;
-	}
-
 	private boolean jj_3R_87(){
 		if (jj_scan_token(ACOS))
 			return true;
@@ -4698,20 +4842,6 @@ public class ADQLParser implements ADQLParserConstants {
 		return false;
 	}
 
-	private boolean jj_3R_35(){
-		Token xsp;
-		xsp = jj_scanpos;
-		if (jj_3R_50()){
-			jj_scanpos = xsp;
-			if (jj_3_11()){
-				jj_scanpos = xsp;
-				if (jj_3R_51())
-					return true;
-			}
-		}
-		return false;
-	}
-
 	private boolean jj_3R_54(){
 		Token xsp;
 		xsp = jj_scanpos;
@@ -5687,6 +5817,7 @@ public class ADQLParser implements ADQLParserConstants {
 		throw generateParseException();
 	}
 
+	@SuppressWarnings("serial")
 	static private final class LookaheadSuccess extends java.lang.Error {}
 
 	final private LookaheadSuccess jj_ls = new LookaheadSuccess();
@@ -5743,7 +5874,7 @@ public class ADQLParser implements ADQLParserConstants {
 		return t;
 	}
 
-	private int jj_ntk(){
+	private int jj_ntk_f(){
 		if ((jj_nt = token.next) == null)
 			return (jj_ntk = (token.next = token_source.getNextToken()).kind);
 		else
diff --git a/src/adql/parser/adqlGrammar.jj b/src/adql/parser/adqlGrammar.jj
index 7d4c062..f2936cd 100644
--- a/src/adql/parser/adqlGrammar.jj
+++ b/src/adql/parser/adqlGrammar.jj
@@ -14,7 +14,7 @@
  * You should have received a copy of the GNU Lesser General Public License
  * along with ADQLLibrary.  If not, see <http://www.gnu.org/licenses/>.
  * 
- * Copyright 2012-2015 - UDS/Centre de Données astronomiques de Strasbourg (CDS),
+ * Copyright 2012-2016 - UDS/Centre de Données astronomiques de Strasbourg (CDS),
  *                       Astronomisches Rechen Institute (ARI)
  */
 
@@ -26,7 +26,7 @@
 *  If the syntax is not conform to the ADQL definition an error message is printed else it will be the message "Correct syntax".
 *
 *  Author:  Gr&eacute;gory Mantelet (CDS;ARI) - gmantele@ari.uni-heidelberg.de
-*  Version: 1.4 (08/2015)
+*  Version: 1.4 (04/2016)
 */
 
 							/* ########### */
@@ -89,7 +89,7 @@ import adql.translator.TranslationException;
 * @see ADQLQueryFactory
 *
 * @author Gr&eacute;gory Mantelet (CDS;ARI) - gmantele@ari.uni-heidelberg.de
-* @version 1.4 (08/2015)
+* @version 1.4 (04/2016)
 */
 public class ADQLParser {
 	
@@ -1604,11 +1604,9 @@ MathFunction MathFunction(): {Token fct=null, end; ADQLOperand param1=null, para
 		| (fct=<SQRT> <LEFT_PAR> param1=NumericExpression() end=<RIGHT_PAR>)
 		| (fct=<TRUNCATE> <LEFT_PAR> param1=NumericExpression() (<COMMA> param2=SignedInteger())? end=<RIGHT_PAR>))
 		{
-			if (param1 != null){
			  	MathFunction mf = queryFactory.createMathFunction(MathFunctionType.valueOf(fct.image.toUpperCase()), param1, param2);
-			  	mf.setPosition(new TextPosition(fct, end));
-				return mf;
-			}else
-				return null;
+			MathFunction mf = queryFactory.createMathFunction(MathFunctionType.valueOf(fct.image.toUpperCase()), param1, param2);
+			mf.setPosition(new TextPosition(fct, end));
+			return mf;
 		}
 	}catch(Exception ex){
 		throw generateParseException(ex);
@@ -1626,11 +1624,9 @@ MathFunction TrigFunction(): {Token fct=null, end; ADQLOperand param1=null, para
 	| (fct=<TAN> <LEFT_PAR> param1=NumericExpression() end=<RIGHT_PAR>))
 	{
 		try{
-			if (param1 != null){
			  	MathFunction mf = queryFactory.createMathFunction(MathFunctionType.valueOf(fct.image.toUpperCase()), param1, param2);
-			  	mf.setPosition(new TextPosition(fct, end));
-			  	return mf;
-			}else
-				return null;
+			MathFunction mf = queryFactory.createMathFunction(MathFunctionType.valueOf(fct.image.toUpperCase()), param1, param2);
+			mf.setPosition(new TextPosition(fct, end));
+			return mf;
 		}catch(Exception ex){
 			throw generateParseException(ex);
 		}
-- 
GitLab