Index: /trunk/org.etsi.common/.classpath
===================================================================
--- /trunk/org.etsi.common/.classpath	(revision 7)
+++ /trunk/org.etsi.common/.classpath	(revision 7)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="lib" path="lib/xstream-1.3.1.jar"/>
+	<classpathentry kind="lib" path="lib/commons-cli-1.2.jar"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
Index: /trunk/org.etsi.common/.project
===================================================================
--- /trunk/org.etsi.common/.project	(revision 7)
+++ /trunk/org.etsi.common/.project	(revision 7)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.etsi.common</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
Index: /trunk/org.etsi.common/build.xml
===================================================================
--- /trunk/org.etsi.common/build.xml	(revision 7)
+++ /trunk/org.etsi.common/build.xml	(revision 7)
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<project basedir="." default="compile" name="org.etsi.common">
+    <property name="src" value="src"/>
+    <property name="bin" value="bin"/>
+    <property name="lib" value="lib"/>
+    <property name="dist" value="dist"/>
+    <property name="antlib" value="antlib"/>
+    <property name="nsis" value="nsis"/>
+	<property name="cp" value="${lib}/xstream-1.3.1.jar:${lib}/commons-cli-1.2.jar:"/>
+
+    <target name="init">
+        <mkdir dir="${bin}"/>
+    </target>
+
+    <target name="clean" description="Removes previous build">
+      <delete includeEmptyDirs="true">
+        <fileset dir="${bin}"/>
+      </delete>
+    </target>
+
+   	<target name="compile" depends="init">
+        <javac srcdir="${src}" destdir="${bin}" classpath="${cp}"/>
+    </target>
+	
+    <target name="make-dist" depends="compile" description="Creates an ETSI MiscTools distribution directory">
+        <echo>Building ETSI MiscTools Distribution in ${dist}...</echo>
+        <delete includeEmptyDirs="true">
+            <fileset dir="${dist}"/>
+        </delete>
+        <jar destfile="${lib}/org.etsi.common.jar" basedir="${bin}/"/> 
+        <mkdir dir="${dist}"/>
+        <mkdir dir="${dist}/lib"/>
+        <copy todir="${dist}/lib">
+        	<fileset dir="${lib}"/>
+        </copy>
+    </target>
+
+
+</project>
Index: /trunk/org.etsi.common/lib/LICENSE.txt
===================================================================
--- /trunk/org.etsi.common/lib/LICENSE.txt	(revision 7)
+++ /trunk/org.etsi.common/lib/LICENSE.txt	(revision 7)
@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
Index: /trunk/org.etsi.common/lib/xstream-license.txt
===================================================================
--- /trunk/org.etsi.common/lib/xstream-license.txt	(revision 7)
+++ /trunk/org.etsi.common/lib/xstream-license.txt	(revision 7)
@@ -0,0 +1,28 @@
+(BSD Style License)
+
+Copyright (c) 2003-2006, Joe Walnes
+Copyright (c) 2006-2007, XStream Committers
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+Redistributions of source code must retain the above copyright notice, this list of
+conditions and the following disclaimer. Redistributions in binary form must reproduce
+the above copyright notice, this list of conditions and the following disclaimer in
+the documentation and/or other materials provided with the distribution.
+
+Neither the name of XStream nor the names of its contributors may be used to endorse
+or promote products derived from this software without specific prior written
+permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
+WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
Index: /trunk/org.etsi.common/src/org/etsi/common/ExtensionFilter.java
===================================================================
--- /trunk/org.etsi.common/src/org/etsi/common/ExtensionFilter.java	(revision 7)
+++ /trunk/org.etsi.common/src/org/etsi/common/ExtensionFilter.java	(revision 7)
@@ -0,0 +1,45 @@
+package org.etsi.common;
+
+import java.io.File;
+import java.io.FileFilter;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class ExtensionFilter implements FileFilter {
+
+	private String extRegExp = "";
+
+	public ExtensionFilter(String extRegExp) {
+		this.extRegExp = extRegExp;
+	}
+
+	public static String getFileExtension(String filename) {
+		String ext = "";
+		new File(filename);
+		int i = filename.lastIndexOf('.');
+		if (i > 0 && i < filename.length() - 1) {
+			ext = filename.substring(i + 1).toLowerCase();
+		}
+		return ext;
+	}
+
+	public static boolean checkFileExtension(File file, String regExp){
+		Pattern extPattern = Pattern.compile(regExp);
+		Matcher extMatcher = extPattern.matcher(getFileExtension(file.getName()));
+			if (extMatcher.matches()) {
+				return true;
+			}
+
+		return false;
+	}
+	
+	public boolean accept(File filename) {
+		if (filename.isFile()) {
+			if (checkFileExtension(filename, this.extRegExp)) {
+				return true;
+			}
+		}
+		return false;
+	}
+
+}
Index: /trunk/org.etsi.common/src/org/etsi/common/InputInterface.java
===================================================================
--- /trunk/org.etsi.common/src/org/etsi/common/InputInterface.java	(revision 7)
+++ /trunk/org.etsi.common/src/org/etsi/common/InputInterface.java	(revision 7)
@@ -0,0 +1,186 @@
+package org.etsi.common;
+
+import java.io.File;
+import java.io.FileFilter;
+import java.io.IOException;
+import java.util.LinkedList;
+import java.util.List;
+
+public class InputInterface {
+	//TODO: can be transformed to static
+	
+	private String projectExt = "t3p";
+	private String extRegExp = "ttcn|ttcn3";
+	private boolean recursive = true;
+
+	public InputInterface(String resourceExtRegExp, boolean recursive){
+		this.extRegExp = resourceExtRegExp;
+		this.recursive = recursive;
+	}
+
+	
+	public InputInterface(String resourceExtRegExp, String projectExt, boolean recursive){
+		this.extRegExp = resourceExtRegExp;
+		this.projectExt = projectExt;
+		this.recursive = recursive;
+	}
+	
+	public void setExtRegExp(String extRegExp) {
+		this.extRegExp = extRegExp;
+	}
+
+	public String getExtRegExp() {
+		return extRegExp;
+	}
+
+	public void setRecursive(boolean recursive) {
+		this.recursive = recursive;
+	}
+
+	public boolean isRecursive() {
+		return recursive;
+	}
+	
+	public List<String> inputFromFile(String filename){
+		List<String> files = new LinkedList<String>();
+		File file = new File(filename);
+		if (file.isFile() && ExtensionFilter.checkFileExtension(file, extRegExp)){
+			files.add(file.getPath());
+		}
+		return files;
+	}
+
+	public List<String> inputFromDirectory(String directory){
+		List<String> files = new LinkedList<String>();
+		File inputDir = new File(directory);
+		File[] fileList = inputDir.listFiles(new ExtensionFilter(this.getExtRegExp()));
+
+		for (int i = 0; i < fileList.length; i++) {
+			files.add(fileList[i].getPath());
+		}
+
+		File[] dirList = inputDir.listFiles(new FileFilter() {
+			public boolean accept(File pathname) {
+				if (pathname.isDirectory())
+					return true;
+				return false;
+			}
+		});
+
+		if (this.isRecursive()){
+			for (int i = 0; i < dirList.length; i++) {
+				files.addAll(inputFromDirectory(dirList[i].getPath()));
+			}
+		}
+		
+		return files;
+	}
+
+	public List<String> inputFromWildcard(String wildcard){
+		List<String> files = new LinkedList<String>();
+		File wildcardFile = new File(wildcard);
+		System.out.println("Expanding wildcard \""+wildcard+"\"...");
+		File wildcardParentFile = wildcardFile.getParentFile();
+		if (wildcardParentFile == null) {
+			wildcardParentFile = new File(".");
+		}
+		//TODO: needs to check if it is null and handle the situation
+		if (wildcardParentFile.isDirectory()){
+			File[] fileList = wildcardParentFile.listFiles(new WildcardFilter(wildcardFile));
+			for (int i = 0; i < fileList.length; i++) {
+				System.out.println("      ->"+fileList[i].getPath());
+				files.addAll(this.getInputFromParameter(fileList[i].getPath()));
+			}
+		} else {
+			//invalid parent directory, return
+		}
+		if (files.isEmpty()) {
+			System.out.println("      ->No files found!");
+		}
+		return files;
+	}
+
+	public List<String> inputFromProject(String projectFilename){
+		List<String> files = new LinkedList<String>();
+		System.out.println("Reading input files from project file \""+projectFilename+"\"...");
+		//TODO: Fill with content
+		String projectFile = MiscTools.readFile(projectFilename);
+		String[] lines = projectFile.split("\n");
+		for (String line : lines) {
+			if (!line.matches("\\s*")) {//.equals("")) {
+				System.out.println("  "+line);
+				files.addAll(this.getInputFromParameter(line));
+			}
+		}
+		return files;
+	}
+
+	public void addToProject(List<String> files, String projectFilename){
+		//TODO: Fill with content		
+	}
+	
+	//TODO: this will make other duplicate checks obsolete
+	public static List<String> filterAbsoluteDuplicates(List<String> inputFiles) {
+		List<String> filteredInputFiles = new LinkedList<String>();
+		List<String> absolutePaths = new LinkedList<String>();
+		for (String inputFile : inputFiles) {
+			try {
+				String canonicalPath = new File(inputFile).getCanonicalPath();
+				if (!absolutePaths.contains(canonicalPath)) {
+					absolutePaths.add(canonicalPath);
+					filteredInputFiles.add(inputFile);
+				}
+			} catch (IOException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			}
+		}
+		return filteredInputFiles;
+	}
+	
+	//TODO: review, may be superfluous
+	public List<String> getInputFromParameterList(List<String> parameters) {
+		List<String> inputFiles = new LinkedList<String>();
+		for (int i = 0; i < parameters.size(); i++) {
+			List<String> fileList = getInputFromParameter(parameters.get(i));
+			for (int f = 0; f < fileList.size(); f++) {
+				String filename = fileList.get(f);
+				if (!inputFiles.contains(filename)) {
+					inputFiles.add(filename);
+				} else {
+					System.out.println("Entry \"" + filename
+							+ "\" already present in the list, skipping..");
+				}
+			}
+		}
+		return inputFiles;
+	}
+
+	
+	public List<String> getInputFromParameter(String inputParameter){
+		List<String> inputFiles = new LinkedList<String>();
+		File inputParameterFile = new File(inputParameter.trim());
+		if (inputParameterFile.isDirectory()){
+			if (this.isRecursive()){
+				System.out.println("Collecting ttcn3 files recursively in \""
+						+ inputParameter + "\" ...");
+			} else {
+				System.out.println("Collecting ttcn3 files non-recursively in \""
+						+ inputParameter + "\" ...");
+			}
+			inputFiles = inputFromDirectory(inputParameter);
+		} else {
+			if (inputParameterFile.isFile()){
+				if (inputParameterFile.getName().endsWith("."+projectExt)){
+					inputFiles = inputFromProject(inputParameter);
+				} else {
+					inputFiles = inputFromFile(inputParameter);
+				}
+			} else {
+				inputFiles = inputFromWildcard(inputParameter);
+			}
+		}
+		return inputFiles;
+	}
+
+}
Index: /trunk/org.etsi.common/src/org/etsi/common/MiscTools.java
===================================================================
--- /trunk/org.etsi.common/src/org/etsi/common/MiscTools.java	(revision 7)
+++ /trunk/org.etsi.common/src/org/etsi/common/MiscTools.java	(revision 7)
@@ -0,0 +1,182 @@
+package org.etsi.common;
+
+import java.io.BufferedWriter;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.text.DecimalFormat;
+
+import org.etsi.common.exceptions.TerminationException;
+
+
+public class MiscTools {
+
+	//TODO: Add exceptions and throws declarations
+	public static String readFile(String filename) {
+		FileInputStream fis;
+		String content = "";
+		try {
+			fis = new FileInputStream(filename);
+			int x = fis.available();
+			byte b[] = new byte[x];
+			fis.read(b);
+			content = new String(b);
+		} catch (FileNotFoundException e) {
+			String message = "IO ERROR: Filename "+filename+" cannot be found for reading!";
+			try {
+				throw new TerminationException(message);
+			} catch (TerminationException e1) {
+			}
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+
+		return content;
+	}
+
+	public static String getShortFilename(String filename) {
+		String shortfilename = new File(filename).getName();
+		return shortfilename;
+	}
+
+	public static String getMethodName(){
+		return Thread.currentThread().getStackTrace()[2].getMethodName();
+	}
+	
+	
+	public static void writeFile(String filename, String content) {
+		FileOutputStream fos;
+		File targetDir = new File(filename).getAbsoluteFile().getParentFile();
+		try {
+			if (!targetDir.exists()) {
+				if (!targetDir.mkdirs()) {
+					System.out
+							.println("IO ERROR: Creating the directory structure for \""
+									+ filename + "\" failed!");
+				}
+			}
+
+			try {
+				fos = new FileOutputStream(filename);
+				Writer w = new BufferedWriter(new OutputStreamWriter(fos));
+				w.write(content);
+				w.flush();
+				w.close();
+							
+			} catch (FileNotFoundException e) {
+				e.printStackTrace();
+			} catch (IOException e) {
+				e.printStackTrace();
+			}
+		} catch (SecurityException se) {
+			System.out
+					.println("IO ERROR: Could not create ouput files and / or directories!"
+							+ "Caused by: \"" + filename + "\"");
+		}
+
+	}
+
+	public static void streamCopyFile(String sourceFilename, String targetFilename){
+		try {
+			File targetFile = new File(targetFilename);
+			if (!targetFile.getParentFile().exists()){
+				if (!targetFile.getParentFile().mkdirs()){
+					System.out
+					.println("IO ERROR: Creating the directory structure for \""
+							+ targetFilename + "\" failed!");
+				}
+			}
+			FileOutputStream outStream = new FileOutputStream(targetFile);
+			FileInputStream inStream = new FileInputStream(sourceFilename);
+			int c;
+			try {
+				while((c = inStream.read()) != -1){
+					outStream.write(c);
+				}	
+			} catch (IOException e) {
+				System.out.println("IO ERROR: Caused while copying: \""+sourceFilename+"\" to \""+targetFilename+"\"");
+			}
+		} catch (FileNotFoundException e1) {
+			System.out.println("IO ERROR: File not found: \""+sourceFilename+" / "+targetFilename+"\"");
+			e1.printStackTrace();
+		}
+	}
+	
+//	public static String getSubPath(String basePath, String resourcePath) {
+//		String subPath = resourcePath.substring(basePath.length());
+//		return subPath;
+//	}
+	
+	// --------------------------------------------------------------------------
+
+	public static int getLOC(String filename){
+		int LOC = 0;
+		String code = MiscTools.readFile(filename);
+		int index = 0;
+		while (index != -1) {
+			if (index == 0){
+				index = code.indexOf("\n", index);
+			} else {
+				index = code.indexOf("\n", index + 1);
+			}
+			LOC++;
+		}
+		return LOC;
+	}
+
+	// --------------------------------------------------------------------------
+	public static String doubleToString(double d) {
+		DecimalFormat fmt = new DecimalFormat("0.00");
+		String string = fmt.format(d);
+		return string;
+	}
+
+	public static String getSubPath(String inputPath){
+		String subPath = "";
+		File input = new File(getProperInputPath(inputPath));
+		if (input.isFile()){
+			subPath = input.getName().substring(0, input.getName().lastIndexOf("."));
+		} else {
+			subPath = input.getName();
+		}
+		return subPath;
+	}
+
+	public static String getProperOutputPath(String outputDirectory) {
+		String properOutputPath = "";
+		try {
+			//gets the full path if relative path is provided
+			properOutputPath = new File(outputDirectory).getCanonicalPath();
+		} catch (IOException e) {
+			System.out.println("IO ERROR: ");
+			e.printStackTrace();
+		} 
+		return properOutputPath;
+	}
+
+	public static String getProperInputPath(String inputPath) {
+		// strips slash if present
+		//TODO: reorganize and extrarct
+		//TODO: Document "feature" -> if multiple input paths are provided, the first one will be used for the sub path calculation
+		String properInputPath = new File(inputPath).getPath();
+		
+		if (properInputPath.equals(".")) {
+			try {
+				//gets the full path
+				properInputPath = new File(properInputPath).getCanonicalFile()
+						.getName();
+			} catch (IOException e) {
+				System.out.println("IO ERROR: ");
+				e.printStackTrace();
+			}
+		}
+		return properInputPath;
+	}
+
+
+}
Index: /trunk/org.etsi.common/src/org/etsi/common/WildcardFilter.java
===================================================================
--- /trunk/org.etsi.common/src/org/etsi/common/WildcardFilter.java	(revision 7)
+++ /trunk/org.etsi.common/src/org/etsi/common/WildcardFilter.java	(revision 7)
@@ -0,0 +1,32 @@
+package org.etsi.common;
+
+import java.io.File;
+import java.io.FileFilter;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class WildcardFilter implements FileFilter {
+
+	private String wildcardRegExp = "";
+	
+	public WildcardFilter(File wildcardFile){
+		String wildcardRegExp = wildcardFile.getName();
+		wildcardRegExp = wildcardRegExp.replaceAll("\\.", "\\\\.");
+		wildcardRegExp = wildcardRegExp.replaceAll("\\?", ".");
+		wildcardRegExp = wildcardRegExp.replaceAll("\\*", ".*");
+		this.wildcardRegExp = wildcardRegExp;
+	}
+	
+	@Override
+	public boolean accept(File file) {
+		if (file.isFile() || file.isDirectory()){
+			Pattern wildcardPattern = Pattern.compile(this.wildcardRegExp);
+			Matcher wildcardMatcher = wildcardPattern.matcher(file.getName());
+			if (wildcardMatcher.matches()) {
+				return true;
+			}
+		}
+		return false;
+	}
+
+}
Index: /trunk/org.etsi.common/src/org/etsi/common/configuration/ConfigTools.java
===================================================================
--- /trunk/org.etsi.common/src/org/etsi/common/configuration/ConfigTools.java	(revision 7)
+++ /trunk/org.etsi.common/src/org/etsi/common/configuration/ConfigTools.java	(revision 7)
@@ -0,0 +1,228 @@
+package org.etsi.common.configuration;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.util.ArrayList;
+
+import org.etsi.common.MiscTools;
+import org.etsi.common.exceptions.TerminationException;
+
+import com.thoughtworks.xstream.XStream;
+import com.thoughtworks.xstream.converters.ConversionException;
+
+public class ConfigTools {
+	
+	private ToolConfiguration config = null;
+	private String configurationClassName;
+	private String configurationProfileClassName;
+	private String toolVersion;
+	
+	public ConfigTools(String configurationClassName, String configurationProfileClassName) {
+		this.configurationClassName = configurationClassName;
+		this.configurationProfileClassName = configurationProfileClassName;
+	}
+	
+	
+	public void loadConfig(String configurationFilename) throws TerminationException, InstantiationException, IllegalAccessException, ClassNotFoundException {
+		System.out.println("Loading configuration ...");
+		File configFile = new File(configurationFilename);
+		if (configFile.exists()) {
+			config = readConfig(configurationFilename);
+			if (config == null) {
+				System.out.println("ERROR: XML configuration could not be loaded! "
+						+ "\n  Please check the configuration for consistency or use an auto-generated configuration file to migrate any custom settings!");
+				throw new TerminationException("");
+			}
+		} else {
+			System.out.println("ERROR: Configuration file \""+configurationFilename+"\" does not exist! Use the appropriate option to generate a new default configuration.");
+			throw new TerminationException("");
+//			config = initializeNewDefaultConfig(configurationFilename);
+		}
+	}
+
+	public ToolConfiguration initializeNewDefaultConfig(
+			String configurationFilename) throws TerminationException, InstantiationException, IllegalAccessException, ClassNotFoundException {
+		System.out.println("  Generating new default configuration in: \""
+				+ configurationFilename + "\" ...");
+		ToolConfiguration config = null;
+		ConfigurationProfile configurationProfile = null;
+		config = (ToolConfiguration) Class.forName(configurationClassName).newInstance();
+		configurationProfile = (ConfigurationProfile) Class.forName(configurationProfileClassName).newInstance();
+		configurationProfile.setProfileName("defaultProfile");
+		configurationProfile.setProfileVersion(getToolVersion());
+		config.setDefaultConfigurationProfile("all");
+		if (config.getConfigurationProfiles() == null) {
+			ArrayList<ConfigurationProfile> configurationProfiles = new ArrayList<ConfigurationProfile>();
+			config.setConfigurationProfiles(configurationProfiles);
+		}
+		config.getConfigurationProfiles().add(configurationProfile);
+		writeConfig(config, configurationFilename);
+		return config;
+	}	
+
+	// -------------------------------------------------------------------------
+	
+/*	//TO BE DEPRECATED
+	//TODO: Reorganize and reuse 
+	public static String findConfig(String filename) {
+		File configPath = new File(getConfigurationPath());
+		if (configPath.exists()) {
+			File configFile = null;
+			if (filename.length() > 0) {
+				configFile = new File(getConfigurationPath() + filename);
+			} else {
+				configFile = new File(getDefaultConfigurationFilePath());
+			}
+			if (configFile.exists())
+				return configFile.getAbsolutePath();
+			else
+				return null;
+		} else {
+			configPath.mkdir();
+			return null;
+		}
+	}
+	//TODO: TO BE DEPRECATED
+	public static String findConfig() {
+		return findConfig("");
+	}
+	
+	
+	//TODO: TO BE DEPRECATED
+	//TODO: FIX THESE HARDCODED PARTS
+	public static String getConfigurationPath() {
+		if (System.getProperty("os.name").toLowerCase().contains("windows")) {
+			String appdata = System.getenv("appdata");
+			return appdata + "\\T3Q\\";
+		} else { // assume unix
+			String home = System.getProperty("user.home");
+			return home + "/.t3q/";
+		}
+	}
+
+	
+	//TODO: TO BE DEPRECATED
+	public static String getDefaultConfigurationFilePath() {
+		return getConfigurationPath() + "t3q.xml";
+	}
+*/	
+	// -------------------------------------------------------------------------
+	
+	private ToolConfiguration readConfig(String filename) throws TerminationException {
+		System.out.println("  Reading XML configuration from: " + filename);
+		String str = MiscTools.readFile(filename);
+		XStream xstream = new XStream();
+		initXstreamAliases(xstream);
+		ToolConfiguration config = null;
+		try{
+			config = (ToolConfiguration)xstream.fromXML(str);
+		} catch (ConversionException ce){
+			String line = "";
+			line = ce.getMessage().split("line\\snumber[\\t\\s]+?:\\s")[1];
+			line = line.substring(0, line.indexOf("\n"));
+			System.out.println("  Problem Occured while loading configuration: line: "+line);
+			//TODO: add further debugging details?
+		}
+		return config;
+	}
+
+	private void initXstreamAliases(XStream xstream) throws TerminationException {
+		try {
+			xstream.alias(Class.forName(configurationClassName).getSimpleName(), Class.forName(configurationClassName));
+			xstream.alias(Class.forName(configurationProfileClassName).getSimpleName(), Class.forName(configurationProfileClassName));
+		} catch (ClassNotFoundException e) {
+			System.out.println("  Problem occurred while initiating XStream. Class not found: "+e.getMessage());
+			throw new TerminationException("Class not found: "+e.getMessage());
+		}
+	}
+
+	private void writeConfig(ToolConfiguration config, String filename) throws TerminationException {
+		System.out.println("  Writing XML configuration to: "+filename);
+		XStream xstream = new XStream();
+		initXstreamAliases(xstream);
+		String xml = xstream.toXML(config);
+		OutputStreamWriter oos;
+		//write out an empty file
+		MiscTools.writeFile(filename, "");
+		try {
+			oos = new OutputStreamWriter (new FileOutputStream(filename));
+			oos.write(xml);
+			oos.close();
+		} catch (FileNotFoundException e) {
+			System.out.println("  ERROR: File could not be found! (\""+filename+"\")");
+			throw new TerminationException(e.getMessage());
+		} catch (IOException e) {
+			System.out.println("  IO ERROR: Could not write to file! (\""+filename+"\")");
+			throw new TerminationException(e.getMessage());
+		}
+	}
+
+	public ConfigurationProfile selectProfile(String specifiedProfileName) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
+		// add all default implicit profile
+		ConfigurationProfile selectedProfile = null;
+		ConfigurationProfile allEnabledProfile = (ConfigurationProfile) Class.forName(configurationProfileClassName).newInstance();
+		allEnabledProfile.setProfileName("all");
+		allEnabledProfile.setProfileVersion(getToolVersion());
+		config.getConfigurationProfiles().add(allEnabledProfile);
+		if (specifiedProfileName != null){
+			System.out.println("  Selecting profile \"" + specifiedProfileName
+					+ "\"...");
+			selectedProfile = activateProfile(specifiedProfileName);
+		}
+		if (selectedProfile == null) {
+			if (specifiedProfileName != null) {
+				System.out.println("  Profile \""
+						+ specifiedProfileName
+						+ "\" not found in configuration. Trying default profile \""
+						+ config.getDefaultConfigurationProfile() + "\".");
+			} else {
+				System.out.println("  No Profile specified. Trying default profile \""
+						+ config.getDefaultConfigurationProfile() + "\".");
+			}
+
+			specifiedProfileName = config.getDefaultConfigurationProfile();
+			selectedProfile = activateProfile(specifiedProfileName);
+
+		}
+		if (selectedProfile == null) {
+			System.out.println("  Profile \""
+					+ specifiedProfileName
+					+ "\" not found in configuration. Auto-selecting \"all\" profile.");
+			selectedProfile = allEnabledProfile;
+		}
+		
+		return selectedProfile;
+	}
+
+	// --------------------------------------------------------------------------
+	//TODO: Extract configuration management and possibly abstract it for reusability
+	private ConfigurationProfile activateProfile(String specifiedProfile) {
+		ConfigurationProfile activatedProfile = null;
+		
+		for (int i = 0; i < config.getConfigurationProfiles().size(); i++) {
+			ConfigurationProfile configurationProfile = (ConfigurationProfile) config
+					.getConfigurationProfiles().get(i);
+			if (configurationProfile.getProfileName().toLowerCase().equals(
+					specifiedProfile.toLowerCase())) {
+				System.out.println("  Activating profile \"" + specifiedProfile
+						+ "\"...");
+				activatedProfile = configurationProfile;
+			}
+		}
+		return activatedProfile;
+	}
+
+
+	public void setToolVersion(String toolVersion) {
+		this.toolVersion = toolVersion;
+	}
+
+
+	public String getToolVersion() {
+		return toolVersion;
+	}
+
+}
Index: /trunk/org.etsi.common/src/org/etsi/common/configuration/ConfigurationProfile.java
===================================================================
--- /trunk/org.etsi.common/src/org/etsi/common/configuration/ConfigurationProfile.java	(revision 7)
+++ /trunk/org.etsi.common/src/org/etsi/common/configuration/ConfigurationProfile.java	(revision 7)
@@ -0,0 +1,93 @@
+package org.etsi.common.configuration;
+
+import org.etsi.common.logging.LoggingConfiguration;
+
+public abstract class ConfigurationProfile {
+
+	protected String profileName;
+	protected String profileVersion;
+	protected String resourceExtensionsRegExp = "ttcn|ttcn3|3mp";
+	protected String projectExtension = "t3p";
+	protected boolean settingRecursiveProcessing = true;
+	protected boolean settingAbortOnError = true;
+	protected LoggingConfiguration loggingConfiguration = new LoggingConfiguration();
+	protected boolean statShowSummary = true;
+	protected boolean statShowLOC = true;
+
+	public ConfigurationProfile() {
+		super();
+	}
+
+	public String getProfileName() {
+		return profileName;
+	}
+
+	public void setProfileName(String profileName) {
+		this.profileName = profileName;
+	}
+
+	public void setSettingRecursiveProcessing(boolean settingRecursiveProcessing) {
+		this.settingRecursiveProcessing = settingRecursiveProcessing;
+	}
+
+	public boolean isSettingRecursiveProcessing() {
+		return settingRecursiveProcessing;
+	}
+
+	public void setStatShowLOC(boolean statShowLOC) {
+		this.statShowLOC = statShowLOC;
+	}
+
+	public boolean isStatShowLOC() {
+		return statShowLOC;
+	}
+
+	public void setSettingAbortOnError(boolean settingAbortOnError) {
+		this.settingAbortOnError = settingAbortOnError;
+	}
+
+	public boolean isSettingAbortOnError() {
+		return settingAbortOnError;
+	}
+
+	public void setProfileVersion(String profileVersion) {
+		this.profileVersion = profileVersion;
+	}
+
+	public String getProfileVersion() {
+		return profileVersion;
+	}
+
+	public void setLoggingConfiguration(LoggingConfiguration loggingConfiguration) {
+		this.loggingConfiguration = loggingConfiguration;
+	}
+
+	public LoggingConfiguration getLoggingConfiguration() {
+		return loggingConfiguration;
+	}
+
+	public void setStatShowSummary(boolean statShowSummary) {
+		this.statShowSummary = statShowSummary;
+	}
+
+	public boolean isStatShowSummary() {
+		return statShowSummary;
+	}
+
+	public void setResourceExtensionsRegExp(String resourceExtensionsRegExp) {
+		this.resourceExtensionsRegExp = resourceExtensionsRegExp;
+	}
+
+	public String getResourceExtensionsRegExp() {
+		return resourceExtensionsRegExp;
+	}
+
+	public void setProjectExtension(String projectExtension) {
+		this.projectExtension = projectExtension;
+	}
+
+	public String getProjectExtension() {
+		return projectExtension;
+	}
+
+}
Index: /trunk/org.etsi.common/src/org/etsi/common/configuration/OptionWithID.java
===================================================================
--- /trunk/org.etsi.common/src/org/etsi/common/configuration/OptionWithID.java	(revision 7)
+++ /trunk/org.etsi.common/src/org/etsi/common/configuration/OptionWithID.java	(revision 7)
@@ -0,0 +1,45 @@
+package org.etsi.common.configuration;
+
+import org.apache.commons.cli.Option;
+
+public class OptionWithID extends Option {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = -2643329397818768355L;
+	private int id;
+	
+	public OptionWithID(String opt, String longOpt, boolean hasArg,
+			String description) throws IllegalArgumentException {
+		super(opt, longOpt, hasArg, description);
+	}
+
+	public OptionWithID(String longOpt, boolean hasArg,
+			String description) throws IllegalArgumentException {
+		super(null, longOpt, hasArg, description);
+	}
+	
+	public OptionWithID(int id, String longOpt, boolean hasArg,
+			String description) throws IllegalArgumentException {
+		super(null, longOpt, hasArg, description);
+		this.setId(id);
+	}
+	
+	public OptionWithID(int id, String longOpt, 
+			String description) throws IllegalArgumentException {
+		super(null, description);
+		this.setLongOpt(longOpt);
+		this.setId(id);
+	}
+	
+	public void setId(int id) {
+		this.id = id;
+	}
+	
+	public int getId() {
+		return this.id;
+	}
+	
+
+}
Index: /trunk/org.etsi.common/src/org/etsi/common/configuration/OptionsHandler.java
===================================================================
--- /trunk/org.etsi.common/src/org/etsi/common/configuration/OptionsHandler.java	(revision 7)
+++ /trunk/org.etsi.common/src/org/etsi/common/configuration/OptionsHandler.java	(revision 7)
@@ -0,0 +1,56 @@
+package org.etsi.common.configuration;
+
+import org.apache.commons.cli.Options;
+
+public class OptionsHandler {
+
+	private Options options = new Options();
+
+	public OptionsHandler() {
+		this.initialize();
+	}
+
+	private void initialize() {
+		
+		OptionWithID optionWithID;
+
+		optionWithID = new OptionWithID(9, "generate-config", "Generate a new default configuration file at the specified file location");
+		optionWithID.setArgs(1);
+		optionWithID.setArgName("FILE NAME");
+		getOptions().addOption(optionWithID);
+		
+		optionWithID = new OptionWithID(10, "config", "Configuration file location\n");
+		optionWithID.setArgs(1);
+		optionWithID.setArgName("FILE NAME");
+//		optionWithID.setRequired(true);		
+		getOptions().addOption(optionWithID);
+
+		optionWithID = new OptionWithID(20, "profile", "Configuration profile\n");
+		optionWithID.setArgs(1);
+		optionWithID.setArgName("PROFILE NAME");
+		getOptions().addOption(optionWithID);
+
+		optionWithID = new OptionWithID(30, "verbosity", "Verbosity level (currently supports ERROR, WARNING and INFORMATION values)\n");
+		optionWithID.setArgs(1);
+		optionWithID.setArgName("LOG LEVEL");
+		getOptions().addOption(optionWithID);
+
+		optionWithID = new OptionWithID(40, "output-path", "Destination path for the output (if applicable, otherwise ignored). Overrides the profile setting.\n");
+		optionWithID.setArgs(1);
+		optionWithID.setArgName("PATH");
+		getOptions().addOption(optionWithID);
+		
+		optionWithID = new OptionWithID(100, "help", "Show this usage information screen\n");
+		getOptions().addOption(optionWithID);
+	
+	}
+
+	public void setOptions(Options options) {
+		this.options = options;
+	}
+
+	public Options getOptions() {
+		return options;
+	}
+
+}
Index: /trunk/org.etsi.common/src/org/etsi/common/configuration/ToolConfiguration.java
===================================================================
--- /trunk/org.etsi.common/src/org/etsi/common/configuration/ToolConfiguration.java	(revision 7)
+++ /trunk/org.etsi.common/src/org/etsi/common/configuration/ToolConfiguration.java	(revision 7)
@@ -0,0 +1,30 @@
+package org.etsi.common.configuration;
+
+import java.util.ArrayList;
+
+public abstract class ToolConfiguration {
+
+	private ArrayList<ConfigurationProfile> ConfigurationProfiles;
+	private String defaultConfigurationProfile;
+
+	public ToolConfiguration() {
+		super();
+	}
+
+	public ArrayList<ConfigurationProfile> getConfigurationProfiles() {
+		return ConfigurationProfiles;
+	}
+
+	public void setConfigurationProfiles(ArrayList<ConfigurationProfile> configurationProfiles) {
+		this.ConfigurationProfiles = configurationProfiles;
+	}
+
+	public String getDefaultConfigurationProfile() {
+		return defaultConfigurationProfile;
+	}
+
+	public void setDefaultConfigurationProfile(String defaultConfigurationProfile) {
+		this.defaultConfigurationProfile = defaultConfigurationProfile;
+	}
+
+}
Index: /trunk/org.etsi.common/src/org/etsi/common/exceptions/TerminationException.java
===================================================================
--- /trunk/org.etsi.common/src/org/etsi/common/exceptions/TerminationException.java	(revision 7)
+++ /trunk/org.etsi.common/src/org/etsi/common/exceptions/TerminationException.java	(revision 7)
@@ -0,0 +1,13 @@
+package org.etsi.common.exceptions;
+
+public class TerminationException extends Exception {
+
+	private static final long serialVersionUID = -2717985520434639235L;
+
+	public TerminationException(String message) {
+		super("Errors occurred during execution! Could not continue! \n\t" + message);
+		System.err.println(super.getMessage());
+		System.exit(1);
+	}
+
+}
Index: /trunk/org.etsi.common/src/org/etsi/common/logging/LogMessage.java
===================================================================
--- /trunk/org.etsi.common/src/org/etsi/common/logging/LogMessage.java	(revision 7)
+++ /trunk/org.etsi.common/src/org/etsi/common/logging/LogMessage.java	(revision 7)
@@ -0,0 +1,114 @@
+package org.etsi.common.logging;
+
+import org.etsi.common.logging.LoggingInterface.LogLevel;
+import org.etsi.common.logging.LoggingInterface.MessageClass;
+
+public class LogMessage {
+	private String prefix;
+	private String filename;
+	private int startLine;
+	private int endLine;
+	private LogLevel logLevel;
+	private MessageClass messageClass;
+	private String message;
+	private String details;
+	
+	public LogMessage(){
+		
+	}
+	
+	public LogMessage(String filename, int startLine, int endLine, LogLevel logLevel, MessageClass messageClass, String message, String details){
+		this.setFilename(filename);
+		this.setStartLine(startLine);
+		this.setEndLine(endLine);
+		this.setLogLevel(logLevel);
+		this.setMessageClass(messageClass);
+		this.setMessage(message);
+		this.setDetails(details);
+	}
+	
+	public String toString(){
+		String output = "";
+		output += getPrefix();
+		if (getFilename() != null) {
+			output += getFilename() + ": ";
+		}
+
+		if (getStartLine() >= getEndLine()) {
+			output += getStartLine() + ": ";
+		} else {
+			output += getStartLine() + "-" + getEndLine() + ": ";
+		}
+
+		output += getLogLevel() + ": ";
+
+		if (getMessageClass() != null) {
+			output += getMessageClass().getDescription() + ": ";
+		}
+
+		output += getMessage();
+
+		if (getDetails() != null) {
+			output += " (" + getDetails() + ")";
+		}
+
+		return output;
+	}
+	
+	
+	public int getStartLine() {
+		return startLine;
+	}
+	public void setStartLine(int startLine) {
+		this.startLine = startLine;
+	}
+	public int getEndLine() {
+		return endLine;
+	}
+	public void setEndLine(int endLine) {
+		this.endLine = endLine;
+	}
+	public LogLevel getLogLevel() {
+		return logLevel;
+	}
+	public void setLogLevel(LogLevel logLevel) {
+		this.logLevel = logLevel;
+	}
+	public MessageClass getMessageClass() {
+		return messageClass;
+	}
+	public void setMessageClass(MessageClass messageClass) {
+		this.messageClass = messageClass;
+	}
+	public String getMessage() {
+		return message;
+	}
+	public void setMessage(String message) {
+		this.message = message;
+	}
+	public String getDetails() {
+		return details;
+	}
+	public void setDetails(String details) {
+		this.details = details;
+	}
+
+
+	public void setFilename(String filename) {
+		this.filename = filename;
+	}
+
+
+	public String getFilename() {
+		return filename;
+	}
+
+	public void setPrefix(String prefix) {
+		this.prefix = prefix;
+	}
+
+	public String getPrefix() {
+		return prefix;
+	}
+	
+}
Index: /trunk/org.etsi.common/src/org/etsi/common/logging/LoggingConfiguration.java
===================================================================
--- /trunk/org.etsi.common/src/org/etsi/common/logging/LoggingConfiguration.java	(revision 7)
+++ /trunk/org.etsi.common/src/org/etsi/common/logging/LoggingConfiguration.java	(revision 7)
@@ -0,0 +1,41 @@
+package org.etsi.common.logging;
+
+public class LoggingConfiguration {
+	private boolean showFullPath = false;
+	private boolean showFilename = true;
+	private boolean showMessageClass = true;
+	private boolean showDetails = true;
+	private String logOutputPrefix = "   ";
+	
+	public boolean isShowFullPath() {
+		return showFullPath;
+	}
+	public void setShowFullPath(boolean showFullPath) {
+		this.showFullPath = showFullPath;
+	}
+	public boolean isShowFilename() {
+		return showFilename;
+	}
+	public void setShowFilename(boolean showFilename) {
+		this.showFilename = showFilename;
+	}
+	public boolean isShowMessageClass() {
+		return showMessageClass;
+	}
+	public void setShowMessageClass(boolean showMessageClass) {
+		this.showMessageClass = showMessageClass;
+	}
+	public boolean isShowDetails() {
+		return showDetails;
+	}
+	public void setShowDetails(boolean showDetails) {
+		this.showDetails = showDetails;
+	}
+	public void setLogOutputPrefix(String logOutputPrefix) {
+		this.logOutputPrefix = logOutputPrefix;
+	}
+	public String getLogOutputPrefix() {
+		return logOutputPrefix;
+	}
+	
+}
Index: /trunk/org.etsi.common/src/org/etsi/common/logging/LoggingInterface.java
===================================================================
--- /trunk/org.etsi.common/src/org/etsi/common/logging/LoggingInterface.java	(revision 7)
+++ /trunk/org.etsi.common/src/org/etsi/common/logging/LoggingInterface.java	(revision 7)
@@ -0,0 +1,291 @@
+package org.etsi.common.logging;
+
+
+import org.etsi.common.MiscTools;
+
+public class LoggingInterface {
+	
+	public enum LogLevel {
+		//ORDER MATTERS
+		ERROR,
+		WARNING,
+		INFORMATION,
+		FIXME,
+		DEBUG;
+	}
+
+	public enum MessageClass {
+		//ORDER MATTERS
+		UNIVERSAL ("Universal", 0),
+		GENERAL ("General", 1),
+		NAMING ("Naming Conventions", 2),
+		DOCUMENTATION ("Code Documentation", 3),
+		LOGGING ("Log Statements", 4),
+		STRUCTURE ("Structure of Data", 5), 
+		STYLE ("Code Style", 6),
+		MODULARIZATION ("Test Suite Modularization", 7);
+		
+		private final String description;
+		private final int id;
+		private int occurenceCount = 0;
+		
+		MessageClass (String description, int id){
+			this.description = description;
+			this.id = id;
+		}
+
+		public String getDescription() {
+			return description;
+		}
+
+		public int getId() {
+			return id;
+		}
+
+		public void addOccurence() {
+			this.occurenceCount++;
+		}
+
+		public int getOccurenceCount() {
+			return occurenceCount;
+		}
+	}
+	
+	private String logSourceName = "";
+	private LogLevel maximumLogLevel = LogLevel.INFORMATION;
+	private LogLevel defaultLogLevel = LogLevel.INFORMATION;
+	private LoggingConfiguration configuration = new LoggingConfiguration();
+	
+	public LoggingInterface(LoggingConfiguration logConfiguration) {
+		this.setConfiguration(logConfiguration);
+	}
+	
+	public LoggingInterface(String logSourceName, LoggingConfiguration logConfiguration){
+		this(logConfiguration);
+		this.setLogSourceName(logSourceName);
+	}
+	public LoggingInterface(String logSourceName, LoggingConfiguration logConfiguration, LogLevel maximumLogLevel){
+		this(logSourceName, logConfiguration);
+		this.setMaximumLogLevel(maximumLogLevel);
+	}
+	
+	private LogMessage createLogMessage(LogLevel l, int startLine, int endLine, MessageClass messageClass, String message, String details){
+		LogMessage logMessage = new LogMessage();
+		logMessage.setPrefix(this.getConfiguration().getLogOutputPrefix());
+
+		if (this.getConfiguration().isShowFullPath()) {
+			logMessage.setFilename(this.getLogSourceName());
+		} else {
+			if (this.getConfiguration().isShowFilename()) {
+				logMessage.setFilename(MiscTools.getShortFilename(this
+						.getLogSourceName()));
+			}
+		}
+		logMessage.setStartLine(startLine);
+		logMessage.setEndLine(endLine);
+		logMessage.setLogLevel(l);
+		
+		messageClass.addOccurence();
+		
+		if (this.getConfiguration().isShowMessageClass()) {
+			logMessage.setMessageClass(messageClass);
+		} else {
+			logMessage.setMessageClass(null);
+		}
+		
+		logMessage.setMessage(message);
+
+		if (this.getConfiguration().isShowDetails() && details != null) {
+			logMessage.setDetails(details);
+		} else {
+			logMessage.setDetails(null);
+		}
+		
+		return logMessage;
+	}
+	
+/*	private String composeLogMessage(LogLevel l, int startLine, int endLine, MessageClass messageClass, String message, String details){
+		String composedLogMessage = "";
+
+		composedLogMessage += this.getConfiguration().getLogOutputPrefix();
+
+		if (this.getConfiguration().isShowFullPath()) {
+			composedLogMessage += this.getLogSourceName() + ": ";
+		} else {
+			if (this.getConfiguration().isShowFilename()) {
+				composedLogMessage += MiscTools.getShortFilename(this
+						.getLogSourceName())
+						+ ": ";
+			}
+		}
+
+		if (startLine >= endLine) {
+			composedLogMessage += startLine + ": ";
+		} else {
+			composedLogMessage += startLine + "-" + endLine + ": ";
+		}
+
+		composedLogMessage += l + ": ";
+
+		if (this.getConfiguration().isShowMessageClass()) {
+			composedLogMessage += messageClass.getDescription() + ": ";
+		}
+
+		composedLogMessage += message;
+
+		if (this.getConfiguration().isShowDetails() && details != null) {
+			composedLogMessage += "(" + details + ")";
+		}
+
+		return composedLogMessage;
+	}
+*/
+
+	public void logMessage(LogLevel l, int startLine, int endLine, MessageClass messageClass, String message, String details){
+		if (showLogLevel(l)){
+			LogMessage composedLogMessage = createLogMessage(l, startLine, endLine, messageClass, message, details);
+			outputLog(composedLogMessage);
+		}
+	}
+	
+	public void logMessage(LogLevel l, int startLine, int endLine, MessageClass messageClass, String message){
+		if (showLogLevel(l)){
+			LogMessage composedLogMessage = createLogMessage(l, startLine, endLine, messageClass, message, null);
+			outputLog(composedLogMessage);
+		}
+	}
+
+	public void logMessage(int startLine, int endLine, MessageClass messageClass, String message, String details){
+		if (showLogLevel(this.getDefaultLogLevel())){
+			LogMessage composedLogMessage = createLogMessage(this.getDefaultLogLevel(), startLine, endLine, messageClass, message, details);
+			outputLog(composedLogMessage);
+		}
+	}
+
+	
+	public void logMessage(int startLine, int endLine, MessageClass messageClass, String message){
+		if (showLogLevel(this.getDefaultLogLevel())){
+			LogMessage composedLogMessage = createLogMessage(this.getDefaultLogLevel(), startLine, endLine, messageClass, message, null);
+			outputLog(composedLogMessage);
+		}
+	}
+
+	
+//	private void outputLog(String composedLogMessage){
+//		System.out.println(composedLogMessage);
+//	}
+
+	private void outputLog(LogMessage composedLogMessage){
+		System.out.println(composedLogMessage.toString());
+	}
+
+	public void logWarning(int startLine, int endLine, MessageClass messageClass, String message){
+		if (showLogLevel(LogLevel.WARNING)){
+			LogMessage composedLogMessage = createLogMessage(LogLevel.WARNING, startLine, endLine, messageClass, message, null);
+			outputLog(composedLogMessage);
+		}
+	}
+
+	public void logWarning(int startLine, int endLine, MessageClass messageClass, String message, String details){
+		if (showLogLevel(LogLevel.WARNING)){
+			LogMessage composedLogMessage = createLogMessage(LogLevel.WARNING, startLine, endLine, messageClass, message, details);
+			outputLog(composedLogMessage);
+		}
+		
+	}
+	
+	public void logDebug(int startLine, int endLine, MessageClass messageClass, String message){
+		if (showLogLevel(LogLevel.DEBUG)){
+			LogMessage composedLogMessage = createLogMessage(LogLevel.DEBUG, startLine, endLine, messageClass, message, null);
+			outputLog(composedLogMessage);
+		}
+		
+	}
+	
+	public void logDebug(int startLine, int endLine, MessageClass messageClass, String message, String details){
+		if (showLogLevel(LogLevel.DEBUG)){
+			LogMessage composedLogMessage = createLogMessage(LogLevel.DEBUG, startLine, endLine, messageClass, message, details);
+			outputLog(composedLogMessage);
+		}
+		
+	}
+
+	public void logFix(int startLine, int endLine, MessageClass messageClass, String message){
+		if (showLogLevel(LogLevel.FIXME)){
+			LogMessage composedLogMessage = createLogMessage(LogLevel.FIXME, startLine, endLine, messageClass, message, null);
+			outputLog(composedLogMessage);
+		}
+		
+	}
+	
+	public void logFix(int startLine, int endLine, MessageClass messageClass, String message, String details){
+		if (showLogLevel(LogLevel.FIXME)){
+			LogMessage composedLogMessage = createLogMessage(LogLevel.FIXME, startLine, endLine, messageClass, message, details);
+			outputLog(composedLogMessage);
+		}
+		
+	}
+
+	
+	public void logError(int startLine, int endLine, MessageClass messageClass, String message){
+		if (showLogLevel(LogLevel.ERROR)){
+			LogMessage composedLogMessage = createLogMessage(LogLevel.ERROR, startLine, endLine, messageClass, message, null);
+			outputLog(composedLogMessage);
+		}
+	}
+	
+	public void logInformation(int startLine, int endLine, MessageClass messageClass, String message){
+		if (showLogLevel(LogLevel.INFORMATION)){
+			LogMessage composedLogMessage = createLogMessage(LogLevel.INFORMATION, startLine, endLine, messageClass, message, null);
+			outputLog(composedLogMessage);
+		}
+	}
+
+	public void logInformation(int startLine, int endLine, MessageClass messageClass, String message, String detail){
+		if (showLogLevel(LogLevel.INFORMATION)){
+			LogMessage composedLogMessage = createLogMessage(LogLevel.INFORMATION, startLine, endLine, messageClass, message, detail);
+			outputLog(composedLogMessage);
+		}
+	}
+
+	
+	public String getLogSourceName() {
+		return logSourceName;
+	}
+	
+		
+	public void setMaximumLogLevel(LogLevel maximumLogLevel) {
+		this.maximumLogLevel = maximumLogLevel;
+	}
+	
+	public LogLevel getMaximumLogLevel() {
+		return maximumLogLevel;
+	}
+
+	public boolean showLogLevel(LogLevel logLevel) {
+		boolean show = false;
+		if (logLevel.ordinal() <= this.getMaximumLogLevel().ordinal()){
+			show = true;
+		}
+		return show;
+	}
+
+	public void setConfiguration(LoggingConfiguration configuration) {
+		this.configuration = configuration;
+	}
+	public LoggingConfiguration getConfiguration() {
+		return configuration;
+	}
+	public void setDefaultLogLevel(LogLevel defaultLogLevel) {
+		this.defaultLogLevel = defaultLogLevel;
+	}
+	public LogLevel getDefaultLogLevel() {
+		return defaultLogLevel;
+	}
+	public void setLogSourceName(String logSourceName) {
+		this.logSourceName = logSourceName;
+	}
+
+
+	
+}
Index: /trunk/org.etsi.common/src/org/etsi/common/logging/LoggingStatistics.java
===================================================================
--- /trunk/org.etsi.common/src/org/etsi/common/logging/LoggingStatistics.java	(revision 7)
+++ /trunk/org.etsi.common/src/org/etsi/common/logging/LoggingStatistics.java	(revision 7)
@@ -0,0 +1,25 @@
+package org.etsi.common.logging;
+
+import java.util.HashMap;
+
+import org.etsi.common.logging.LoggingInterface.MessageClass;
+
+
+//TODO: currently not in use
+public class LoggingStatistics {
+	private HashMap<MessageClass, Integer> statsMap = new HashMap<MessageClass, Integer>();
+	
+	public LoggingStatistics(){
+		for (MessageClass c : MessageClass.values()){
+			this.statsMap.put(c, 0);
+		}
+	}
+	
+	public void addOccurence(MessageClass c){
+		this.statsMap.put(c, this.statsMap.get(c) + 1);
+	}
+	
+	public int getOccurences(MessageClass c){
+		return this.statsMap.get(c);
+	}
+}
Index: /trunk/t3d-examples/.project
===================================================================
--- /trunk/t3d-examples/.project	(revision 7)
+++ /trunk/t3d-examples/.project	(revision 7)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>t3d-examples</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+	</buildSpec>
+	<natures>
+	</natures>
+</projectDescription>
Index: /trunk/t3d-examples/basics/configuration.ttcn3
===================================================================
--- /trunk/t3d-examples/basics/configuration.ttcn3	(revision 7)
+++ /trunk/t3d-examples/basics/configuration.ttcn3	(revision 7)
@@ -0,0 +1,46 @@
+module configuration {
+	//import from types all;	
+	group ports{
+		type port samplePortM1 message{
+			inout charstring, integer
+		}
+		type port samplePortM2 message{
+			inout sampleType1
+		}
+	}
+
+	group test_components{
+		type component sampleComponent1{
+			port samplePortM1 p1
+			port samplePortM2 p2
+			timer t1
+		}
+		/*
+			@desc description
+		*/
+		type component sampleComponent3{
+			port samplePortM1 p1
+			port samplePortM2 p2
+		}
+		
+		type component sampleComponent2{
+			port samplePortM1 p1
+			port samplePortM2 p2
+			timer t1, t2, t3
+			const sampleType1 c1 := 1
+	
+		
+		}
+
+
+	}
+	//not used, not documented(?)
+	group components{
+		type component sampleComponentX{
+			port samplePortM1 p1
+			port samplePortM2 p2
+			timer t1, t2, t3
+			const sampleType1 c1 := 1
+		}
+	}
+}
Index: /trunk/t3d-examples/basics/functions.ttcn3
===================================================================
--- /trunk/t3d-examples/basics/functions.ttcn3	(revision 7)
+++ /trunk/t3d-examples/basics/functions.ttcn3	(revision 7)
@@ -0,0 +1,54 @@
+module functions {
+	import from types all;
+	import from configuration all;
+    group mtcFunctions {
+        /*
+           @desc Given the security cababilities of an UE (e.g. from an ATTACH
+           * REQUEST/UE network capabilities IE) this function creates a new value for
+           * the security capabilities which is invalid for the current UE. To achieve
+           * this, the original capabilities are inverted.
+           * @param p_SecurityCaps Security capabilities as reported by the UE.
+           @return Security capabilities which are invalid for the current UE.
+         */
+
+        function f1 ()
+        runs on sampleComponent1 {
+            p1.send ( integer:1 );
+            p2.receive ( charstring:"a" );
+        }
+         //@desc description
+         //@param par1, par2
+        function f2 ( 
+            integer par1, 
+            charstring par2
+        )
+        runs on sampleComponent1 {
+            p1.receive ( integer:par1 );
+            p2.send ( charstring:par2 );
+        }
+    } 
+
+    group ptcFunctions {
+        //*@desc description
+        function f3 ()
+        runs on sampleComponent2 {
+            p1.send ( integer:1 );
+            p2.receive ( charstring:"a" );
+        }
+        
+		/*
+         //@desc description
+         //@param par1, par2
+		*/
+
+        function f4 ( 
+            sampleType1 par1, 
+            sampleType2 par2
+        )
+        runs on sampleComponent2 {
+            p1.receive ( integer:par1 );
+            p2.send ( charstring:par2 );
+        }
+    } 
+
+}
Index: /trunk/t3d-examples/basics/import1.ttcn3
===================================================================
--- /trunk/t3d-examples/basics/import1.ttcn3	(revision 7)
+++ /trunk/t3d-examples/basics/import1.ttcn3	(revision 7)
@@ -0,0 +1,4 @@
+module import1 {
+	import from import2 all;
+	import from import4 all;
+}
Index: /trunk/t3d-examples/basics/import2.ttcn3
===================================================================
--- /trunk/t3d-examples/basics/import2.ttcn3	(revision 7)
+++ /trunk/t3d-examples/basics/import2.ttcn3	(revision 7)
@@ -0,0 +1,5 @@
+module import2 {
+	import from import3 all;
+	import from import1 all;
+	import from import4 all;
+}
Index: /trunk/t3d-examples/basics/import3.ttcn3
===================================================================
--- /trunk/t3d-examples/basics/import3.ttcn3	(revision 7)
+++ /trunk/t3d-examples/basics/import3.ttcn3	(revision 7)
@@ -0,0 +1,4 @@
+module import3 {
+	import from import1 all;
+	import from import4 all;
+}
Index: /trunk/t3d-examples/basics/import4.ttcn3
===================================================================
--- /trunk/t3d-examples/basics/import4.ttcn3	(revision 7)
+++ /trunk/t3d-examples/basics/import4.ttcn3	(revision 7)
@@ -0,0 +1,3 @@
+module import4 {
+	import from import1 all;
+}
Index: /trunk/t3d-examples/basics/localDependencies.ttcn3
===================================================================
--- /trunk/t3d-examples/basics/localDependencies.ttcn3	(revision 7)
+++ /trunk/t3d-examples/basics/localDependencies.ttcn3	(revision 7)
@@ -0,0 +1,53 @@
+module localDependencies {
+	
+	type enumerated enumtype {
+		enum1, enum2
+	}
+	type enumerated enumtype2 {
+		enum2, enum1
+	}
+	
+	modulepar {
+		typeX pp1, pp2 := int2string(2), pp4:=someConst;
+		typeY pp31 := someConst, pp5;
+		
+	}
+	
+	modulepar typeZ pp6, pp7;
+	
+	//* @desc 1
+	template typeX templateY :={
+		fieldZ := 1
+	} 
+	
+	//* @desc 1
+	function f1(typeX par1 := templateY){
+		var enumtype ve1;
+		ve1:=enum1;
+	  	if (ve1 == enum1){
+		}
+		if (enum1 > enum2){
+//		
+		}
+		f2();
+		f2();
+		f3();
+	}
+	
+	function fr1(enumtype p1) return enumtype2{
+		return enum1; 
+	}
+	
+	function f2(){
+		//f1();
+		f3();
+		fx(cx); 
+		fr1(enum1) 
+		if (enum2 == fr1(1)){
+		
+		}
+		
+	}
+	external function fx(typeX p1);
+	external const integer cx;
+}
Index: /trunk/t3d-examples/basics/main.ttcn3
===================================================================
--- /trunk/t3d-examples/basics/main.ttcn3	(revision 7)
+++ /trunk/t3d-examples/basics/main.ttcn3	(revision 7)
@@ -0,0 +1,14 @@
+module main {
+	import from configuraiton all;
+	import from functions all;
+	import from types all;
+	import from templates all;
+	import from types all;
+	import from testacases all; 
+	
+	control {
+		execute(tc1());
+		execute(tc2());
+	}
+	
+}
Index: /trunk/t3d-examples/basics/modulepars.ttcn3
===================================================================
--- /trunk/t3d-examples/basics/modulepars.ttcn3	(revision 7)
+++ /trunk/t3d-examples/basics/modulepars.ttcn3	(revision 7)
@@ -0,0 +1,50 @@
+// * @version 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.0
+// * @author John Doe
+// * @author John Doe
+// * @remark this is the module
+
+module modulepars{
+
+// * @version 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.0
+// * @author John Doe
+// * @author John Doe
+// * @remark this is the modulepar
+modulepar{
+       octetstring px_AccessPointName;
+       B16_Type px_AuthAMF;
+       B128_Type px_AuthK := oct2bit ( '000102030405060708090A0B0C0D0E0F'O );
+       integer px_AuthN := 127;
+       hexstring px_IMEI_Def;
+       hexstring px_IMSI_Def := '001010123456063'H;
+       charstring px_IP_Address;
+       B3_Type px_NAS_CipheringAlgorithm := '001'B;
+       B3_Type px_NAS_IntegrityProtAlgorithm := '001'B;
+       boolean px_RLC_SDU_Buffering := true;
+       CipheringAlgorithm_Type px_RRC_CipheringAlgorithm := eea0;
+       IntegrityProtAlgorithm_Type px_RRC_IntegrityProtAlgorithm := eia1;
+       integer px_SupportedEutraBands := 1;
+       integer px_SupportedInterRatBands := 1;
+       B128_Type px_eAuthRAND := oct2bit ( 'A3DE0C6D363E30C364A4078F1BF8D577'O );
+       Dl_Bandwidth_Type px_eDLChannelBandwidth := n25;
+       NAS_Mcc px_eJapanMCC_Band6 := '442'H;
+       FrequencyBand_Type px_ePrimaryFrequencyBand := 1;
+       FrequencyBand_Type px_eSecondaryFrequencyBand := 2;
+       Ul_Bandwidth_Type px_eULChannelBandwidth := n25;
+     };
+     
+     modulepar integer bla := 127;
+     
+     modulepar integer bla11 := 127, bla12 := 127;
+     
+     modulepar CipheringAlgorithm_Type bla21, bla22;
+     
+     
+     modulepar{
+         integer blax := 127;
+    	 integer blax11 := 127, blax12 := 127;
+    	 CipheringAlgorithm_Type blax21, blax22;     
+     }
+     
+     modulepar integer thisisalongmoduleparameternamethatgoesonandonandonandonandonandonandonandonandonandonandonandonandonandonandonandonandonandonandonandonandonandonandonandonandonandonandonandonandonandonandonandonEND := 234243623463563563635543535654656;
+     
+}
Index: /trunk/t3d-examples/basics/templates.ttcn3
===================================================================
--- /trunk/t3d-examples/basics/templates.ttcn3	(revision 7)
+++ /trunk/t3d-examples/basics/templates.ttcn3	(revision 7)
@@ -0,0 +1,15 @@
+module templates {
+	group g1{
+		group sub_g1{
+		
+		}
+		
+		group sub_g2{
+		
+		}
+	}
+	
+	group g2{
+	
+	}
+}
Index: /trunk/t3d-examples/basics/templates2.ttcn3
===================================================================
--- /trunk/t3d-examples/basics/templates2.ttcn3	(revision 7)
+++ /trunk/t3d-examples/basics/templates2.ttcn3	(revision 7)
@@ -0,0 +1,15 @@
+module templates {
+	group g1x{
+		group sub_g1x{
+		
+		}
+		
+		group sub_g2x{
+		
+		}
+	}
+	
+	group g2x{
+	
+	}
+}
Index: /trunk/t3d-examples/basics/testcases.ttcn3
===================================================================
--- /trunk/t3d-examples/basics/testcases.ttcn3	(revision 7)
+++ /trunk/t3d-examples/basics/testcases.ttcn3	(revision 7)
@@ -0,0 +1,30 @@
+module testcases {
+	import from types all;
+	import from configuration all;
+	import from functions all;
+	testcase tc1() runs on sampleComponent1 system sampleComponent3{
+		map(mtc:p1, system:p1)
+		map(mtc:p2, system:p2)
+		
+		f1();
+		f2(1, "a")
+		
+		unmap(mtc:p1, system:p1)
+		unmap(mtc:p2, system:p2)
+		
+	}
+	
+	testcase tc2() runs on sampleComponent1 system sampleComponent3{
+		map(mtc:p1, system:p1)
+		var sampleComponent2 component2, component3;
+		component2 := sampleComponent2.create;
+		component3 := sampleComponent2.create;
+		
+		component2.start(f3());
+		component3.start(f4(1, "a"));
+		
+		unmap(mtc:p1, system:p1)
+
+	}
+	
+}
Index: /trunk/t3d-examples/basics/types.ttcn3
===================================================================
--- /trunk/t3d-examples/basics/types.ttcn3	(revision 7)
+++ /trunk/t3d-examples/basics/types.ttcn3	(revision 7)
@@ -0,0 +1,21 @@
+module types {
+	
+	group subtypes {
+		type integer sampleType1 (0,1,2,3);
+		type charstring sampleType2 ("a", "b", "c")
+	}
+	group records {
+		type record sampleType3 {
+			integer field1,
+			charstring field2
+		}
+		type record sampleType4 {
+			integer field1,
+			charstring field2,
+			boolean field3
+			
+		}
+
+
+	}
+}
Index: /trunk/t3d-examples/t3dtest/Examplemodule.ttcn
===================================================================
--- /trunk/t3d-examples/t3dtest/Examplemodule.ttcn	(revision 7)
+++ /trunk/t3d-examples/t3dtest/Examplemodule.ttcn	(revision 7)
@@ -0,0 +1,28 @@
+ /*
+  * @author John Doe
+  * @desc This is an example of a module in ttcn-3
+  */
+ module Examplemodule {
+ const integer con1 :=1, con2:=2;
+ 
+ 
+ import from groupTest recursive all;
+ import from functionalityTest {group types};
+ import from undocumentedParameters all;
+ 
+ 	group ExampleGroup {
+ 		/*
+ 		* @author John Doe
+ 		* @author Jane Doe
+ 		* @version v0.1.4
+		* @remark an embedded tag is used here, @see ExampleFunction
+ 		*/
+ 		testcase ExampleTestcase() runs on Examplecomponent{
+ 			// TTCN-3 testcase code
+ 		}
+ 	}
+ 	function ExampleFunction (in charstring par1, out charstring par2)
+ 	return boolean {
+ 		// TTCN-3 function code
+ 	}
+ }
Index: /trunk/t3d-examples/t3dtest/commentTest.ttcn
===================================================================
--- /trunk/t3d-examples/t3dtest/commentTest.ttcn	(revision 7)
+++ /trunk/t3d-examples/t3dtest/commentTest.ttcn	(revision 7)
@@ -0,0 +1,332 @@
+/**
+ *  @author     STF 339
+ *  @author     STF 341
+ *  @version  	$Id: AtsDpmr_Types.ttcn 87 2008-02-22 15:53:29Z petersenj $
+ *  @desc       Data type @see functionalityTest.noelement BLA BLA BLA definitions for @see f_1 information elements for digital Public @see functionalityTest.f_1
+ *              Mobile Radio (dPMR) messages @see f_1 
+ *  @see	s_test1
+ *  @see	f_1
+ *  @see	functionalityTest.f_1
+ *  @see	onality.f_1
+ *  @see	noelement
+ *  @see	functionalityTest.noelement
+ *  @see	functionalityTest.1
+ *  @see	1
+ *  @remark
+ */
+module comment_Test {
+// useless
+/*
+		 * @desc	desc1_line1 desc1_line1 desc1_line1 desc1_line1 desc1_line1  @see noelement @see functionalityTest.f_1 desc1_line1 desc1_line1 desc1_line1 desc1_line1 desc1_line1 desc1_line1 desc1_line1 
+	*	 *        desc1_line2 desc1_line2  @see functionalityTest.noelement BLA BLA BLA desc1_line2 @see functionalityTest.f_1 desc1_line2 desc1_line2 desc1_line2  @see functionalityTest.f_1
+		 * @param	param1_line1 param1_line1 param1_line1 param1_line1 @see f_1
+	*	 *          param1_line2 param1_line2 param1_line2 **stars** @see f_test
+		 * @param	param2_line1  @see f_test param2_line1  
+		@remark THIS IS FALSE
+		* @remark
+		 */
+// * @remark THIS IS IMPORTANT
+//useless
+    /*
+		 * @desc	desc2_line1 @see functionalityTest.f_1 desc2_line1 desc2_line1 desc2_line1 desc2_line1 desc2_line1 desc2_line1 desc2_line1 desc2_line1 
+		 *          desc2_line2 desc2_line2 desc2_line2 desc2_line2 desc2_line2 desc2_line2    
+		 * @desc	desc3_line1 desc3_line1 desc3_line1 desc3_line1 @see f_test
+		 *          desc3_line2   
+		  @param	param3_line1 param3_line1 param3_line1 param3_line1     
+		 *          param3_line2 param3_line2 param3_line2   
+		  @param	param4_line1  param4_line1  
+		 */
+		 /*
+		 //		 * @param	param5_line1 param5_line1 param5_line1 param5_line1 
+		           param5_line2 param5_line2 param5_line2 
+		  @param	param6_line1  param6_line1 
+ @desc	desc4_line1 desc4_line1 desc4_line1 desc4_line1 desc4_line1   
+//		 *          desc4_line2 desc4_line2 desc4_line2   
+		 */
+// useless
+		function f_test ( inout StringStack p_stack, in    charstring  p_item ) {
+			p_stack.stringItems[p_stack.stackSize] := p_item;
+			p_stack.stackSize := p_stack.stackSize + 1;
+		}
+
+		function f_1 ( inout StringStack p_stack, in    charstring  p_item ) {
+			p_stack.stringItems[p_stack.stackSize] := p_item;
+			p_stack.stackSize := p_stack.stackSize + 1;
+		}
+
+
+
+	/*
+
+	*	@desc text text text text text text text 
+	*	text text text text text text text text  
+	*	text text text text text text text text  
+	*	text text text text text text text text  
+	*	text text text text text text text text  
+	*	text text text text text text text text  
+	*	text text text text text text text text  
+	*	text text text text text text text text  
+	*	text text text text text text text text  
+	*	text text text text text text text text  
+	*	text text text text text text text text  
+	*	text text text text text text text text  
+	*	text text text text text text text text  
+	*	text text text text text text text text  
+	*	text text text text text text text text  
+	*	text text text text text text text text  
+	*	text text text text text text text text  
+	*	text text text text text text text text  
+	*	text text text text text text text text  
+	*	text text text text text text text text  
+	*	text text text text text text text text  
+	*	text text text text text text text text  
+	*	text text text text text text text text  
+	*	text text text text text text text text  
+	*	text text text text text text text text  
+	*	text text text text text text text text  
+	*	text text text text text text text text  
+	*	text text text text text text text text  
+	*	text text text text text text text text  
+	*	text text text text text text text text  
+	*	text text text text text text text text  
+	*	text text text text text text text text 
+
+	*/
+		function f_test2 ( inout StringStack p_stack, in    charstring  p_item ) runs on floor return integer{
+			p_stack.stringItems[p_stack.stackSize] := p_item;
+			p_stack.stackSize := p_stack.stackSize + 1;
+		}
+
+
+	/*
+
+	*	@desc DDDDDDDDDDDescription @see DontSee
+	*	@author Author1
+	*	@author Author2
+	*	@config Config
+	*	@exception Exception
+	*	@member Member members
+	*	@param Parameter1 param1_desc
+	*	@param Parameter2 param2_desc
+	*	@purpose Purpose
+	*	@remark Remark
+	*	@return Return
+	*	@see See
+	*	@since Since
+	*	@status Status
+	*	@url http://url.tld
+	*	@verdict Verdict
+	*	@version Version
+	
+
+	*/
+
+group alltest{
+	/*
+
+	*	@desc Description @see DontSee
+	*	@author Author1
+	*	@author Author2
+	*	@config Config
+	*	@exception Exception
+	*	@member Member members
+	*	@param Parameter1 param1_desc
+	*	@param Parameter2 param2_desc
+	*	@purpose Purpose
+	*	@remark Remark blabla bla @url http://www.uni-goettingen.de bla bla @url http://www.uni-goettingen.de
+	*	@return Return
+	*	@see See
+	*	@since Since
+	*	@status Status
+	*	@url http://url.tld
+	*	@verdict Verdict
+	*	@version Version
+	
+
+	*/
+		function f_test3 ( inout StringStack p_stack, in    charstring  p_item ) {
+			p_stack.stringItems[p_stack.stackSize] := p_item;
+			p_stack.stackSize := p_stack.stackSize + 1;
+		}
+
+
+	/*
+
+	*	@desc Description @see DontSee
+	*	@author Author1
+	*	@author Author2
+	*	@config Config
+	*	@exception Exception
+	*	@member Member members
+	*	@param Parameter1 param1_desc
+	*	@param Parameter2 param2_desc
+	*	@purpose Purpose
+	*	@remark Remark
+	*	@return Return
+	*	@see See
+	*	@since Since
+	*	@status Status
+	*	@url http://url.tld
+	*	@verdict Verdict
+	*	@version Version
+	
+
+	*/
+
+altstep a_test1() runs on floor
+    {
+      [] server.receive
+        {
+          setverdict(fail);
+          stop
+        }
+      [] client.receive
+        {
+          setverdict(fail);
+          stop
+        }
+      [] secServer.receive
+        {
+          setverdict(fail);
+          stop
+        }
+      [] secClient.receive
+        {
+          setverdict(fail);
+          stop
+        }
+      [] ipCANctl.receive
+        {
+          setverdict(inconc);
+          stop
+        }
+      [] ipConf.receive
+        {
+          setverdict(inconc);
+          stop
+        }
+      [] TGuard.timeout 
+	    {setverdict(inconc); stop}
+      [] any timer.timeout 
+	    {setverdict(fail); stop}
+    }
+
+	/*
+
+	*	@desc Description @see DontSee
+	*	@author Author1
+	*	@author Author2
+	*	@config Config
+	*	@exception Exception
+	*	@member Member members
+	*	@param Parameter1 param1_desc
+	*	@param Parameter2 param2_desc
+	*	@purpose Purpose
+	*	@remark Remark
+	*	@return Return
+	*	@see See
+	*	@since Since
+	*	@status Status
+	*	@url http://url.tld
+	*	@verdict Verdict
+	*	@version Version
+	
+
+	*/
+
+testcase t_test1() runs on MTC system SystemInterface {
+   // Mobile terminated location request/ UE-Based GPS
+   
+   // Test Purpose: 
+   // To verify that when the UE receives a REGISTER message during an established CS call, 
+   // containing a LCS Location Notification Invoke component set to NotifyLocationAllowed, 
+   // the UE displays information about the LCS client correctly and sends a RELEASE COMPLETE message 
+   // containing a LocationNotification return result with verificationResponse set to permissionGranted.  
+   // To verify that the UE responds with a Measurement Report message containing UE location when the 
+   // assistance data is divided between several Measurement Control messages using Measurement Command ?Modify?.
+   
+   var UTRANComponent UtranPTC := UTRANComponent.create alive;
+   var GERANComponent GeranPTC := null;
+   
+   var MTC_mirror MtcPTC_mirror;
+ 	 var UTRANComponent_mirror UtranPTC_mirror;
+	 var GERANComponent_mirror GeranPTC_mirror;
+
+	 if (pc_is_Intra==true) {
+	   MtcPTC_mirror:=MTC_mirror.create;
+	   UtranPTC_mirror:=UTRANComponent_mirror.create alive;
+	   GeranPTC_mirror:=GERANComponent_mirror.create alive;
+	 } else {
+	   MtcPTC_mirror:=null;
+	   UtranPTC_mirror:=null;
+	   GeranPTC_mirror:=null;
+	 }
+
+	 MTC_Main_Map(self, MtcPTC_mirror); // Maps or connects
+	 UTRAN_Map(UtranPTC, UtranPTC_mirror);  // Maps or connects
+	 MTC_ConnectPTCs(self, UtranPTC, GeranPTC);
+    
+	 if (MtcPTC_mirror!=null) {
+	   MtcPTC_mirror.start(TC_17_2_4_1_asPTC_mirror(UtranPTC_mirror, GeranPTC_mirror));
+	 }
+    
+	 UtranPTC.start(TC_17_2_4_1_UTRAN());
+	 MTC_Main_Behaviour();
+ }
+
+	/*
+
+	*	@desc Description @see DontSee
+	*	@author Author1
+	*	@author Author2
+	*	@config Config
+	*	@exception Exception
+	*	@member Member members
+	*	@param Parameter1 param1_desc
+	*	@param Parameter2 param2_desc
+	*	@purpose Purpose
+	*	@remark Remark
+	*	@return Return
+	*	@see See
+	*	@since Since
+	*	@status Status
+	*	@url http://url.tld
+	*	@verdict Verdict
+	*	@version Version
+	
+
+	*/
+
+	signature s_test1() return returntype;
+
+/*
+	* @config blabla
+	* @config blabla
+
+	* @purpose blabla
+	* @purpose blabla
+	
+	* @return blabla
+	* @return blabla
+	
+	* @since blabla
+	* @since blabla
+	
+	* @status blabla
+	* @status blabla
+	
+	* @version blabla
+	* @version blabla
+
+
+*/
+	signature s_toomanytags() return integer;
+
+}
+  // * @desc identical tag here
+signature s_identicalDescTags_1() return integer;
+
+  // * @desc identical tag here
+signature s_identicalDescTags_1() return integer;
+
+}
Index: /trunk/t3d-examples/t3dtest/functionalitytest.ttcn
===================================================================
--- /trunk/t3d-examples/t3dtest/functionalitytest.ttcn	(revision 7)
+++ /trunk/t3d-examples/t3dtest/functionalitytest.ttcn	(revision 7)
@@ -0,0 +1,76 @@
+/**
+ *  @author     STF 340
+ *  @version  	$Id: AtsDpmr_Types.ttcn 87 2008-02-22 15:53:29Z petersenj $
+ *  @desc       Data type definitions for information elements for digital Public
+ *              Mobile Radio (dPMR) messages
+ */
+module functionalityTest {
+
+	import from Examplemodule {group ExampleGroup};
+	import from Examplemodule {function ExampleFunction, ExampleFunction; const con2};
+	import from Examplemodule {const con1};
+	import from Examplemodule all except {const con1, con2; function all};
+	import from Examplemodule recursive all;
+	
+	
+	group types{
+
+		group Structured{
+			type component Comp{};
+
+			type record Rec{};
+	
+			type integer Int;
+	
+			type set of Rec SetOfRec;
+
+			type port Port message{
+				in Rec;
+				out Rec;
+			};
+
+			type enumerated Enum{ Rec, Int};
+
+			type set Set{};
+
+			type record of Rec RecordOfRec;
+
+			type union Union{RecordOfRec un1, SetOfRec un2};
+
+		}
+		group subtype{
+			type Rec RecType;
+
+			type integer IntType;
+
+		}
+
+	}
+
+	group functions{
+
+		function f_1(Comp par1, Rec par2, boolean par3) runs on Rec{
+			var Port var1;
+			if(par3){
+
+			} else{
+
+			}
+		}
+
+
+	}
+
+
+
+	group constants{
+
+		const integer c1 := 1, c2 := 2; 
+
+
+	}
+
+
+
+
+}
Index: /trunk/t3d-examples/t3dtest/grouptest.ttcn
===================================================================
--- /trunk/t3d-examples/t3dtest/grouptest.ttcn	(revision 7)
+++ /trunk/t3d-examples/t3dtest/grouptest.ttcn	(revision 7)
@@ -0,0 +1,41 @@
+/**
+ *  @author     STF 340
+ *  @version  	$Id: AtsDpmr_Types.ttcn 87 2008-02-22 15:53:29Z petersenj $
+ *  @desc       Data type definitions for information elements for digital Public
+ *              Mobile Radio (dPMR) messages
+ */
+module groupTest {
+ import from functionalityTest all;
+	group group1{
+		group group1_1{
+			group group1_1_1{
+			}
+		}
+		group group1_2{
+		}
+		group group1_3{
+			group group1_3_1{
+				modulepar integer y:=4;
+				group group1_3_1_1{
+					modulepar integer x:=3;
+				}
+				group group1_3_1_2{
+				}
+			}
+		}
+
+
+	}
+
+	group group2{
+	}
+
+	group group3{
+		group group3_1{
+		}
+		group group3_2{
+		}
+
+	}
+
+}
Index: /trunk/t3d-examples/t3dtest/module_with_moduleParameters.ttcn3
===================================================================
--- /trunk/t3d-examples/t3dtest/module_with_moduleParameters.ttcn3	(revision 7)
+++ /trunk/t3d-examples/t3dtest/module_with_moduleParameters.ttcn3	(revision 7)
@@ -0,0 +1,110 @@
+module module_with_moduleParameters {
+	modulepar boolean par1 := true;
+	modulepar boolean par2 := true;
+	modulepar boolean par3 := false;
+	
+	modulepar boolean par41, par42, par43 := false;
+	
+	const integer con1 := 1, con2 := 2;
+	
+	
+	
+	testcase t_1() runs on bla system blubb{
+	
+		if(f_1(par2)){
+	
+		}
+	
+		if(f_3()){
+	
+		}
+	}
+	
+	testcase t_2(boolean tpar) runs on bla system blubb{
+	
+	}
+	
+	function f_1( boolean fpar){
+		var boolean var1 := f_2(fpar);
+		return f_5(var1, var1);
+	}
+	function f_2(boolean fpar){
+		return (fpar == false);
+	}
+	function f_3(){
+		var boolean var1 := f_4();
+		t_2(var1);
+		return var1;
+	}
+	
+	function f_4(){
+		return par3;
+	}
+	function f_5(boolean  fpar, boolean  fpar){
+		return (fpar == false);
+	}
+	
+	
+		testcase testcaseAll() runs on MTC system SystemInterface {
+	 if (par1==true) {} else {}
+	 if (par2==true) {} else {}
+	 if (par3==true) {} else {}
+	 if (par41==true) {} else {}
+	 if (par42==true) {} else {}
+	 if (par43==true) {} else {}
+	 if (con1==1) {} else {}
+	 if (con2==1) {} else {}
+	 }
+	
+	testcase testcase1() runs on MTC system SystemInterface {
+	 if (par1==true) {} else {}}	
+
+	testcase testcase1_2() runs on MTC system SystemInterface {
+	 if (par1==true) {} else {}
+	 if (par2==true) {} else {}}
+	 
+	 	
+	testcase testcase2() runs on MTC system SystemInterface {
+	 if (par2==true) {} else {}}
+	 
+	testcase testcase3() runs on MTC system SystemInterface {
+	 if (par3==true) {} else {}}
+	 
+	testcase testcase4() runs on MTC system SystemInterface {}
+
+
+ 	function function1 ()
+ 	return boolean {
+ 		return par1;
+ 	}
+ 	
+ 	 	function function2 ()
+ 	return boolean {
+ 		return par2;
+ 	}
+
+ 	 	function function3 ()
+ 	return boolean {
+ 		return par3;
+ 	}
+ 	
+ 	altstep altstep1(){
+ 	
+ 	}
+ 	
+ 	
+ 	testcase testcaseloop1_1() runs on MTC system SystemInterface {function1();}
+ 	testcase testcaseloop1_2() runs on MTC system SystemInterface {testcaseloop1_3();testcaseloop1_1()}
+ 	testcase testcaseloop1_3() runs on MTC system SystemInterface {testcaseloop1_2();}
+ 	
+testcase testcasef1() runs on MTC system SystemInterface {function1();}
+testcase testcasef2() runs on MTC system SystemInterface {function2();}
+testcase testcasef3() runs on MTC system SystemInterface {function3();}
+
+testcase testcase_test() runs on MTC system SystemInterface{function_indirect1(par2)};
+function function_indirect2(boolean par){};
+
+
+testcase testcasetcf1() runs on MTC system SystemInterface {testcasef1();}
+
+}
Index: /trunk/t3d-examples/t3dtest/undocumentedParameters.ttcn3
===================================================================
--- /trunk/t3d-examples/t3dtest/undocumentedParameters.ttcn3	(revision 7)
+++ /trunk/t3d-examples/t3dtest/undocumentedParameters.ttcn3	(revision 7)
@@ -0,0 +1,12 @@
+module undocumentedParameters {
+
+
+// * @param newparam1 paramdescription
+// * @param newparam5 paramdescription
+// * @param newparam3 paramdescription
+import from module_with_moduleParameters recursive all;
+			function f_test2 (inout StringStack newparam1, in charstring  newparam2, in charstring  newparam3, in charstring  newparam4) runs on floor return integer{
+			p_stack.stringItems[p_stack.stackSize] := p_item;
+			p_stack.stackSize := p_stack.stackSize + 1;
+		}
+}
Index: /trunk/t3d/.classpath
===================================================================
--- /trunk/t3d/.classpath	(revision 7)
+++ /trunk/t3d/.classpath	(revision 7)
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="lib" path="lib/org.eclipse.core.resources_3.4.0.v20080604-1400.jar"/>
+	<classpathentry kind="lib" path="lib/org.eclipse.core.runtime_3.4.0.v20080512.jar"/>
+	<classpathentry kind="lib" path="lib/org.eclipse.equinox.common_3.4.0.v20080421-2006.jar"/>
+	<classpathentry kind="lib" path="lib/com.yourkit.javaprofiler.controller_7.0.4.jar"/>
+	<classpathentry kind="lib" path="lib/org.eclipse.osgi_3.4.0.v20080605-1900.jar"/>
+	<classpathentry kind="lib" path="lib/stringtemplate.jar"/>
+	<classpathentry kind="lib" path="lib/de.ugoe.cs.swe.trex.antlr_2.7.6.jar"/>
+	<classpathentry kind="lib" path="lib/saxon9-dom.jar"/>
+	<classpathentry kind="lib" path="lib/saxon9-dom4j.jar"/>
+	<classpathentry kind="lib" path="lib/saxon9-jdom.jar"/>
+	<classpathentry kind="lib" path="lib/saxon9-s9api.jar"/>
+	<classpathentry kind="lib" path="lib/saxon9-sql.jar"/>
+	<classpathentry kind="lib" path="lib/saxon9-xom.jar"/>
+	<classpathentry kind="lib" path="lib/saxon9-xpath.jar"/>
+	<classpathentry kind="lib" path="lib/saxon9-xqj.jar"/>
+	<classpathentry kind="lib" path="lib/saxon9.jar"/>
+	<classpathentry kind="lib" path="lib/commons-lang-2.4.jar"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/de.ugoe.cs.swe.trex.core"/>
+	<classpathentry kind="lib" path="lib/xpp3_min-1.1.4c.jar"/>
+	<classpathentry kind="lib" path="lib/xstream-1.3.1.jar"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/org.etsi.common"/>
+	<classpathentry kind="lib" path="lib/org.etsi.common.jar"/>
+	<classpathentry kind="lib" path="lib/commons-cli-1.2.jar"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
Index: /trunk/t3d/.project
===================================================================
--- /trunk/t3d/.project	(revision 7)
+++ /trunk/t3d/.project	(revision 7)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>t3d</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
Index: /trunk/t3d/build.xml
===================================================================
--- /trunk/t3d/build.xml	(revision 7)
+++ /trunk/t3d/build.xml	(revision 7)
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<project name="test" default="compile" basedir=".">
+
+    <property name="src" value="src"/>
+    <property name="bin" value="bin"/>
+    <property name="lib" value="lib"/>
+    <property name="dist" value="dist"/>
+    <property name="antlib" value="antlib"/>
+    <property name="nsis" value="nsis"/>
+    <property name="cp" value="${lib}/fop.jar:${lib}/commons-lang-2.4.jar:${lib}/com.yourkit.javaprofiler.controller_7.0.4.jar:${lib}/de.ugoe.cs.swe.trex.antlr_2.7.6.jar:${lib}/org.eclipse.core.resources_3.4.0.v20080604-1400.jar:${lib}/org.eclipse.core.runtime_3.4.0.v20080512.jar:${lib}/org.eclipse.equinox.common_3.4.0.v20080421-2006.jar:${lib}/org.eclipse.osgi_3.4.0.v20080605-1900.jar:${lib}/stringtemplate.jar:${lib}/xstream-1.3.1.jar:${lib}/xpp3_min-1.1.4c.jar:${lib}/commons-cli-1.2.jar:${lib}/org.etsi.common.jar:${lib}/de.ugoe.cs.swe.trex.core_0.6.0.200810271154.jar"/>
+
+    <taskdef name="nsis" classname="net.sf.nsisant.Task">
+        <classpath location="${antlib}/nsisant-1.2.jar"/>
+    </taskdef>
+
+	
+	<target name="init">
+        <mkdir dir="${bin}"/>
+    </target>
+
+   	<target name="compile" depends="init">
+        <javac srcdir="${src}" destdir="${bin}" classpath="${cp}"/>
+    </target>
+
+    <target name="clean" description="Removes previous build">
+      <delete includeEmptyDirs="true">
+        <fileset dir="${bin}"/>
+      </delete>
+    </target>
+
+	<target name="make-dist" depends="compile" description="Creates an T3D distribution directory">
+        <echo>Building T3D Distribution in ${dist}...</echo>
+        <delete includeEmptyDirs="true">
+            <fileset dir="${dist}"/>
+        </delete>
+        <jar destfile="${lib}/t3d.jar" basedir="${bin}/"/> 
+        <mkdir dir="${dist}"/>
+        <mkdir dir="${dist}/lib"/>
+		<copy file="t3d" tofile="${dist}/t3d"/>
+		<copy file="t3d.bat" tofile="${dist}/t3d.bat"/>
+        <copy todir="${dist}/lib">
+        	<fileset dir="${lib}"/>
+        </copy>
+    </target>
+	
+    <target name="nsis" depends="make-dist" description="Creates an NSIS Installer from the dist directory">
+        <nsis script="${nsis}/t3d.nsi" verbosity="4" out="${nsis}/build.log" noconfig="yes">
+            <define name="VERSION" value="2.1"/>
+            <scriptcmd cmd="AutoCloseWindow true"/>
+        </nsis>
+    </target>
+	
+	
+	
+</project>
Index: /trunk/t3d/css/doc.css
===================================================================
--- /trunk/t3d/css/doc.css	(revision 7)
+++ /trunk/t3d/css/doc.css	(revision 7)
@@ -0,0 +1,374 @@
+/*
+Navigation bar:
+	div_views: contains list of all views and possible toggling options
+	div_modules: contains list of TTCN3 modules
+	div_index: contains list of TTCN3 elements
+	
+p_header: contains path navigation
+
+div_content: contains page content
+	div_element: contains source code of element in Main View
+	div_comment: contains information from T3D comments
+	div_statistics: contains statistics in index.html
+	div_import: contains import table in Import View
+	div_mp: contains tables in ModuleParameter/Testcase View
+*/
+@media screen{
+body{
+	background:#FFFFFF;
+	font-family: Arial, Helvetica;
+	color:#000000;
+	margin:0;
+	border:0;
+	padding:0;
+	height:100%; 
+	max-height:100%;
+	overflow: auto; 
+}
+
+#div_modules, #div_index, #div_content{
+	overflow:auto;
+}
+
+#div_views, #div_index, #div_modules{
+	background-color:#F3F3E7 !important;
+	padding-left:10px;
+	font-size:12px;
+}
+
+#div_element, #div_comment, #div_import, #div_mp, #div_statistics{
+	font-size:12px;
+}
+
+#div_content{
+  border:1px solid #000000;
+  background-color:#FFFFFF;
+  position:fixed; 
+  top:60px;
+  left:25%;
+  right:1%;
+  bottom:40px; 
+  overflow:auto;
+  padding:2px;
+}
+
+
+#div_import, #div_mp, #div_statistics, #div_comment, #div_element, #div_statistics{
+	border-top:1px solid #000000;
+	border-bottom:1px solid #000000;
+}
+
+#div_import, #div_mp, #div_statistics{
+  background-color:#F3F3E7 !important;
+}
+
+#div_views{
+  border:1px solid #000000;
+  position:fixed; 
+  top:10px;
+  left:1%;
+  bottom:40px;
+  width:22%; 
+  overflow:auto; 
+
+}
+
+#div_modules{
+  border:1px solid #000000;
+  position:fixed; 
+  top:100px;
+  left:1%;
+  bottom:60%; 
+  width:22%; 
+  overflow:auto; 
+}
+
+#div_index{
+  border:1px solid #000000;
+  position:fixed; 
+  top:40%;
+  left:1%;
+  bottom:40px;
+  width:22%; 
+  overflow:auto;
+}
+
+#div_comment, #div_element, #div_statistics{
+	background-color:#F3F3E7;
+	padding:15px;
+	padding-top:0px;
+	padding-bottom:0px;
+	margin-bottom:20px;
+}
+
+#p_header a {
+	color:#AAA;
+}
+
+#p_header a:hover {
+	color:#FFF;
+}
+
+#p_t3dversion{
+	right:1%;
+	position:absolute;
+	bottom:1px;
+	text-align:right;
+	font-size:10px;
+}
+
+#path{
+	font-size:10px;
+}
+
+#p_header{
+  border:1px solid #000000;
+  font-size:15px;
+  position:absolute; 
+  top:10px; 
+  left:25%; 
+  right:1%; 
+  height:30px; 
+  overflow:hidden;
+  margin:0px;
+  padding:10px;
+  background:#53829d;
+  color:#FFFFFF;
+}
+}
+/* Not YET Used */
+#header {
+  position:absolute; 
+  top:0; 
+  left:0; 
+  width:100%;
+  height:120px;
+  overflow:auto;
+  background:#53829d;
+  color:#fff;
+  }
+
+/* Not YET Used */
+#footer {
+  position:absolute;
+  bottom:0;
+  left:0;
+  width:100%;
+  height:50px;
+  overflow:auto;
+  text-align:right;
+  background:#73a2bd;
+}
+
+.td_commenttype{
+	vertical-align:top;
+}
+
+table
+{
+	border-collapse:collapse;
+}
+
+table, td, th
+{
+	border:1px solid black;
+}
+
+#table_statistics{
+	margin-top:20px;
+	margin-left: auto;
+	margin-right: auto;
+}
+
+.import_grey a{
+	color:#777777 !important;
+}
+
+.td_table_statistics_left{
+	text-align:right;
+	padding-right:5px;
+}
+
+.td_table_statistics_mid{
+	text-align:center;
+	padding-right:5px;
+}
+
+.td_table_statistics_right{
+	text-align:left;
+	padding-left:5px;
+}
+
+#div_statistics th{
+	width:30%;
+	border-bottom:none !important;
+}
+
+#div_statistics td{
+	text-align:center;
+}
+
+.td_table_statistics_modules{
+	text-align:left !important;
+}
+
+#div_element{
+	font-family:monospace;
+}
+
+a:link, a:active, a:hover, a:visited{
+	color:#333377;
+	text-decoration:none;
+}
+
+#div_element a{
+	color:blue;
+}
+
+#div_element a:hover{
+	color:red;
+	text-decoration:underline;
+}
+
+#table_import td{
+	vertical-align:top;
+	width:33%;
+	padding-left:10px;
+}
+
+#table_import{
+	width:100%;
+}
+
+
+
+
+#table_import_modules{
+  border-left:1px solid #000000;
+  border-right:1px solid #000000;
+}
+
+.div_group_behaviour{
+	padding-left:50px;
+}
+
+.comment_line{
+	padding-right:50px;
+}
+
+.span_tagtype, .span_tagtypeOrig{
+	font-weight:bold;
+}
+
+.bold{
+	font-weight:bold;
+}
+
+#head_name{
+	color:#0000FF;
+	font-weight:bold;
+}
+
+.comment{
+	background-color:#DDDDDD;
+	padding:5px;
+}
+
+.elementName{
+	background-color:#BBBBFF;
+	padding-left:5px;
+}
+/*
+importedby, importedby_ind, selected, imports, imports: determine colors of modules in Import View
+*/
+.importedby{
+	color:#f86503 !important;
+}
+
+.importedby_ind{
+	color:#FF0000 !important;
+}
+
+.selected{
+	color:#000000 !important;
+}
+
+.imports{
+	color:#278e57 !important;
+}
+
+.imports_ind{
+	color:#00FF00 !important;
+}
+
+
+/* spans (toggle) notes */
+.span_showhidenote{
+	font-size: 5pt;
+	bottom: 0.5em;
+}
+
+.padding_left_10px{
+	padding-left:10px;
+	border:none !important;
+}
+
+.padding_left_10px tr td{
+	border:none !important;
+}
+
+
+.padding_left_20px{
+	padding-left:20px;
+}
+/* contains source code */
+pre {
+	white-space: pre-wrap;
+}
+/*spans highlighted TTCN3 keywords*/
+.syntax{
+	font-weight:bold !important;
+}
+
+@media print{
+
+body{
+	background:#FFFFFF;
+	font-family: Arial, Helvetica;
+	color:#000000;
+	margin:0;
+	border:0;
+	padding:0;
+	height:100%; 
+	max-height:100%;
+}
+
+div{
+  margin-left:6px !important;
+}
+#div_views, #div_index, #div_modules {
+	display:none !important;
+}
+
+#div_comment{
+	border-bottom:1px solid #000000;
+}
+
+p, pre, span, a, div{
+	color:#000000 !important;background-color:#FFFFFF !important;font-size:12px !important;
+}
+#div_content, #p_header{
+	left:0px !important; width:615px !important; border:none !important; height:auto !important;
+}
+
+#div_element pre{
+	border:0.5px dotted black !important;
+}
+
+
+#p_t3dversion{
+	text-align:right;
+	font-size:10px;
+}
+
+}
Index: /trunk/t3d/js/doc.js
===================================================================
--- /trunk/t3d/js/doc.js	(revision 7)
+++ /trunk/t3d/js/doc.js	(revision 7)
@@ -0,0 +1,127 @@
+var toggled = false;
+
+var toggled1 = false;
+var toggled2 = false;
+
+function getElementsByClass(searchClass,node,tag) {
+	var classElements = new Array();
+	if ( node == null )
+		node = document;
+	if ( tag == null )
+		tag = '*';
+	var els = node.getElementsByTagName(tag);
+	var elsLen = els.length;
+	var pattern = new RegExp('(^|\\\\s)'+searchClass+'(\\\\s|$)');
+	for (i = 0, j = 0; i < elsLen; i++) {
+		if ( pattern.test(els[i].className) ) {
+			classElements[j] = els[i];
+			j++;
+		}
+	}
+	return classElements;
+}
+
+function toggleConstructbodies(hide){
+	if(hide == "true"){
+		var x;
+		var constructBodies = getElementsByClass("span_constructbody");
+		
+		if(toggled)
+			for(x in constructBodies)
+				constructBodies[x].style.display='';
+		else
+			for(x in constructBodies)
+				constructBodies[x].style.display='none';
+		toggled = !toggled;	
+	}
+	if (document.getElementById('modulebody') != null){
+		document.getElementById('modulebody').style.display='';
+	}
+}
+
+function toggleImportDetails(){
+		var x;
+		var constructBodies = getElementsByClass("span_importdetail");
+		
+		if(toggled)
+			for(x in constructBodies)
+				constructBodies[x].style.display='';
+		else
+			for(x in constructBodies)
+				constructBodies[x].style.display='none';
+		toggled = !toggled;
+}
+
+function togglePaths(hide){
+	if(hide == "true"){
+		var x;
+		var constructBodies = getElementsByClass("td_path");
+		
+		if(toggled)
+			for(x in constructBodies)
+				constructBodies[x].style.display='';
+		else
+			for(x in constructBodies)
+				constructBodies[x].style.display='none';
+		toggled = !toggled;	
+	}
+}
+
+function toggleHideNotes(){
+	var x;
+	var constructBodies = getElementsByClass("span_showhidenote");
+	for(x in constructBodies){
+		toggleElement(constructBodies[x]);
+	}
+}
+
+function toggleElement(element){
+	if(element.style.display=='none')
+		element.style.display='';
+	else
+		element.style.display='none';
+}
+
+function toggle(elementName){
+	var element = document.getElementById(elementName);
+	toggleElement(element);
+}
+
+function mp_init(listName){
+	if(listName != 'Group')
+//		if (document.getElementById('span_groups')!=null)
+			document.getElementById('span_groups').style.display='none';
+	if(listName != 'Testcase')
+//		if (document.getElementById('span_testcases'!=null))
+			document.getElementById('span_testcases').style.display='none';
+	if(listName != 'Module Parameter')
+//		if (document.getElementById('span_parameters')!=null)
+			document.getElementById('span_module parameters').style.display='none';
+}
+
+function init(listName){
+	toggleHideNotes();
+	if(listName != 'Group')
+		document.getElementById('span_groups').style.display='none';
+	if(listName != 'Function')
+		document.getElementById('span_functions').style.display='none';
+	if(listName != 'Type')
+		document.getElementById('span_types').style.display='none';
+	if(listName != 'Signature')
+		document.getElementById('span_signatures').style.display='none';
+	if(listName != 'Testcase')
+		document.getElementById('span_testcases').style.display='none';
+	if(listName != 'Altstep')
+		document.getElementById('span_altsteps').style.display='none';
+	if(listName != 'Template')
+		document.getElementById('span_templates').style.display='none';
+	if(listName != 'Constant')
+		document.getElementById('span_constants').style.display='none';
+	if(listName != 'Module Parameter')
+		document.getElementById('span_module parameters').style.display='none';
+	if(listName != 'External Function')
+		document.getElementById('span_external functions').style.display='none';
+	if(listName != 'External Constant')
+		document.getElementById('span_external constants').style.display='none';
+
+}
Index: /trunk/t3d/lib/LICENSE.txt
===================================================================
--- /trunk/t3d/lib/LICENSE.txt	(revision 7)
+++ /trunk/t3d/lib/LICENSE.txt	(revision 7)
@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
Index: /trunk/t3d/lib/xpp3-license.txt
===================================================================
--- /trunk/t3d/lib/xpp3-license.txt	(revision 7)
+++ /trunk/t3d/lib/xpp3-license.txt	(revision 7)
@@ -0,0 +1,46 @@
+Indiana University Extreme! Lab Software License
+
+Version 1.1.1
+
+Copyright (c) 2002 Extreme! Lab, Indiana University. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright notice,
+   this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in
+   the documentation and/or other materials provided with the distribution.
+
+3. The end-user documentation included with the redistribution, if any,
+   must include the following acknowledgment:
+
+  "This product includes software developed by the Indiana University
+  Extreme! Lab (http://www.extreme.indiana.edu/)."
+
+Alternately, this acknowledgment may appear in the software itself,
+if and wherever such third-party acknowledgments normally appear.
+
+4. The names "Indiana Univeristy" and "Indiana Univeristy Extreme! Lab"
+must not be used to endorse or promote products derived from this
+software without prior written permission. For written permission,
+please contact http://www.extreme.indiana.edu/.
+
+5. Products derived from this software may not use "Indiana Univeristy"
+name nor may "Indiana Univeristy" appear in their name, without prior
+written permission of the Indiana University.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE AUTHORS, COPYRIGHT HOLDERS OR ITS CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Index: /trunk/t3d/lib/xstream-license.txt
===================================================================
--- /trunk/t3d/lib/xstream-license.txt	(revision 7)
+++ /trunk/t3d/lib/xstream-license.txt	(revision 7)
@@ -0,0 +1,28 @@
+(BSD Style License)
+
+Copyright (c) 2003-2006, Joe Walnes
+Copyright (c) 2006-2007, XStream Committers
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+Redistributions of source code must retain the above copyright notice, this list of
+conditions and the following disclaimer. Redistributions in binary form must reproduce
+the above copyright notice, this list of conditions and the following disclaimer in
+the documentation and/or other materials provided with the distribution.
+
+Neither the name of XStream nor the names of its contributors may be used to endorse
+or promote products derived from this software without specific prior written
+permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
+WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
Index: /trunk/t3d/nsis/EnvVarUpdate.nsh
===================================================================
--- /trunk/t3d/nsis/EnvVarUpdate.nsh	(revision 7)
+++ /trunk/t3d/nsis/EnvVarUpdate.nsh	(revision 7)
@@ -0,0 +1,327 @@
+/**
+ *  EnvVarUpdate.nsh
+ *    : Environmental Variables: append, prepend, and remove entries
+ *
+ *     WARNING: If you use StrFunc.nsh header then include it before this file
+ *              with all required definitions. This is to avoid conflicts
+ *
+ *  Usage:
+ *    ${EnvVarUpdate} "ResultVar" "EnvVarName" "Action" "RegLoc" "PathString"
+ *
+ *  Credits:
+ *  Version 1.0 
+ *  * Cal Turney (turnec2)
+ *  * Amir Szekely (KiCHiK) and e-circ for developing the forerunners of this
+ *    function: AddToPath, un.RemoveFromPath, AddToEnvVar, un.RemoveFromEnvVar,
+ *    WriteEnvStr, and un.DeleteEnvStr
+ *  * Diego Pedroso (deguix) for StrTok
+ *  * Kevin English (kenglish_hi) for StrContains
+ *  * Hendri Adriaens (Smile2Me), Diego Pedroso (deguix), and Dan Fuhry  
+ *    (dandaman32) for StrReplace
+ *
+ *  Version 1.1 (compatibility with StrFunc.nsh)
+ *  * techtonik
+ *
+ *  http://nsis.sourceforge.net/Environmental_Variables:_append%2C_prepend%2C_and_remove_entries
+ *
+ */
+
+
+!ifndef ENVVARUPDATE_FUNCTION
+!define ENVVARUPDATE_FUNCTION
+!verbose push
+!verbose 3
+!include "LogicLib.nsh"
+!include "WinMessages.NSH"
+!include "StrFunc.nsh"
+
+; ---- Fix for conflict if StrFunc.nsh is already includes in main file -----------------------
+!macro _IncludeStrFunction StrFuncName
+  !ifndef ${StrFuncName}_INCLUDED
+    ${${StrFuncName}}
+  !endif
+  !ifndef Un${StrFuncName}_INCLUDED
+    ${Un${StrFuncName}}
+  !endif
+  !define un.${StrFuncName} "${Un${StrFuncName}}"
+!macroend
+
+!insertmacro _IncludeStrFunction StrTok
+!insertmacro _IncludeStrFunction StrStr
+!insertmacro _IncludeStrFunction StrRep
+
+; ---------------------------------- Macro Definitions ----------------------------------------
+!macro _EnvVarUpdateConstructor ResultVar EnvVarName Action Regloc PathString
+  Push "${EnvVarName}"
+  Push "${Action}"
+  Push "${RegLoc}"
+  Push "${PathString}"
+    Call EnvVarUpdate
+  Pop "${ResultVar}"
+!macroend
+!define EnvVarUpdate '!insertmacro "_EnvVarUpdateConstructor"'
+ 
+!macro _unEnvVarUpdateConstructor ResultVar EnvVarName Action Regloc PathString
+  Push "${EnvVarName}"
+  Push "${Action}"
+  Push "${RegLoc}"
+  Push "${PathString}"
+    Call un.EnvVarUpdate
+  Pop "${ResultVar}"
+!macroend
+!define un.EnvVarUpdate '!insertmacro "_unEnvVarUpdateConstructor"'
+; ---------------------------------- Macro Definitions end-------------------------------------
+ 
+;----------------------------------- EnvVarUpdate start----------------------------------------
+!define hklm_all_users     'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"'
+!define hkcu_current_user  'HKCU "Environment"'
+ 
+!macro EnvVarUpdate UN
+ 
+Function ${UN}EnvVarUpdate
+ 
+  Push $0
+  Exch 4
+  Exch $1
+  Exch 3
+  Exch $2
+  Exch 2
+  Exch $3
+  Exch
+  Exch $4
+  Push $5
+  Push $6
+  Push $7
+  Push $8
+  Push $9
+  Push $R0
+ 
+  /* After this point:
+  -------------------------
+     $0 = ResultVar     (returned)
+     $1 = EnvVarName    (input)
+     $2 = Action        (input)
+     $3 = RegLoc        (input)
+     $4 = PathString    (input)
+     $5 = Orig EnvVar   (read from registry)
+     $6 = Len of $0     (temp)
+     $7 = tempstr1      (temp)
+     $8 = Entry counter (temp)
+     $9 = tempstr2      (temp)
+     $R0 = tempChar     (temp)  */
+ 
+  ; Step 1:  Read contents of EnvVarName from RegLoc
+  ;
+  ; Check for empty EnvVarName
+  ${If} $1 == ""
+    SetErrors
+    DetailPrint "ERROR: EnvVarName is blank"
+    Goto EnvVarUpdate_Restore_Vars
+  ${EndIf}
+ 
+  ; Check for valid Action
+  ${If}    $2 != "A"
+  ${AndIf} $2 != "P"
+  ${AndIf} $2 != "R"
+    SetErrors
+    DetailPrint "ERROR: Invalid Action - must be A, P, or R"
+    Goto EnvVarUpdate_Restore_Vars
+  ${EndIf}
+ 
+  ${If} $3 == HKLM
+    ReadRegStr $5 ${hklm_all_users} $1     ; Get EnvVarName from all users into $5
+  ${ElseIf} $3 == HKCU
+    ReadRegStr $5 ${hkcu_current_user} $1  ; Read EnvVarName from current user into $5
+  ${Else}
+    SetErrors
+    DetailPrint 'ERROR: Action is [$3] but must be "HKLM" or HKCU"'
+    Goto EnvVarUpdate_Restore_Vars
+  ${EndIf}
+ 
+  ; Check for empty PathString
+  ${If} $4 == ""
+    SetErrors
+    DetailPrint "ERROR: PathString is blank"
+    Goto EnvVarUpdate_Restore_Vars
+  ${EndIf}
+ 
+  ; Make sure we've got some work to do
+  ${If} $5 == ""
+  ${AndIf} $2 == "R"
+    SetErrors
+    DetailPrint "$1 is empty - Nothing to remove"
+    Goto EnvVarUpdate_Restore_Vars
+  ${EndIf}
+ 
+  ; Step 2: Scrub EnvVar
+  ;
+  StrCpy $0 $5                             ; Copy the contents to $0
+  ; Remove spaces around semicolons (NOTE: spaces before the 1st entry or
+  ; after the last one are not removed here but instead in Step 3)
+  ${If} $0 != ""                           ; If EnvVar is not empty ...
+    ${Do}
+      ${${UN}StrStr} $7 $0 " ;"
+      ${If} $7 == ""
+        ${ExitDo}
+      ${EndIf}
+      ${${UN}StrRep} $0  $0 " ;" ";"         ; Remove '<space>;'
+    ${Loop}
+    ${Do}
+      ${${UN}StrStr} $7 $0 "; "
+      ${If} $7 == ""
+        ${ExitDo}
+      ${EndIf}
+      ${${UN}StrRep} $0  $0 "; " ";"         ; Remove ';<space>'
+    ${Loop}
+    ${Do}
+      ${${UN}StrStr} $7 $0 ";;" 
+      ${If} $7 == ""
+        ${ExitDo}
+      ${EndIf}
+      ${${UN}StrRep} $0  $0 ";;" ";"
+    ${Loop}
+ 
+    ; Remove a leading or trailing semicolon from EnvVar
+    StrCpy  $7  $0 1 0
+    ${If} $7 == ";"
+      StrCpy $0  $0 "" 1                   ; Change ';<EnvVar>' to '<EnvVar>'
+    ${EndIf}
+    StrLen $6 $0
+    IntOp $6 $6 - 1
+    StrCpy $7  $0 1 $6
+    ${If} $7 == ";"
+     StrCpy $0  $0 $6                      ; Change ';<EnvVar>' to '<EnvVar>'
+    ${EndIf}
+    ; DetailPrint "Scrubbed $1: [$0]"      ; Uncomment to debug
+  ${EndIf}
+ 
+  /* Step 3. Remove all instances of the target path/string (even if "A" or "P")
+     $6 = bool flag (1 = found and removed PathString)
+     $7 = a string (e.g. path) delimited by semicolon(s)
+     $8 = entry counter starting at 0
+     $9 = copy of $0
+     $R0 = tempChar      */
+ 
+  ${If} $5 != ""                           ; If EnvVar is not empty ...
+    StrCpy $9 $0
+    StrCpy $0 ""
+    StrCpy $8 0
+    StrCpy $6 0
+ 
+    ${Do}
+      ${${UN}StrTok} $7 $9 ";" $8 "0"      ; $7 = next entry, $8 = entry counter
+ 
+      ${If} $7 == ""                       ; If we've run out of entries,
+        ${ExitDo}                          ;    were done
+      ${EndIf}                             ;
+ 
+      ; Remove leading and trailing spaces from this entry (critical step for Action=Remove)
+      ${Do}
+        StrCpy $R0  $7 1
+        ${If} $R0 != " "
+          ${ExitDo}
+        ${EndIf}
+        StrCpy $7   $7 "" 1                ;  Remove leading space
+      ${Loop}
+      ${Do}
+        StrCpy $R0  $7 1 -1
+        ${If} $R0 != " "
+          ${ExitDo}
+        ${EndIf}
+        StrCpy $7   $7 -1                  ;  Remove trailing space
+      ${Loop}
+      ${If} $7 == $4                       ; If string matches, remove it by not appending it
+        StrCpy $6 1                        ; Set 'found' flag
+      ${ElseIf} $7 != $4                   ; If string does NOT match
+      ${AndIf}  $0 == ""                   ;    and the 1st string being added to $0,
+        StrCpy $0 $7                       ;    copy it to $0 without a prepended semicolon
+      ${ElseIf} $7 != $4                   ; If string does NOT match
+      ${AndIf}  $0 != ""                   ;    and this is NOT the 1st string to be added to $0,
+        StrCpy $0 $0;$7                    ;    append path to $0 with a prepended semicolon
+      ${EndIf}                             ;
+ 
+      IntOp $8 $8 + 1                      ; Bump counter
+    ${Loop}                                ; Check for duplicates until we run out of paths
+  ${EndIf}
+ 
+  ; Step 4:  Perform the requested Action
+  ;
+  ${If} $2 != "R"                          ; If Append or Prepend
+    ${If} $6 == 1                          ; And if we found the target
+      DetailPrint "Target is already present in $1. It will be removed and"
+    ${EndIf}
+    ${If} $0 == ""                         ; If EnvVar is (now) empty
+      StrCpy $0 $4                         ;   just copy PathString to EnvVar
+      ${If} $6 == 0                        ; If found flag is either 0
+      ${OrIf} $6 == ""                     ; or blank (if EnvVarName is empty)
+        DetailPrint "$1 was empty and has been updated with the target"
+      ${EndIf}
+    ${ElseIf} $2 == "A"                    ;  If Append (and EnvVar is not empty),
+      StrCpy $0 $0;$4                      ;     append PathString
+      ${If} $6 == 1
+        DetailPrint "appended to $1"
+      ${Else}
+        DetailPrint "Target was appended to $1"
+      ${EndIf}
+    ${Else}                                ;  If Prepend (and EnvVar is not empty),
+      StrCpy $0 $4;$0                      ;     prepend PathString
+      ${If} $6 == 1
+        DetailPrint "prepended to $1"
+      ${Else}
+        DetailPrint "Target was prepended to $1"
+      ${EndIf}
+    ${EndIf}
+  ${Else}                                  ; If Action = Remove
+    ${If} $6 == 1                          ;   and we found the target
+      DetailPrint "Target was found and removed from $1"
+    ${Else}
+      DetailPrint "Target was NOT found in $1 (nothing to remove)"
+    ${EndIf}
+    ${If} $0 == ""
+      DetailPrint "$1 is now empty"
+    ${EndIf}
+  ${EndIf}
+ 
+  ; Step 5:  Update the registry at RegLoc with the updated EnvVar and announce the change
+  ;
+  ClearErrors
+  ${If} $3  == HKLM
+    WriteRegExpandStr ${hklm_all_users} $1 $0     ; Write it in all users section
+  ${ElseIf} $3 == HKCU
+    WriteRegExpandStr ${hkcu_current_user} $1 $0  ; Write it to current user section
+  ${EndIf}
+ 
+  IfErrors 0 +4
+    MessageBox MB_OK|MB_ICONEXCLAMATION "Could not write updated $1 to $3"
+    DetailPrint "Could not write updated $1 to $3"
+    Goto EnvVarUpdate_Restore_Vars
+ 
+  ; "Export" our change
+  SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
+ 
+  EnvVarUpdate_Restore_Vars:
+  ;
+  ; Restore the user's variables and return ResultVar
+  Pop $R0
+  Pop $9
+  Pop $8
+  Pop $7
+  Pop $6
+  Pop $5
+  Pop $4
+  Pop $3
+  Pop $2
+  Pop $1
+  Push $0  ; Push my $0 (ResultVar)
+  Exch
+  Pop $0   ; Restore his $0
+ 
+FunctionEnd
+ 
+!macroend   ; EnvVarUpdate UN
+!insertmacro EnvVarUpdate ""
+!insertmacro EnvVarUpdate "un."
+;----------------------------------- EnvVarUpdate end----------------------------------------
+ 
+!verbose pop
+!endif
Index: /trunk/t3d/nsis/WriteEnvStr.nsh
===================================================================
--- /trunk/t3d/nsis/WriteEnvStr.nsh	(revision 7)
+++ /trunk/t3d/nsis/WriteEnvStr.nsh	(revision 7)
@@ -0,0 +1,148 @@
+!ifndef _WriteEnvStr_nsh
+!define _WriteEnvStr_nsh
+ 
+!include WinMessages.nsh
+ 
+!ifndef WriteEnvStr_RegKey
+  !ifdef ALL_USERS
+    !define WriteEnvStr_RegKey \
+       'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"'
+  !else
+    !define WriteEnvStr_RegKey 'HKCU "Environment"'
+  !endif
+!endif
+ 
+#
+# WriteEnvStr - Writes an environment variable
+# Note: Win9x systems requires reboot
+#
+# Example:
+#  Push "HOMEDIR"           # name
+#  Push "C:\New Home Dir\"  # value
+#  Call WriteEnvStr
+#
+Function WriteEnvStr
+  Exch $1 ; $1 has environment variable value
+  Exch
+  Exch $0 ; $0 has environment variable name
+  Push $2
+ 
+  Call IsNT
+  Pop $2
+  StrCmp $2 1 WriteEnvStr_NT
+    ; Not on NT
+    StrCpy $2 $WINDIR 2 ; Copy drive of windows (c:)
+    FileOpen $2 "$2\autoexec.bat" a
+    FileSeek $2 0 END
+    FileWrite $2 "$\r$\nSET $0=$1$\r$\n"
+    FileClose $2
+    SetRebootFlag true
+    Goto WriteEnvStr_done
+ 
+  WriteEnvStr_NT:
+      WriteRegExpandStr ${WriteEnvStr_RegKey} $0 $1
+      SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} \
+        0 "STR:Environment" /TIMEOUT=5000
+ 
+  WriteEnvStr_done:
+    Pop $2
+    Pop $0
+    Pop $1
+FunctionEnd
+ 
+#
+# un.DeleteEnvStr - Removes an environment variable
+# Note: Win9x systems requires reboot
+#
+# Example:
+#  Push "HOMEDIR"           # name
+#  Call un.DeleteEnvStr
+#
+Function un.DeleteEnvStr
+  Exch $0 ; $0 now has the name of the variable
+  Push $1
+  Push $2
+  Push $3
+  Push $4
+  Push $5
+ 
+  Call un.IsNT
+  Pop $1
+  StrCmp $1 1 DeleteEnvStr_NT
+    ; Not on NT
+    StrCpy $1 $WINDIR 2
+    FileOpen $1 "$1\autoexec.bat" r
+    GetTempFileName $4
+    FileOpen $2 $4 w
+    StrCpy $0 "SET $0="
+    SetRebootFlag true
+ 
+    DeleteEnvStr_dosLoop:
+      FileRead $1 $3
+      StrLen $5 $0
+      StrCpy $5 $3 $5
+      StrCmp $5 $0 DeleteEnvStr_dosLoop
+      StrCmp $5 "" DeleteEnvStr_dosLoopEnd
+      FileWrite $2 $3
+      Goto DeleteEnvStr_dosLoop
+ 
+    DeleteEnvStr_dosLoopEnd:
+      FileClose $2
+      FileClose $1
+      StrCpy $1 $WINDIR 2
+      Delete "$1\autoexec.bat"
+      CopyFiles /SILENT $4 "$1\autoexec.bat"
+      Delete $4
+      Goto DeleteEnvStr_done
+ 
+  DeleteEnvStr_NT:
+    DeleteRegValue ${WriteEnvStr_RegKey} $0
+    SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} \
+      0 "STR:Environment" /TIMEOUT=5000
+ 
+  DeleteEnvStr_done:
+    Pop $5
+    Pop $4
+    Pop $3
+    Pop $2
+    Pop $1
+    Pop $0
+FunctionEnd
+ 
+!ifndef IsNT_KiCHiK
+!define IsNT_KiCHiK
+ 
+#
+# [un.]IsNT - Pushes 1 if running on NT, 0 if not
+#
+# Example:
+#   Call IsNT
+#   Pop $0
+#   StrCmp $0 1 +3
+#     MessageBox MB_OK "Not running on NT!"
+#     Goto +2
+#     MessageBox MB_OK "Running on NT!"
+#
+!macro IsNT UN
+Function ${UN}IsNT
+  Push $0
+  ReadRegStr $0 HKLM \
+    "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
+  StrCmp $0 "" 0 IsNT_yes
+  ; we are not NT.
+  Pop $0
+  Push 0
+  Return
+ 
+  IsNT_yes:
+    ; NT!!!
+    Pop $0
+    Push 1
+FunctionEnd
+!macroend
+!insertmacro IsNT ""
+!insertmacro IsNT "un."
+ 
+!endif ; IsNT_KiCHiK
+ 
+!endif ; _WriteEnvStr_nsh
Index: /trunk/t3d/nsis/t3d.nsi
===================================================================
--- /trunk/t3d/nsis/t3d.nsi	(revision 7)
+++ /trunk/t3d/nsis/t3d.nsi	(revision 7)
@@ -0,0 +1,198 @@
+; T3D Installer
+;-----------------------------------------------------------------------------------------------------------------------------
+
+!define PRODUCT_NAME "T3D"
+!define AppName "T3D"
+!define AppVersion "1.0"
+!define ShortName "T3D"
+!define Vendor "Software Engineering for Distributed Systems Group, University of G�ttingen"
+!define JRE_VERSION "1.6"
+!define JRE_URL "http://javadl.sun.com/webapps/download/AutoDL?BundleId=26223"
+!define ALL_USERS
+
+LangString ConfirmUninstall ${LANG_ENGLISH} "All existing \
+files and folders under the $(^Name) installation directory \
+'$INSTDIR' will be removed.$\r$\nThis includes any files and folders \
+that have since been added after the installation of \
+$(^Name).$\r$\n$\r$\nAre you sure you wish to continue?"
+
+!include "MUI2.nsh"
+!include "StrFunc.nsh"
+!include "EnvVarUpdate.nsh"
+!include "WriteEnvStr.nsh"
+
+Name "T3D"
+OutFile "t3d-install-32bit.exe"
+
+InstallDir $PROGRAMFILES\ETSI\T3D
+InstallDirRegKey HKLM "Software\ETSI\T3D" "Install_Dir"
+
+RequestExecutionLevel admin
+
+!define MUI_ABORTWARNING
+
+!insertmacro MUI_PAGE_COMPONENTS
+!insertmacro MUI_PAGE_DIRECTORY
+!insertmacro MUI_PAGE_INSTFILES
+!insertmacro MUI_UNPAGE_CONFIRM
+!insertmacro MUI_UNPAGE_INSTFILES
+
+!insertmacro MUI_LANGUAGE "English"
+
+Section ""
+  Call DetectJRE
+SectionEnd
+
+;-----------------------------------------------------------------------------------------------------------------------------
+; The stuff to install
+Section "T3D (required)"
+  SectionIn RO
+  SetOutPath $INSTDIR
+  File "..\dist\t3d.bat"
+  File "..\doc\t3d-documentation.pdf"
+  SetOutPath $INSTDIR\css
+  File "..\css\*.css"
+  SetOutPath $INSTDIR\js
+  File "..\js\*.js"
+  SetOutPath $INSTDIR\xsd
+  File "..\xsd\*.*"
+  SetOutPath $INSTDIR\xslt
+  File "..\xslt\*.xsl"
+  SetOutPath $INSTDIR\lib
+  File /r "..\dist\lib\*.jar"
+  SetOutPath $INSTDIR
+  
+  ;CreateDirectory $APPDATA\T3D
+  
+  WriteRegStr HKLM SOFTWARE\ETSI\T3D "Install_Dir" "$INSTDIR"
+  
+  ${EnvVarUpdate} $0 "T3D_HOME" "A" "HKLM" $INSTDIR
+  ${EnvVarUpdate} $0 "PATH" "A" "HKLM" $INSTDIR
+  
+  ReadRegStr $2 HKLM "SOFTWARE\JavaSoft\Java Development Kit\1.6" "JavaHome"
+  StrCmp $2 "" 0 registerJavaHome
+  ReadRegStr $2 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment\1.6" "JavaHome"
+  StrCmp $2 "" 0 registerJavaHome
+registerJavaHome:
+  Push JAVA_HOME
+  Push $2
+  Call WriteEnvStr
+
+  ; Write the uninstall keys for Windows
+  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${AppName}" "DisplayName" "${AppName}"
+  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${AppName}" "UninstallString" '"$INSTDIR\uninstall.exe"'
+  WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${AppName}" "NoModify" 1
+  WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${AppName}" "NoRepair" 1
+  WriteUninstaller "uninstall.exe"
+SectionEnd
+
+Section "T3D Sample Files"
+  SetOutPath $INSTDIR\samples
+  
+  File /r /x ".svn" /x ".project" "..\..\t3d-examples\*.*"
+SectionEnd
+
+;-----------------------------------------------------------------------------------------------------------------------------
+; Start Menu Section
+Section "Start Menu Shortcuts"
+  CreateDirectory "$SMPROGRAMS\${AppName}"
+  CreateShortCut "$SMPROGRAMS\${AppName}\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
+  CreateShortCut "$SMPROGRAMS\${AppName}\T3D Documentation.lnk" "$INSTDIR\t3d-documentation.pdf" 
+  CreateShortCut "$SMPROGRAMS\${AppName}\T3D Default CSS File.lnk" "$INSTDIR\css\doc.css" 
+
+  SetOutPath $INSTDIR\samples
+  CreateShortCut "$SMPROGRAMS\${AppName}\Samples Folder.lnk" "$INSTDIR\samples" 
+;  CreateShortCut "$SMPROGRAMS\${AppName}\T3D Configuration Directory.lnk" "$APPDATA\T3D\"
+  CreateShortCut "$SMPROGRAMS\${AppName}\Samples Folder (Command-Line).lnk" "$WINDIR\system32\cmd.exe"
+SectionEnd
+
+;-----------------------------------------------------------------------------------------------------------------------------
+; Uninstaller
+Section "Uninstall"
+  ; Remove registry keys
+  DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${AppName}"
+  DeleteRegKey HKLM SOFTWARE\ETSI\${AppName}
+
+  MessageBox MB_OKCANCEL|MB_ICONINFORMATION $(ConfirmUninstall) IDOK +2
+  Abort
+  RMDir /r $INSTDIR
+
+  ; Remove shortcuts, if any
+  Delete "$SMPROGRAMS\${AppName}\*.*"
+
+  ; Remove directories used
+  RMDir "$SMPROGRAMS\${AppName}"
+  RMDir "$INSTDIR"
+  RMDir "$PROGRAMFILES\ETSI"
+
+  ; Remove Environment Variables
+  ${un.EnvVarUpdate} $0 "PATH" "R" "HKLM" $INSTDIR
+  Push T3D_HOME
+  Call un.DeleteEnvStr
+  Push T3D_HOME
+  Call un.DeleteEnvStr
+SectionEnd
+
+;-----------------------------------------------------------------------------------------------------------------------------
+Function GetJRE
+        MessageBox MB_OK "${PRODUCT_NAME} uses Java ${JRE_VERSION}, it will now \
+                         be downloaded and installed"
+ 
+        StrCpy $2 "$TEMP\Java Runtime Environment.exe"
+        nsisdl::download /TIMEOUT=30000 ${JRE_URL} $2
+        Pop $R0 ;Get the return value
+                StrCmp $R0 "success" +3
+                MessageBox MB_OK "Download failed: $R0"
+                Quit
+        ExecWait $2
+        Delete $2
+FunctionEnd
+ 
+;-----------------------------------------------------------------------------------------------------------------------------
+Function DetectJRE
+  ReadRegStr $2 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment" \
+             "CurrentVersion"
+  StrCmp $2 ${JRE_VERSION} done
+ 
+  Call GetJRE
+ 
+  done:
+FunctionEnd
+
+;-----------------------------------------------------------------------------------------------------------------------------
+Function .onInstSuccess
+  MessageBox MB_OK "You have successfully installed ${PRODUCT_NAME}. You can now use 't3d' on the command-line!"
+FunctionEnd
+ 
+;-----------------------------------------------------------------------------------------------------------------------------
+;Function un.onUninstSuccess
+;  MessageBox MB_OK "You have successfully uninstalled ${PRODUCT_NAME}."
+;FunctionEnd
+
+;-----------------------------------------------------------------------------------------------------------------------------
+Function .onInit
+  ReadRegStr $R0 HKLM \
+  "Software\Microsoft\Windows\CurrentVersion\Uninstall\${AppName}" \
+  "UninstallString"
+  StrCmp $R0 "" done
+ 
+  MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION \
+  "${AppName} is already installed. $\n$\nClick `OK` to remove the \
+  previous version or `Cancel` to cancel this upgrade." \
+  IDOK uninst
+  Abort
+ 
+;Run the uninstaller
+uninst:
+  ClearErrors
+  ExecWait '$R0 _?=$INSTDIR' ;Do not copy the uninstaller to a temp file
+ 
+  IfErrors no_remove_uninstaller
+    ;You can either use Delete /REBOOTOK in the uninstaller or add some code
+    ;here to remove the uninstaller. Use a registry key to check
+    ;whether the user has chosen to uninstall. If you are using an uninstaller
+    ;components page, make sure all sections are uninstalled.
+  no_remove_uninstaller:
+ 
+done:
+FunctionEnd
Index: /trunk/t3d/src/elements/TTCN3Comment.java
===================================================================
--- /trunk/t3d/src/elements/TTCN3Comment.java	(revision 7)
+++ /trunk/t3d/src/elements/TTCN3Comment.java	(revision 7)
@@ -0,0 +1,309 @@
+package elements;
+
+import java.util.LinkedList;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.apache.commons.lang.*;
+import org.etsi.t3d.T3D;
+
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.LocationAST;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.TTCN3ParserTokenTypes;
+
+public class TTCN3Comment {
+	private String commentsXML;	
+		
+
+	
+	private LinkedList<String> desc = new LinkedList<String>();
+	private LinkedList<String> author = new LinkedList<String>();
+	private LinkedList<String> config = new LinkedList<String>();
+	private LinkedList<String> exception = new LinkedList<String>();
+	private LinkedList<String> member = new LinkedList<String>();
+	private LinkedList<String> param = new LinkedList<String>();
+	private LinkedList<String> purpose = new LinkedList<String>();
+	private LinkedList<String> remark = new LinkedList<String>();
+	private LinkedList<String> Return = new LinkedList<String>();
+	private LinkedList<String> see = new LinkedList<String>();
+	private LinkedList<String> since = new LinkedList<String>();
+	private LinkedList<String> status = new LinkedList<String>();
+	private LinkedList<String> url = new LinkedList<String>();
+	private LinkedList<String> verdict = new LinkedList<String>();
+	private LinkedList<String> version = new LinkedList<String>();
+	
+	private LinkedList<String> warnings = new LinkedList<String>();
+	private LinkedList<String> seeRefs = new LinkedList<String>();
+
+	
+	public TTCN3Comment(LocationAST node){
+		
+	}
+	
+	
+	
+	//TODO: WHY WHY WHY OH WHY?!?!?!?!?!??! REORGANIZE AND REFACTOR
+	public TTCN3Comment(String rawComments, int elementType){
+		if(rawComments != null && !rawComments.equals("")){
+			rawComments = "\n" + rawComments;
+			rawComments = rawComments.replaceAll("\\r", "");
+			rawComments = rawComments.replaceAll("\\n(\\s|\\*|/)*", "\n").replaceAll("\\n+","\n");
+			rawComments = rawComments.trim() + "\r___NEWTAG___";
+			rawComments = rawComments.replaceAll(" @see", " @esee").replaceAll(" @url", " @eurl");
+			rawComments = rawComments.replaceAll("\\n@", "\r___NEWTAG___@");
+			
+			getComments(rawComments, T3D.activeProfile.getCommentTagsConfiguration().getDescTag(), desc);
+			getComments(rawComments, T3D.activeProfile.getCommentTagsConfiguration().getAuthorTag(), author);
+			getComments(rawComments, T3D.activeProfile.getCommentTagsConfiguration().getConfigTag(), config);
+			getComments(rawComments, T3D.activeProfile.getCommentTagsConfiguration().getExceptionTag(), exception);
+			getComments(rawComments, T3D.activeProfile.getCommentTagsConfiguration().getMemberTag(), member);
+			getComments(rawComments, T3D.activeProfile.getCommentTagsConfiguration().getParamTag(), param);
+			getComments(rawComments, T3D.activeProfile.getCommentTagsConfiguration().getPurposeTag(), purpose);
+			getComments(rawComments, T3D.activeProfile.getCommentTagsConfiguration().getRemarkTag(), remark);
+			getComments(rawComments, T3D.activeProfile.getCommentTagsConfiguration().getReturnTag(), Return);
+			getComments(rawComments, T3D.activeProfile.getCommentTagsConfiguration().getSeeTag(), see);
+			getComments(rawComments, T3D.activeProfile.getCommentTagsConfiguration().getSinceTag(), since);
+			getComments(rawComments, T3D.activeProfile.getCommentTagsConfiguration().getStatusTag(), status);
+			getComments(rawComments, T3D.activeProfile.getCommentTagsConfiguration().getUrlTag(), url);
+			getComments(rawComments, T3D.activeProfile.getCommentTagsConfiguration().getVerdictTag(), verdict);
+			getComments(rawComments, T3D.activeProfile.getCommentTagsConfiguration().getVersionTag(), version);
+			
+			
+			if (T3D.activeProfile.isCheckConsistentTagUsage()) {
+				if (config.size() >= 2)
+					warnings.add(getWarningMultipleTags("@" + T3D.activeProfile.getCommentTagsConfiguration().getConfigTag()));
+				if (purpose.size() >= 2)
+					warnings.add(getWarningMultipleTags("@" + T3D.activeProfile.getCommentTagsConfiguration().getPurposeTag()));
+				if (Return.size() >= 2)
+					warnings.add(getWarningMultipleTags("@" + T3D.activeProfile.getCommentTagsConfiguration().getReturnTag()));
+				if (since.size() >= 2)
+					warnings.add(getWarningMultipleTags("@" + T3D.activeProfile.getCommentTagsConfiguration().getSinceTag()));
+				if (status.size() >= 2)
+					warnings.add(getWarningMultipleTags("@" + T3D.activeProfile.getCommentTagsConfiguration().getStatusTag()));
+				if (version.size() >= 2)
+					warnings.add(getWarningMultipleTags("@" + T3D.activeProfile.getCommentTagsConfiguration().getVersionTag()));
+
+				if (elementType != TTCN3ParserTokenTypes.TestcaseDef && config.size() >= 1) {
+					warnings.add(getWarningExtraTags("@" + T3D.activeProfile.getCommentTagsConfiguration().getConfigTag()));
+				}
+				if (elementType != TTCN3ParserTokenTypes.SignatureDef && exception.size() >= 1) {
+					warnings.add(getWarningExtraTags("@" + T3D.activeProfile.getCommentTagsConfiguration().getExceptionTag()));
+				}
+				if (elementType != TTCN3ParserTokenTypes.TypeDef
+						&& elementType != TTCN3ParserTokenTypes.TemplateDef
+						&& elementType != TTCN3ParserTokenTypes.ModuleParDef
+						&& elementType != TTCN3ParserTokenTypes.ConstDef
+						&& member.size() >= 1) {
+					warnings.add(getWarningExtraTags("@" + T3D.activeProfile.getCommentTagsConfiguration().getMemberTag()));
+				}
+				if (elementType != TTCN3ParserTokenTypes.TemplateDef
+						&& elementType != TTCN3ParserTokenTypes.SignatureDef
+						&& elementType != TTCN3ParserTokenTypes.FunctionDef
+						&& elementType != TTCN3ParserTokenTypes.AltstepDef
+						&& elementType != TTCN3ParserTokenTypes.TestcaseDef
+						&& param.size() >= 1) {
+					warnings.add(getWarningExtraTags("@" + T3D.activeProfile.getCommentTagsConfiguration().getParamTag()));
+				}
+				if (elementType != TTCN3ParserTokenTypes.TestcaseDef && purpose.size() >= 1) {
+					warnings.add(getWarningExtraTags("@" + T3D.activeProfile.getCommentTagsConfiguration().getPurposeTag()));
+				}
+				if (elementType != TTCN3ParserTokenTypes.FunctionDef && elementType != TTCN3ParserTokenTypes.SignatureDef && Return.size() >= 1) {
+					warnings.add(getWarningExtraTags("@" + T3D.activeProfile.getCommentTagsConfiguration().getReturnTag()));
+				}
+				if (elementType != TTCN3ParserTokenTypes.FunctionDef
+						&& elementType != TTCN3ParserTokenTypes.TestcaseDef
+						&& elementType != TTCN3ParserTokenTypes.AltstepDef
+						&& verdict.size() >= 1) {
+					warnings.add(getWarningExtraTags("@" + T3D.activeProfile.getCommentTagsConfiguration().getVerdictTag()));
+				}
+
+				for (String d : desc)
+					if (d.length() <= 0)
+						warnings.add(getWarningEmptyTags("@" + T3D.activeProfile.getCommentTagsConfiguration().getDescTag()));
+				for (String d : author)
+					if (d.length() <= 0)
+						warnings.add(getWarningEmptyTags("@" + T3D.activeProfile.getCommentTagsConfiguration().getAuthorTag()));
+				for (String d : config)
+					if (d.length() <= 0)
+						warnings.add(getWarningEmptyTags("@" + T3D.activeProfile.getCommentTagsConfiguration().getConfigTag()));
+				for (String d : exception)
+					if (d.length() <= 0)
+						warnings.add(getWarningEmptyTags("@" + T3D.activeProfile.getCommentTagsConfiguration().getExceptionTag()));
+				for (String d : member)
+					if (d.length() <= 0)
+						warnings.add(getWarningEmptyTags("@" + T3D.activeProfile.getCommentTagsConfiguration().getMemberTag()));
+				for (String d : param)
+					if (d.length() <= 0)
+						warnings.add(getWarningEmptyTags("@" + T3D.activeProfile.getCommentTagsConfiguration().getParamTag()));
+				for (String d : purpose)
+					if (d.length() <= 0)
+						warnings.add(getWarningEmptyTags("@" + T3D.activeProfile.getCommentTagsConfiguration().getPurposeTag()));
+				for (String d : remark)
+					if (d.length() <= 0)
+						warnings.add(getWarningEmptyTags("@" + T3D.activeProfile.getCommentTagsConfiguration().getRemarkTag()));
+				for (String d : Return)
+					if (d.length() <= 0)
+						warnings.add(getWarningEmptyTags("@" + T3D.activeProfile.getCommentTagsConfiguration().getReturnTag()));
+				for (String d : see)
+					if (d.length() <= 0)
+						warnings.add(getWarningEmptyTags("@" + T3D.activeProfile.getCommentTagsConfiguration().getSeeTag()));
+				for (String d : since)
+					if (d.length() <= 0)
+						warnings.add(getWarningEmptyTags("@" + T3D.activeProfile.getCommentTagsConfiguration().getSinceTag()));
+				for (String d : status)
+					if (d.length() <= 0)
+						warnings.add(getWarningEmptyTags("@" + T3D.activeProfile.getCommentTagsConfiguration().getStatusTag()));
+				for (String d : url)
+					if (d.length() <= 0)
+						warnings.add(getWarningEmptyTags("@" + T3D.activeProfile.getCommentTagsConfiguration().getUrlTag()));
+				for (String d : verdict)
+					if (d.length() <= 0)
+						warnings.add(getWarningEmptyTags("@" + T3D.activeProfile.getCommentTagsConfiguration().getVerdictTag()));
+				for (String d : version)
+					if (d.length() <= 0)
+						warnings.add(getWarningEmptyTags("@" + T3D.activeProfile.getCommentTagsConfiguration().getVersionTag()));
+			}
+		}
+	
+	for(String seeRef : see)
+		seeRefs.add(seeRef);
+	}
+	
+	private String getWarningMultipleTags(String tagname){
+		return "Multiple " + tagname + " tags found (may only contain one)";
+	}
+	
+	private String getWarningExtraTags(String tagname){
+		return tagname + " tag found (may not be used here)";
+	}
+	
+	private String getWarningEmptyTags(String tagname){
+		return "Empty tag found: " + tagname;
+	}
+	
+	
+	private String getIdentifier(String comment, int pos){
+		String subString = comment.substring(pos, comment.length());
+		
+		int endpos = subString.indexOf(" ");
+		if(endpos == -1)
+			endpos = subString.length();
+//		System.out.println("-" + subString.substring(0, endpos) + "-");
+		return subString.substring(0, endpos).trim();		
+	}
+	
+	private String replaceTag(String c, String tag){
+		int pos;
+		c += " ";
+		while(c.contains(" @" + tag + " ")){
+			pos = c.indexOf(" @" + tag + " ");
+			if(pos != -1){
+				String identifier = getIdentifier(c, pos+ (tag.length() + 3));
+				c = c.replaceAll("@" + tag + " " + identifier + " ", "<" + tag + ">" + identifier + "</" + tag + ">");
+			}else
+				break;
+		}
+		return c.trim();
+	}
+	
+	private String replaceSee(String c){
+		return replaceTag(c, "esee");
+	}
+	
+	private String replaceUrl(String c){
+		return replaceTag(c, "eurl");
+	}
+	
+	private String formatComment(String c){
+		return StringEscapeUtils.escapeXml(c).replaceAll("  ", " ").replaceAll("\n", " ").replaceAll("\t", " ").replaceAll("\r", "");
+
+	}
+	
+	public String toString(){
+		commentsXML = "";
+		if(!isEmpty()){
+			commentsXML += "\n<comment>";
+			for(String d : desc)
+				commentsXML += ("\n<desc>" + replaceUrl(replaceSee(formatComment(d))) + "</desc>");
+			
+			for(String d : author)
+				commentsXML += ("\n<author>" + replaceUrl(replaceSee(formatComment(d))) + "</author>");
+			
+			for(String d : config)
+				commentsXML += ("\n<config>" + replaceUrl(replaceSee(formatComment(d))) + "</config>");
+		
+			for(String d : exception)
+				commentsXML += ("\n<exception>" + replaceUrl(replaceSee(formatComment(d))) + "</exception>");
+		
+			for(String d : member)
+				commentsXML += ("\n<member>" + replaceUrl(replaceSee(formatComment(d))) + "</member>");
+
+			for(String d : param)
+				commentsXML += ("\n<param>" + replaceUrl(replaceSee(formatComment(d))) + "</param>");
+			for(String d : purpose)
+				commentsXML += ("\n<purpose>" + replaceUrl(replaceSee(formatComment(d))) + "</purpose>");
+					
+			for(String d : remark)
+				commentsXML += ("\n<remark>" + replaceUrl(replaceSee(formatComment(d))) + "</remark>");
+			
+			for(String d : Return)
+					commentsXML += ("\n<return>" + replaceUrl(replaceSee(formatComment(d))) + "</return>");
+			
+			for(String d : see)
+				commentsXML += ("\n<see>" + formatComment(d) + "</see>");
+			
+			for(String d : since)
+				commentsXML += ("\n<since>" + replaceUrl(replaceSee(formatComment(d))) + "</since>");
+			
+			for(String d : status)
+				commentsXML += ("\n<status>" + replaceUrl(replaceSee(formatComment(d))) + "</status>");
+			
+			for(String d : url)
+				commentsXML += ("\n<url>" + formatComment(d) + "</url>");
+			
+			for(String d : verdict)
+				commentsXML += ("\n<verdict>" + replaceUrl(replaceSee(formatComment(d))) + "</verdict>");
+			
+			for(String d : version)
+				commentsXML += ("\n<version>" + replaceUrl(replaceSee(formatComment(d))) + "</version>");
+			
+			commentsXML += "</comment>";
+						
+		}
+		if(commentsXML.length() > 20)
+			return commentsXML;
+		else
+			return "";
+	}
+	
+	private boolean isEmpty(){
+		return false;
+	}
+		
+	private void getComments(String commentblock, String tag, LinkedList<String> vector){
+		Pattern p = Pattern.compile("@" + tag + "(.|\\n)*\\r___NEWTAG___");
+		Matcher m = p.matcher(commentblock);
+		while (m.find() == true){
+			String comment = m.group().replaceFirst("@"+tag, "").replaceFirst("\r___NEWTAG___", "").trim();
+			vector.add(comment);
+		}		
+	}
+	
+	public LinkedList<String> getDocumentedParameters(){
+		LinkedList <String> docParNames = new LinkedList<String>();		
+		for(String parString : param){
+			if(parString.indexOf(" ") > 0)
+				docParNames.add(parString.substring(0, parString.indexOf(" ")));
+		}		
+		return docParNames;
+	}
+
+	public LinkedList<String> getDescriptions(){
+		LinkedList <String> descriptions = new LinkedList<String>();		
+		for(String descString : desc)
+				descriptions.add(descString);
+		return descriptions;
+	}
+	
+	public LinkedList<String> getWarnings() {
+		return warnings;
+	}	
+}
Index: /trunk/t3d/src/elements/TTCN3Element.java
===================================================================
--- /trunk/t3d/src/elements/TTCN3Element.java	(revision 7)
+++ /trunk/t3d/src/elements/TTCN3Element.java	(revision 7)
@@ -0,0 +1,127 @@
+package elements;
+
+import java.util.LinkedList;
+
+import org.etsi.common.logging.LoggingInterface.MessageClass;
+import org.etsi.t3d.T3D;
+
+
+public class TTCN3Element{
+
+	private String type;
+	private int LEVEL0 = 0;
+	protected String behaviour;
+	protected TTCN3Comment comment = null;
+	protected String name = "";
+	protected String location = "";
+	protected String paramView = "";
+	protected String refs = "";
+	protected String path = "";
+	private LinkedList <String[]> descs = new LinkedList<String[]>();
+	
+	public TTCN3Element() {
+		
+	}
+	
+	//TODO: using type codes will be presumably preferable
+	//TODO: HELP!!! THIS IS A DISASTER!!!!! REORGANIZE AND REFACTOR
+	public TTCN3Element(String name, String type, String location,
+			String behaviour, TTCN3Comment comment, 
+			LinkedList <String> parNames, String filename, String paramView, String path, int line){
+		this.name = name;
+		this.location = location;
+		this.behaviour = behaviour;
+		this.comment = comment;
+		this.type = type;
+		this.paramView = paramView;
+		this.path = path;
+		
+		
+		
+		for(String warning : comment.getWarnings()) {
+			
+//			TODO: revise XML usage
+//			T3D.printLog(LEVEL0, filename, line, line, 1, warning);
+			T3D.getLoggingInterface().logWarning(line, line, MessageClass.DOCUMENTATION, warning);
+		}
+		
+		LinkedList <String> descsStrings = comment.getDescriptions();
+		for(String descString : descsStrings){
+			String[] descArray = {descString, filename, "" + line}; 
+			descs.add(descArray);
+		}
+		
+		
+		
+		LinkedList <String> docParNames = comment.getDocumentedParameters();
+		
+		
+		LinkedList <String> unDocParNames = new LinkedList<String>();
+		LinkedList <String> docUnparNames = new LinkedList<String>();
+		if(!parNames.isEmpty() && T3D.activeProfile.isCheckUndocumentedParameters()){
+			for(String parString : parNames){
+				boolean isDocumented = false;
+				for(String docParString : docParNames){
+					if(parString.startsWith(docParString + " "))
+						isDocumented = true;
+				}
+				if(!isDocumented)
+					unDocParNames.add(parString);
+			}
+			
+			
+			for(String docParString : docParNames){
+				boolean isParameter = false;
+				for(String parString : parNames){
+					if(parString.startsWith(docParString + " "))
+						isParameter = true;
+				}
+				if(!isParameter)
+					docUnparNames.add(docParString);
+			}
+			
+			for(String s : unDocParNames){
+				String parName = s.substring(0, s.indexOf(' '));
+				Integer parLine = Integer.valueOf(s.substring(s.indexOf(' ')+1)).intValue();
+				String warning = "Undocumented parameter found: " + parName ;
+//				TODO: review XML usage
+//				T3D.printLog(LEVEL0, filename, parLine, parLine, 1, warning);
+				T3D.getLoggingInterface().logWarning(parLine, parLine, MessageClass.DOCUMENTATION, warning);
+			}
+			
+			for(String s : docUnparNames){
+				String warning = "Documented parameter not found: " + s ;
+				//TODO: review XML usage
+//				T3D.printLog(LEVEL0, filename, line, line, 1, warning);
+				T3D.getLoggingInterface().logWarning(line, line, MessageClass.DOCUMENTATION, warning);
+
+			}
+		}
+	}
+	
+	public String toXML(String currentModule){
+		return "<element type=\"" + type + "\">\n" +
+				"<name>" + name + "</name>\n" +
+				"<location>" + location + "</location>\n" +
+				comment.toString() +
+				"<behaviour>" + behaviour.replaceAll("<tab/>", "     ") + "</behaviour>" +
+				"<modulename>" + currentModule + "</modulename>" +
+				paramView +
+				refs +
+				path +
+				"</element>";
+	}
+	
+	public String getType(){
+		return type;
+	}
+	public LinkedList<String[]> getDescs() {
+		return descs;
+	}
+	public String getName(){
+		return name;
+	}
+	public String getLocation(){
+		return location;
+	}
+}
Index: /trunk/t3d/src/org/etsi/t3d/DependencyPrinter.java
===================================================================
--- /trunk/t3d/src/org/etsi/t3d/DependencyPrinter.java	(revision 7)
+++ /trunk/t3d/src/org/etsi/t3d/DependencyPrinter.java	(revision 7)
@@ -0,0 +1,78 @@
+package org.etsi.t3d;
+
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.PrintStream;
+
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.LocationAST;
+
+public class DependencyPrinter {
+	private PrintStream stream;
+	private String currentTTCN3File;
+	
+	public void finishXML(){
+		writeStream("\n</dependencies>");
+		
+	}
+	
+	public void newElement(String name, String id, int type, int line,
+			String module, String dependencies) {
+		writeStream("\n\t<element id=\""
+				+ id
+				+ "\" name=\""
+				+ name
+				+ "\" type=\""
+				+ LocationAST.getTTCN3ParserTokenTypeTypePrettyName(type)
+				+ "\" line=\""
+				+ line
+				+ "\" module=\""
+				+ module
+				+ "\" file=\""
+				+ currentTTCN3File.substring(currentTTCN3File.lastIndexOf("/") + 1)
+				+ "\">");
+		writeStream(dependencies);
+		writeStream("\n\t</element>\n");
+	}
+
+	public void newGroup(String name, String id, int type, int line, String module,
+			String elementList) {
+		writeStream("\n\t<element id=\""
+				+ id
+				+ "\" name=\""
+				+ name
+				+ "\" type=\""
+				+ LocationAST.getTTCN3ParserTokenTypeTypePrettyName(type)
+				+ "\" line=\""
+				+ line
+				+ "\" module=\""
+				+ module
+				+ "\" file=\""
+				+ currentTTCN3File.substring(currentTTCN3File.lastIndexOf("/") + 1)
+				+ "\">");
+		writeStream(elementList);
+		writeStream("\n\t</element>\n");
+	}
+	
+	public void setXMLPath(String xmlpath){
+		FileOutputStream file;
+		try {
+			file = new FileOutputStream(xmlpath);
+			stream = new PrintStream(file);
+		} catch (FileNotFoundException e) {
+			e.printStackTrace();
+		}
+		writeStream("<?xml-stylesheet type=\"text/xsl\" href=\"../dependencies.xsl\"?>\n<dependencies>");
+	}
+
+	private void writeStream(String content){
+		stream.print(content);
+	}
+	
+	public void setCurrentTTCN3File(String currentTTCN3File) {
+		this.currentTTCN3File = currentTTCN3File;
+	}
+
+	public String getCurrentTTCN3File() {
+		return currentTTCN3File;
+	}
+}
Index: /trunk/t3d/src/org/etsi/t3d/ImportPrinter.java
===================================================================
--- /trunk/t3d/src/org/etsi/t3d/ImportPrinter.java	(revision 7)
+++ /trunk/t3d/src/org/etsi/t3d/ImportPrinter.java	(revision 7)
@@ -0,0 +1,175 @@
+package org.etsi.t3d;
+
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.PrintStream;
+import java.util.LinkedList;
+
+import org.apache.commons.lang.StringEscapeUtils;
+import org.etsi.common.logging.LoggingInterface;
+import org.etsi.common.logging.LoggingInterface.MessageClass;
+import org.etsi.t3d.visitor.VisitorCommonFunctions;
+
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.ASTUtil;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.LocationAST;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.TTCN3ParserTokenTypes;
+
+public class ImportPrinter {
+	private PrintStream stream;
+	private boolean firstModule = true;
+	private LinkedList<String> modules = new LinkedList<String>();
+	private LinkedList<String> locationsGlobal = new LinkedList<String>();
+	private String currentTTCN3File;
+	private LoggingInterface logger = null;
+	
+	public ImportPrinter() {
+		this.logger = new LoggingInterface(T3D.activeProfile.getLoggingConfiguration());
+		this.logger.setMaximumLogLevel(T3D.getLogLevel());
+	}
+	
+	public void finishXML(){
+		writeStream("\n</module>\n</imports>");		
+	}
+
+	public void setXMLPath(String xmlpath){
+		FileOutputStream file;
+		try {
+			file = new FileOutputStream(xmlpath);
+			stream = new PrintStream(file);
+		} catch (FileNotFoundException e) {
+			e.printStackTrace();
+		}
+		writeStream("\n<imports t3dversion=\"" + T3D.versionNumber + "\">");
+	}
+
+	private void writeStream(String content){
+		stream.print(content);
+	}
+	
+	public void setCurrentTTCN3File(String currentTTCN3File) {
+		this.currentTTCN3File = currentTTCN3File;
+	}
+
+	public String getCurrentTTCN3File() {
+		return currentTTCN3File;
+	}
+	
+	public void printImportView(LocationAST node){
+		LinkedList<LocationAST> ImportDefs = ASTUtil.findTypeNodes(node, TTCN3ParserTokenTypes.ImportDef);
+		for(LocationAST importDef : ImportDefs){
+			LocationAST importModuleIdentifier = importDef;
+			while(importModuleIdentifier.getFirstChild() != null)
+				importModuleIdentifier = importModuleIdentifier.getFirstChild();			
+			LocationAST importedModuleIdentifier = VisitorCommonFunctions.getDeclarationNodeFromIdentifier(importModuleIdentifier);
+			
+			if(!locationsGlobal.contains(importModuleIdentifier.getText())){
+				listAdd(locationsGlobal,VisitorCommonFunctions.getName(node.getFirstChild()));
+				
+				String behaviour = getImportBehavior(importDef);
+				
+				writeStream("\n<import name=\"" + importModuleIdentifier.getText() + "\">"
+					+ "\n\t\t<import_behaviour>" + behaviour + "\n\t\t</import_behaviour>");
+				if(!ASTUtil.findTypeNodes(importDef, TTCN3ParserTokenTypes.AllKeyword).isEmpty()){
+					listAdd(locationsGlobal, importModuleIdentifier.getText());
+					if(importedModuleIdentifier != null)
+						printImportView(VisitorCommonFunctions.getModule(importedModuleIdentifier));
+				}
+				
+				writeStream("\n</import>");
+			} else{
+				String behaviour = getImportBehavior(importDef);
+				writeStream("\n<import name=\"" + importModuleIdentifier.getText() + "\">"
+						+ "\n\t\t<import_behaviour>" + behaviour + "\n\t\t</import_behaviour>\n</import>");
+			}
+		}
+	}
+	
+	private String getImportBehavior(LocationAST importDef){
+		String b = VisitorCommonFunctions.getWholeElement(importDef, true).replaceAll("\\r", "");
+		b = StringEscapeUtils.escapeXml(b);
+		b = b.replaceAll("\\n", "").trim();
+		if(b.indexOf('{') > 0 && b.indexOf('}') > b.indexOf('{'))
+			b = b.substring(b.indexOf('{') + 1, b.indexOf('}'));
+		else
+			b = b.replaceFirst("import from \\w* ", "");
+		b = VisitorCommonFunctions.replaceReferences(b, VisitorCommonFunctions.getReferences(importDef));
+		return b.trim();
+	}
+	
+	private void listAdd(LinkedList<String> list, String string){
+		if(!list.contains(string))
+			list.add(string);
+	}
+	
+	public void checkForCyclicImports(LocationAST node, LinkedList<String> locations){
+		LinkedList<LocationAST> ImportDefs = ASTUtil.findTypeNodes(node, TTCN3ParserTokenTypes.ImportDef);	
+		for(LocationAST importDef : ImportDefs){
+			LocationAST importModuleIdentifier = importDef;
+			while(importModuleIdentifier.getFirstChild() != null)
+				importModuleIdentifier = importModuleIdentifier.getFirstChild();			
+			LocationAST importedModuleIdentifier = VisitorCommonFunctions.getDeclarationNodeFromIdentifier(importModuleIdentifier);			
+			if(!locations.contains(importModuleIdentifier.getText())){
+				LinkedList<String> newLocations = new LinkedList<String>();
+				for(String l : locations)
+					newLocations.add(l);
+				listAdd(newLocations, VisitorCommonFunctions.getName(node.getFirstChild()));
+				listAdd(newLocations, importModuleIdentifier.getText());
+				
+				
+				String behaviour = VisitorCommonFunctions.getBehaviour(importDef, 0, false, true);
+
+				behaviour = behaviour.substring(behaviour.indexOf("</link>") + 7).trim();
+				if(behaviour.charAt(0) == '{' && behaviour.charAt(behaviour.length()-1) == '}')
+					behaviour = behaviour.substring(1, behaviour.length()-1);
+
+				behaviour = behaviour.replaceAll("\\s;", "").replaceAll("<constructbody id=\".*\">", "").replaceAll("</constructbody>", "");;
+				
+				behaviour = behaviour.trim();
+				if(behaviour.charAt(0) == '{')
+					behaviour = behaviour.replaceAll("\\{", "").replaceAll("\\}", "");
+				behaviour = behaviour.replaceAll("\\n", "");
+
+				if(behaviour.startsWith("all") || behaviour.startsWith("recursive all"))
+					checkForCyclicImports(VisitorCommonFunctions.getModule(importedModuleIdentifier), newLocations);
+			} else if(locations.getFirst().equals(importModuleIdentifier.getText())){
+				String warning = "";
+				for(String l : locations) {
+					warning += " -> " + l;
+				}
+				warning = "Cyclic imports found: " + warning.substring(4) + " -> " + locations.getFirst();
+				this.getLoggingInterface().logWarning(importModuleIdentifier.getLine(),
+						importModuleIdentifier.getLine(),
+						MessageClass.DOCUMENTATION,
+						warning);
+				//TODO: revise XML usage
+				//T3D.printLog(0, currentTTCN3File, importModuleIdentifier.getLine(), importModuleIdentifier.getLine(), 1, warning);
+			}
+		}
+	}
+	
+	public void newModule(String name) {
+		locationsGlobal = new LinkedList<String>();
+		String moduleName = name;
+		if (modules.contains(name)) {
+			int repetitionIndex = 0; 
+			while(modules.contains(name + "-"+repetitionIndex)){
+				repetitionIndex++;
+			}
+			moduleName = name + "-" + repetitionIndex;
+		}
+		modules.add(moduleName);
+		if(!firstModule)
+			writeStream("\n</module>");
+		else
+			firstModule = false;
+		writeStream("\n<module name=\"" + moduleName + "\">");		
+	}
+
+	public void setLoggingInterface(LoggingInterface logger) {
+		this.logger = logger;
+	}
+
+	public LoggingInterface getLoggingInterface() {
+		return logger;
+	}
+}
Index: /trunk/t3d/src/org/etsi/t3d/T3D.java
===================================================================
--- /trunk/t3d/src/org/etsi/t3d/T3D.java	(revision 7)
+++ /trunk/t3d/src/org/etsi/t3d/T3D.java	(revision 7)
@@ -0,0 +1,838 @@
+package org.etsi.t3d;
+
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.List;
+
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+
+import org.apache.commons.cli.CommandLine;
+import org.apache.commons.cli.CommandLineParser;
+import org.apache.commons.cli.GnuParser;
+import org.apache.commons.cli.HelpFormatter;
+import org.apache.commons.cli.Option;
+import org.apache.commons.cli.ParseException;
+import org.etsi.t3d.config.T3DConfig;
+import org.etsi.t3d.config.DocumentationProfile;
+import org.etsi.t3d.config.T3DOptionsHandler;
+import org.etsi.t3d.exceptions.TTCN3BehaviorException;
+import org.etsi.t3d.exceptions.TTCN3ParserException;
+import org.etsi.t3d.visitor.DependencyVisitor;
+import org.etsi.t3d.visitor.ImportVisitor;
+import org.etsi.t3d.visitor.T3DVisitor;
+import org.etsi.common.InputInterface;
+import org.etsi.common.MiscTools;
+import org.etsi.common.configuration.ConfigTools;
+import org.etsi.common.exceptions.TerminationException;
+import org.etsi.common.logging.LoggingInterface;
+import org.etsi.common.logging.LoggingInterface.LogLevel;
+import org.xml.sax.SAXException;
+
+import antlr.MismatchedTokenException;
+import antlr.RecognitionException;
+import antlr.TokenStreamException;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.LocationAST;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.TTCN3Analyzer;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.TTCN3AnalyzerFlyweightFactory;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.TTCN3Parser;
+
+public class T3D {
+
+	public static String versionNumber = "v1.0.2";
+	//set during automated server builds
+	private static String buildStamp = "---BUILD_STAMP---";
+	public static DocumentationProfile activeProfile = null;
+	private String configurationClassName = T3DConfig.class.getName();
+	private String configurationProfileClassName = DocumentationProfile.class.getName();
+	private String configurationFilename;
+	private String selectedProfileName = null;
+	private static LogLevel logLevel = LogLevel.INFORMATION;
+
+	private HashMap<String, String> argsMap = new HashMap<String, String>();
+	private ArrayList<String> inputPaths = new ArrayList<String>();
+	private String destinationPath = null;
+
+	private HashMap<String, Integer> linesOfCodeMap = new HashMap<String, Integer>();
+	private int totalLoc = 0;
+
+	private boolean generateNewConfiguration = false;
+	
+	private static boolean generateMainXML = false;
+	private static boolean generateDependenciesXML = false;
+	private static boolean generateHTML = false;
+	
+	private static XMLPrinter xmlPrinter;
+	private static ImportPrinter importPrinter;
+	private static DependencyPrinter depPrinter;
+	//TODO: START HERE, remove and substitute by a method that derives the names based on the TTCN3ParserTokenTypes
+	//WHAT ABOUT EXTERNAL FUNCTIONS???
+	//public final static String elementTypes[] = {"Module", "Function", "Testcase", "Group", "Altstep", "Constant", "Module Parameter", "Template", "Type", "Signature"};
+	private static final String documentationLogFile = "log.xml";
+	private static final String documentationXmlFile = "project.xml";
+	private static final String dependencyXmlFile = "dependencies.xml";
+	private static final String importXmlFile = "imports.xml";
+	private String xsdFile = System.getenv("T3D_HOME")+"/xsd/project_schema.xsd";
+
+	//private static T3DLoggingInterface loggingInterface = new T3DLoggingInterface();
+
+	//TODO: TEMPORARY SOLUTION UNTIL MAJOR OTHER ISSUES ARE RESOLVED
+	private static LoggingInterface logger = null;
+	
+	public T3D() {
+	}
+
+//	public static void printLog(int LEVEL, String filename, int startLine, int endLine, int type, String output){
+//		loggingInterface.printLog(LEVEL, filename, startLine, endLine, type, output);
+//	}
+
+	// --------------------------------------------------------------------------
+
+	public void showHelp() {
+		System.out.println("\nHelp:");
+//		System.out.println("  t3d[.bat] [options] (path | filename)+");
+//		System.out.println("");
+//		System.out.println("  Options (specify in any order): ");
+//		System.out.println("    --help - prints this screen");
+//		System.out.println("    --profile [profilename] - allows manual profile selection, overriding the selected default profile");
+//		System.out.println("");
+		HelpFormatter formatter = new HelpFormatter();
+		formatter.setOptionComparator(new Comparator<Option>() {
+			
+			@Override
+			public int compare(Option o1, Option o2) {
+				if (o1.getId() > o2.getId()) {
+					return 1;
+				} else {
+					return -1;
+				}
+			}
+		});
+		formatter.setSyntaxPrefix("  Usage: ");
+//		formatter.setWidth(74);
+		formatter.printHelp("t3d [options] ((--html | --xml-only) | --local-dependencies)+ (filename | path)+", "  Options: (in any order, config and at least one output format are required)",
+				new T3DOptionsHandler().getOptions(), "");
+		System.out.println("");
+	}
+	
+	// --------------------------------------------------------------------------
+	private void showDebugInfo(String[] args) {
+		if (getLogLevel().equals(LogLevel.DEBUG)) {
+			System.out.println("==================ARGS:===================");
+			for (int a = 0; a < args.length; a++) {
+				System.out.println("" + args[a]);
+			}
+			System.out.println("==================PROPERTIES:=============");
+			for(Object key : System.getProperties().keySet()) {
+				System.out.println("   "+key.toString() + " : "+System.getProperty(key.toString()));
+			}
+			System.out.println("==========================================");
+		}
+	}
+	// --------------------------------------------------------------------------
+
+	public void run(String[] args) {
+		System.out.println("T3D " + getVersionNumber());
+		System.out.println("Build " + getBuildStamp());
+		System.out.println("  TTCN-3 version supported: "
+				+ TTCN3Parser.getSupportedVersion());
+		System.out.println("==========================================");
+		try {
+			if (handleCommandLineArguments(args) == false) {
+				return;
+			}
+			showDebugInfo(args);
+			if (selectedProfileName != null) {
+				handleConfig(selectedProfileName);
+			} else {
+				handleConfig(null);
+			}
+		} catch (TerminationException e) {
+			// TODO: handle exception
+			System.out.println("ERRORING OUT!");
+		}
+		
+		TTCN3Parser.disableStatementBlockCompatibilityMode();
+		TTCN3Parser.enableStatementBlockCompatibilityMode();
+		
+		List<String> ttcn3Resources = new InputInterface(T3D.activeProfile.getResourceExtensionsRegExp(), T3D.activeProfile.getProjectExtension(),
+				T3D.activeProfile.isSettingRecursiveProcessing()).getInputFromParameterList(inputPaths);
+		ttcn3Resources = InputInterface.filterAbsoluteDuplicates(ttcn3Resources); 
+
+		if (ttcn3Resources.isEmpty()) {
+			// Terminate
+			System.out.println("No ttcn3 files found!");
+			showHelp();
+			return;
+		}
+
+		long startTime = System.currentTimeMillis();
+		TTCN3Analyzer analyzer = null;
+		
+		try {
+			System.out.println("Parsing files...");
+			for (int i = 0; i < ttcn3Resources.size(); i++) {
+				String resourcePath = ttcn3Resources.get(i);
+				analyzeFile(resourcePath);
+				TTCN3AnalyzerFlyweightFactory analyzerFactory = TTCN3AnalyzerFlyweightFactory
+						.getInstance();
+				analyzer = analyzerFactory.getTTCN3Analyzer(ttcn3Resources
+						.get(i));
+				if (analyzer.getExceptions().size() > 0) {
+
+					// TODO: in eclipse the error stream seems to be delayed
+					// somewhat
+					// -> Investigate
+					// -> The terminal seems to handle this properly in contrast
+					if (T3D.activeProfile.isSettingAbortOnError()) {
+						throw new TTCN3ParserException(
+								"Error while parsing file "
+										+ analyzer.getFilename());
+					} else {
+						try {
+							throw new TTCN3ParserException(
+									"Error while parsing file "
+											+ analyzer.getFilename());
+						} catch (TTCN3ParserException e) {
+							System.err.println(e.getLocalizedMessage());
+							for (int i1 = 0; i1 < analyzer.getExceptions()
+									.size(); i1++) {
+								System.err.println("Line "
+										+ analyzer.getExceptions().get(i1)
+												.getLine()
+										+ ": "
+										+ analyzer.getExceptions().get(i1)
+												.getMessage());
+							}
+							// e.printStackTrace();
+						}
+					}
+				}			
+			}
+			long endTime = System.currentTimeMillis();
+			long elapsed = endTime - startTime;
+			double elapsedMinutes = ((double) elapsed) / 1000.0 / 60.0;
+			System.out.println("Done parsing in " + elapsed + "ms ("
+					+ MiscTools.doubleToString(elapsedMinutes) + " minutes).");
+			
+			if (T3D.activeProfile.isStatShowLOC()) {
+				System.out.println("Total lines of code parsed: " + totalLoc);
+			}
+			
+			TTCN3AnalyzerFlyweightFactory analyzerFactory = TTCN3AnalyzerFlyweightFactory
+			.getInstance();
+			
+			System.out.println("Postprocessing...");
+			startTime = System.currentTimeMillis();
+			analyzerFactory.postProcess();
+			endTime = System.currentTimeMillis();
+			elapsed = endTime - startTime;
+			elapsedMinutes = ((double) elapsed) / 1000.0 / 60.0;
+			System.out.println("Done processing in " + elapsed + "ms ("
+					+ MiscTools.doubleToString(elapsedMinutes) + " minutes).");
+			startTime = System.currentTimeMillis();
+
+			System.out.println("==========================================");
+			//TODO: up to here mostly identical, make reusable
+			
+			//TODO: custom functionality
+			initialize();
+			handlePaths();
+			
+			//TODO: core functionality, encapsulate, split, and extract
+			for (int i = 0; i < ttcn3Resources.size(); i++) {
+				analyzer = analyzerFactory.getTTCN3Analyzer(ttcn3Resources
+						.get(i));
+				System.out.println("Preparing documentation for "
+						+ analyzer.getFilename());
+//TODO: review logging interface
+				//loggingInterface.setCurrentTTCN3File(analyzer.getFilename());
+				T3D.getLoggingInterface().setLogSourceName(analyzer.getFilename());
+				if (isGenerateMainXML() || isGenerateHTML()) {
+					T3DVisitor visitor = new T3DVisitor(xmlPrinter);
+					visitor.setFilename(analyzer.getFilename());
+					ImportVisitor importVisitor = new ImportVisitor(importPrinter);
+					importVisitor.setFilename(analyzer.getFilename());
+//					xmlPrinter.setCurrentTTCN3File(analyzer.getFilename());
+					// visitor.setFilename(analyzer.getFilename());
+					visitor.acceptDFS((LocationAST) analyzer.getParser().getAST());
+					importVisitor.acceptDFS((LocationAST) analyzer.getParser().getAST());
+				}
+				if (isGenerateDependenciesXML()) {
+					DependencyVisitor dependencyVisitor = new DependencyVisitor(depPrinter);
+					depPrinter.setCurrentTTCN3File(analyzer.getFilename());
+					dependencyVisitor.acceptDFS((LocationAST) analyzer.getParser().getAST());
+				}
+
+			}
+			endTime = System.currentTimeMillis();
+			elapsed = endTime - startTime;
+			elapsedMinutes = ((double) elapsed) / 1000.0 / 60.0;
+			System.out.println("Documentation preparation finished in "
+					+ elapsed + "ms (" + MiscTools.doubleToString(elapsedMinutes)
+					+ " minutes).");
+
+			if (T3D.activeProfile.isStatShowLOC()) {
+				System.out
+						.println("Total lines of code processed: " + totalLoc);
+			}
+
+			//TODO: custom functionality
+			handleOutput();
+
+			//TODO: move summary here
+			if (T3D.activeProfile.isStatShowSummary()) {
+//				System.out.println("Brief statistics summary of occurences in message classes:");
+//				for (MessageClass m : MessageClass.values()) {
+//					System.out.println("\t" + m.getDescription() + " : "
+//							+ m.getOccurenceCount());
+//				}
+			}
+		} catch (TTCN3BehaviorException e) {
+			System.err.println(e.getLocalizedMessage());
+		} catch (TTCN3ParserException e) {
+			// Default setting where processing is terminated in the event of a
+			// parsing error
+			System.err.println(e.getLocalizedMessage());
+			for (int i = 0; i < analyzer.getExceptions().size(); i++) {
+				System.err.println("Line "
+						+ analyzer.getExceptions().get(i).getLine() + ": "
+						+ analyzer.getExceptions().get(i).getMessage());
+			}
+			// TODO: Isolate different steps and implement a recovery mechanism:
+
+		}
+	}
+
+	private void initialize() {
+		T3D.setLoggingInterface(new LoggingInterface(T3D.activeProfile.getLoggingConfiguration()));
+		if (isGenerateMainXML() || isGenerateHTML()) {
+			xmlPrinter = new XMLPrinter();
+			importPrinter = new ImportPrinter();
+		}
+		if (isGenerateDependenciesXML()) {
+			depPrinter = new DependencyPrinter();
+		}
+		
+	}
+
+	private void handlePaths() {
+		String finalOutputPath = getFinalOutputPath(this.getDestinationPath());
+		
+		String finalXMLfilePath = finalOutputPath + File.separator + documentationXmlFile;
+		String finalDependencyfilePath = finalOutputPath + File.separator + dependencyXmlFile;
+		String finalImportfilePath = finalOutputPath + File.separator + importXmlFile;
+		String finalLogfilePath = finalOutputPath + File.separator + documentationLogFile;
+		//System.out.println("*********" + finalXMLfilePath);
+		
+		System.out.println("Output path: "+finalOutputPath);
+		
+		if (!(new File(finalOutputPath).isDirectory())) {
+			new File(finalOutputPath).mkdirs();
+		}
+		if (isGenerateMainXML() || isGenerateHTML()) {
+			xmlPrinter.setXMLPath(finalXMLfilePath);
+			importPrinter.setXMLPath(finalImportfilePath);
+		}
+		if (isGenerateDependenciesXML()) {
+			depPrinter.setXMLPath(finalDependencyfilePath);
+		}
+		//TODO: revise XML usage
+		//loggingInterface.setXMLPath(finalLogfilePath);
+	}
+
+	
+	private void handleOutput() {
+		//TODO: this is duplicated in handlePaths
+		String finalOutputPath = getFinalOutputPath(this.getDestinationPath());
+		generateXML();
+		// TODO: uncomment
+		//validateXMLoutput(finalOutputPath);
+		handleTransformation(finalOutputPath);
+	}
+
+	private String getFinalOutputPath(String outputDirectory) {
+		return MiscTools.getProperOutputPath(outputDirectory) + File.separator + MiscTools.getSubPath(inputPaths.get(0));
+	}
+
+	private void generateXML() {
+		if (isGenerateMainXML() || isGenerateHTML()) {
+			xmlPrinter.finishXML();
+			importPrinter.finishXML();
+		}
+		if (isGenerateDependenciesXML()) {
+			depPrinter.finishXML();
+		}
+		// TODO: what do we do with this one?
+		//loggingInterface.finishXML();
+	}
+
+	private void validateXMLoutput(String finalOutputPath) {
+		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+
+		factory.setValidating(true);
+
+		factory.setAttribute(
+				"http://java.sun.com/xml/jaxp/properties/schemaLanguage",
+				"http://www.w3.org/2001/XMLSchema");
+		factory.setAttribute(
+				"http://java.sun.com/xml/jaxp/properties/schemaSource",
+				new File(xsdFile));
+		try {
+			factory.newDocumentBuilder().parse("file:///"+
+					new File(finalOutputPath + "/" + documentationXmlFile).getAbsolutePath());
+		} catch (ParserConfigurationException e) {
+			System.out.println("Parser not configured: " + e.getMessage());
+		} catch (SAXException e) {
+			System.out.print("Parsing XML failed due to a "
+					+ e.getClass().getName() + ":");
+			System.out.println(e.getMessage());
+		} catch (IOException e) {
+			System.out.println("Validation failed due to an IO Error!" +
+					"\n  File: "+new File(finalOutputPath + "/" + documentationXmlFile).getAbsolutePath());
+			e.printStackTrace();
+		}
+	}
+
+	private void handleTransformation(String outputPath) {
+		long start;
+		long end;
+		long dur;
+		double durMinutes;
+		if (isGenerateHTML()) {
+			start = System.currentTimeMillis();
+			System.out.print("Generating html...");
+			xml2html(outputPath, documentationXmlFile, T3D.activeProfile.getXsltFileHTML());
+			xml2html(outputPath, importXmlFile, T3D.activeProfile.getXsltFileImport());
+			end = System.currentTimeMillis();
+			dur = end - start;
+			durMinutes = ((double) dur) / 1000.0 / 60.0;
+			System.out.println(" Generated " + (xmlPrinter.getFileCount())
+					+ " HTML files in " + dur + "ms (" + MiscTools.doubleToString(durMinutes)
+					+ "minutes),");
+
+			MiscTools.streamCopyFile(T3D.activeProfile.getCssFile(),
+					outputPath
+							+ "/html/css/"
+							+ new File(T3D.activeProfile.getCssFile())
+									.getName());
+			MiscTools.streamCopyFile(T3D.activeProfile.getJsFile(),
+					outputPath
+							+ "/html/js/"
+							+ new File(T3D.activeProfile.getJsFile())
+									.getName());
+		}
+	}
+	
+    private void xml2html(String foldername, String xmlFileName, String xsltFileName){    	
+    	System.setProperty("javax.xml.transform.TransformerFactory",
+    	"net.sf.saxon.TransformerFactoryImpl");
+    	
+    	TransformerFactory tfactory = TransformerFactory.newInstance();
+    	Transformer transformer;
+		try {
+			transformer = tfactory.newTransformer(new StreamSource(new File(xsltFileName)));
+			transformer.setParameter("folder", foldername);
+			if(activeProfile.isIncludeConstructBody())
+				transformer.setParameter("includeconstructbodies", "true");
+			else 
+				transformer.setParameter("includeconstructbodies", "false");
+			if(activeProfile.isHideConstructBody())
+				transformer.setParameter("hideconstructbodies", "true");
+			else 
+				transformer.setParameter("hideconstructbodies", "false");
+			if(activeProfile.isShowOriginalT3DocTags())
+				transformer.setParameter("showOriginalT3DocTags", "true");
+			else 
+				transformer.setParameter("showOriginalT3DocTags", "false");
+			
+	    	transformer.transform(new StreamSource(new File(foldername + "/" + xmlFileName)),
+	    	    	new StreamResult(new FileOutputStream(foldername + "/xsltlog.txt")));
+		} catch (TransformerConfigurationException e) {
+			e.printStackTrace();
+		} catch (TransformerException e) {
+			e.printStackTrace();
+		} catch (FileNotFoundException e) {
+			e.printStackTrace();
+		}
+   	}
+	//TODO: DUPLICATED MOSTLY
+	private boolean handleCommandLineArguments(String[] args) throws TerminationException {
+		//parseCommandLineArguments(args);
+		CommandLine commandLine = parseCommandLineArguments(args);
+		if (commandLine == null) {
+			return false;
+		}
+		String arguments[] = evaluateCommandLineOptions(commandLine);
+
+		if (commandLine.hasOption("help")) {
+			showHelp();
+			return false;
+		}
+
+		if (commandLine.hasOption("config") && arguments.length < 1) {
+			System.out.println("ERROR: Missing input location(s)");
+			showHelp();
+			return false;
+		}
+
+		for (String arg : arguments) {
+			//TODO: add validity checks
+			inputPaths.add(arg);
+		}
+		
+		return true;
+	}
+
+	// --------------------------------------------------------------------------
+	//TODO: DUPLICATE
+	private CommandLine parseCommandLineArguments(String[] args) {
+		CommandLineParser parser = new GnuParser();
+		T3DOptionsHandler optionsHandler = new T3DOptionsHandler();
+		CommandLine commandLine = null;
+		try {
+			commandLine = parser.parse(optionsHandler.getOptions(), args);
+		} catch (ParseException e) {
+			System.out.println("ERROR: " + e.getMessage() );
+			showHelp();
+		}
+		return commandLine;
+	}
+
+	// --------------------------------------------------------------------------
+	//TODO: DUPLICATED MOSTLY
+	private String[] evaluateCommandLineOptions(CommandLine commandLine) throws TerminationException {
+		this.setConfigurationFilename(commandLine.getOptionValue("config"));
+		if (commandLine.hasOption("generate-config")) {
+			this.setConfigurationFilename(commandLine.getOptionValue("generate-config"));
+			this.setGenerateNewConfiguration(true);
+		} else if (commandLine.hasOption("config")) {
+			this.setConfigurationFilename(commandLine.getOptionValue("config"));
+		} else {
+			System.out.println("ERROR: No configuration file selected!");
+			showHelp();
+			throw new TerminationException("");
+		}
+		
+		if (commandLine.hasOption("profile")) {
+			this.setSelectedProfileName(commandLine.getOptionValue("profile"));
+		}
+		boolean targetFormatSet = false;
+		if (commandLine.hasOption("local-dependencies")){
+			setGenerateDependenciesXML(true);
+			targetFormatSet = true;
+		}
+		if (commandLine.hasOption("html")){
+			setGenerateHTML(true);
+			targetFormatSet = true;
+		}
+		if (commandLine.hasOption("xml-only")){
+			setGenerateMainXML(true);
+			targetFormatSet = true;
+		}
+		
+		if (!targetFormatSet && !this.isGenerateNewConfiguration()) {
+			System.out.println("ERROR: No target output format set!");
+			showHelp();
+			System.exit(1);
+		}
+		
+		if (commandLine.hasOption("verbosity")){
+			this.selectLogLevel(commandLine.getOptionValue("verbosity"));
+		}
+
+		if (commandLine.hasOption("output-path")){
+			this.setDestinationPath(commandLine.getOptionValue("output-path"));
+		}
+
+		return commandLine.getArgs();
+	}
+	
+	// --------------------------------------------------------------------------
+
+	//TODO: THIS SHALL BE DEPRECATED NOW 
+//	private void parseCommandLineArguments(String[] args) {
+//		String key = "";
+//		String value = "";
+//		//inputPath = "";
+//
+//		boolean lastKey = false;
+//		for (int i = 0; i < args.length; i++) {
+//			if (args[i].startsWith("--")) {
+//				key = args[i].replaceAll("--", "").toLowerCase();
+//
+//				if (lastKey) {
+//					argsMap.put(key, "true");
+//					key = null;
+//					value = null;
+//					lastKey = false;
+//				}
+//
+//				lastKey = true;
+//			} else {
+//				value = args[i];
+//				if ((key != null) && (argsMap.get(key) == null)
+//						&& (key.length() > 0)) {
+//					argsMap.put(key, value);
+//					key = null;
+//					value = null;
+//				} else {
+//					inputPaths.add(value);
+//				}
+//				lastKey = false;
+//			}
+//		}
+//
+//		if (key != null) {
+//			if ((argsMap.get(key) == null) && (key.length() > 0)) {
+//				argsMap.put(key, "true");
+//			}
+//		}
+//	}
+
+	// --------------------------------------------------------------------------
+	//TODO: DUPLICATE MOSTLY
+	private void handleConfig(String specifiedProfile) throws TerminationException {
+		ConfigTools configTools = new ConfigTools(configurationClassName, configurationProfileClassName);
+		configTools.setToolVersion(getVersionNumber());
+		
+		try {
+			if (isGenerateNewConfiguration()) {
+				configTools.initializeNewDefaultConfig(getConfigurationFilename());
+				System.exit(0);
+			} else {
+				configTools.loadConfig(getConfigurationFilename());
+				activeProfile = (DocumentationProfile) configTools.selectProfile(specifiedProfile);
+				if (this.getDestinationPath()==null) {
+					setDestinationPath(T3D.activeProfile.getOutputDirectory());
+				}
+			}
+		} catch (InstantiationException e) {
+			throw new TerminationException("ERROR: Instantiation problems encountered while loading configuration profile. "+e.getMessage());
+		} catch (IllegalAccessException e) {
+			throw new TerminationException("ERROR: Instantiation problems encountered while loading configuration profile. "+e.getMessage());
+		} catch (ClassNotFoundException e) {
+			throw new TerminationException("ERROR: Instantiation problems encountered while loading configuration profile. "+e.getMessage());
+		}
+		
+		if (!isProfileVersionValid()) {
+			System.out.println("\nERROR: Selected profile \"" + activeProfile.getProfileName()
+					+ "\" has a mismatching or no version (required: \""+getVersionNumber()+"\").\n" +
+							"  Consider upgrading the profile by transfering the relevant parts to an auto-generated profile or selecting a different profile.\n");
+			throw new TerminationException("");
+		}
+	}
+	//TODO: DUPLICATE 
+	private boolean isProfileVersionValid() {
+		if (activeProfile.getProfileVersion() != null && activeProfile.getProfileVersion().equals(getVersionNumber())){
+			return true;
+		} else {
+			return false;
+		}
+	}
+	//TODO: DUPLICATE 
+	private void selectLogLevel(String logLevel) throws TerminationException{
+		boolean selected = false;
+		String possibleValues ="";
+		for (LogLevel l : LogLevel.values()){
+			if (l.toString().equals(logLevel)){
+				setLogLevel(l);
+				selected = true;
+				System.out.println("Selected log level \""+logLevel+"\"");
+			}
+			if (!l.toString().equals("FIXME") && !l.toString().equals("DEBUG"))
+			possibleValues+=l.toString()+", ";
+		}
+		if (!selected){
+			System.out.println("\nERROR: No valid log level provided! Possible values are (in ascending inclusive order): "+ possibleValues.substring(0,possibleValues.length()-2)+".");
+			throw new TerminationException("");
+		}
+		
+	}
+
+	
+
+
+	// --------------------------------------------------------------------------
+//	//TODO: should be obsolete now?
+//	List<String> findTTCN3Resources(String directory) {
+//		List<String> files = new LinkedList<String>();
+//
+//		File f = new File(directory);
+//
+//		File[] fileNames = f.listFiles(new FileFilter() {
+//			public boolean accept(File pathname) {
+//				if (pathname.getPath().endsWith(".ttcn3")
+//						|| pathname.getPath().endsWith(".ttcn")
+//						|| pathname.getPath().endsWith(".3mp"))
+//					return true;
+//				return false;
+//			}
+//		});
+//
+//		for (int i = 0; i < fileNames.length; i++) {
+//			files.add(fileNames[i].getPath());
+//		}
+//
+//		File[] directories = f.listFiles(new FileFilter() {
+//			public boolean accept(File pathname) {
+//				if (pathname.isDirectory())
+//					return true;
+//				return false;
+//			}
+//		});
+//
+//		for (int i = 0; i < directories.length; i++) {
+//			files.addAll(findTTCN3Resources(directories[i].getPath()));
+//		}
+//
+//		return files;
+//	}
+
+	// --------------------------------------------------------------------------
+	//TODO: DUPLICATED
+	private TTCN3Analyzer analyzeFile(String filename) {
+		TTCN3AnalyzerFlyweightFactory analyzerFactory = TTCN3AnalyzerFlyweightFactory
+				.getInstance();
+		analyzerFactory.setStandaloneUsage(true);
+		String code = MiscTools.readFile(filename);
+
+		int loc = MiscTools.getLOC(filename);
+		linesOfCodeMap.put(filename, loc);
+		totalLoc += loc;
+
+		System.out.println("  Parsing file: " + filename + " (LOC: "
+				+ linesOfCodeMap.get(filename) + ") ...");
+		long startTime = System.currentTimeMillis();
+
+		TTCN3Analyzer analyzer = analyzerFactory.getTTCN3Analyzer(filename,
+				code);
+		try {
+			analyzer.analyze();
+		} catch (MismatchedTokenException e) {
+			e.printStackTrace();
+		} catch (RecognitionException e) {
+			e.printStackTrace();
+		} catch (TokenStreamException e) {
+			e.printStackTrace();
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		long endTime = System.currentTimeMillis();
+		long elapsed = endTime - startTime;
+		double elapsedMinutes = ((double) elapsed) / 1000.0 / 60.0;
+
+		System.out.println("    ...done in " + elapsed + "ms ("
+				+ MiscTools.doubleToString(elapsedMinutes) + " minutes).");
+
+		return analyzer;
+	}
+
+	// --------------------------------------------------------------------------
+	//TODO: DUPLICATE
+	public static void setVersionNumber(String versionNumber) {
+		T3D.versionNumber = versionNumber;
+	}
+	//TODO: DUPLICATE	
+	public static String getVersionNumber() {
+		return versionNumber;
+	}
+
+	public static void main(String[] args) {
+		T3D tool = new T3D();
+		tool.run(args);
+	}
+	//TODO: DUPLICATE
+	public void setConfigurationFilename(String configurationFilename) {
+		this.configurationFilename = configurationFilename;
+	}
+	//TODO: DUPLICATE
+	public String getConfigurationFilename() {
+		return configurationFilename;
+	}
+	//TODO: DUPLICATE
+	public void setSelectedProfileName(String selectedProfileName) {
+		this.selectedProfileName = selectedProfileName;
+	}
+	//TODO: DUPLICATE
+	public String getSelectedProfileName() {
+		return selectedProfileName;
+	}
+	//TODO: DUPLICATE
+	public static void setLogLevel(LogLevel logLevel) {
+		T3D.logLevel = logLevel;
+	}
+	//TODO: DUPLICATE
+	public static LogLevel getLogLevel() {
+		return logLevel;
+	}
+
+	public static void setGenerateDependenciesXML(boolean generateDependenciesXML) {
+		T3D.generateDependenciesXML = generateDependenciesXML;
+	}
+
+	public static boolean isGenerateDependenciesXML() {
+		return generateDependenciesXML;
+	}
+
+	public static void setGenerateMainXML(boolean generateMainXML) {
+		T3D.generateMainXML = generateMainXML;
+	}
+
+	public static boolean isGenerateMainXML() {
+		return generateMainXML;
+	}
+
+	public static void setGenerateHTML(boolean generateHTML) {
+		T3D.generateHTML = generateHTML;
+	}
+
+	public static boolean isGenerateHTML() {
+		return generateHTML;
+	}
+
+	public static void setLoggingInterface(LoggingInterface logger) {
+		T3D.logger = logger;
+	}
+
+	public static LoggingInterface getLoggingInterface() {
+		return T3D.logger;
+	}
+
+	public void setGenerateNewConfiguration(boolean generateNewConfiguration) {
+		this.generateNewConfiguration = generateNewConfiguration;
+	}
+
+	public boolean isGenerateNewConfiguration() {
+		return generateNewConfiguration;
+	}
+
+	public void setDestinationPath(String destinationPath) {
+		this.destinationPath = destinationPath;
+	}
+
+	public String getDestinationPath() {
+		return destinationPath;
+	}
+
+	public static void setBuildStamp(String buildStamp) {
+		T3D.buildStamp = buildStamp;
+	}
+
+	public static String getBuildStamp() {
+		return buildStamp;
+	}
+
+}
Index: /trunk/t3d/src/org/etsi/t3d/T3DLoggingInterface.java
===================================================================
--- /trunk/t3d/src/org/etsi/t3d/T3DLoggingInterface.java	(revision 7)
+++ /trunk/t3d/src/org/etsi/t3d/T3DLoggingInterface.java	(revision 7)
@@ -0,0 +1,112 @@
+package org.etsi.t3d;
+
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.PrintStream;
+import java.util.LinkedList;
+
+
+public class T3DLoggingInterface {
+	//TODO: reuse statistics
+	private PrintStream stream;
+	private int LOG_LEVEL = 1;
+	private String[] messageTypes = {"Information", "WARNING", "ERROR"};
+	private boolean firstFile = true;
+	private LinkedList<String> files = new LinkedList<String>();
+	private LinkedList<String> filesWithoutErrorsWarnings = new LinkedList<String>();
+	
+	
+	public T3DLoggingInterface(){
+	}
+	
+	private class T3DLogEvent{
+		private int level;
+		private int type; // 0 = info, 1 = warning, 2 = error
+		private String event;
+		private String lines;
+		
+		public T3DLogEvent(int level, int type, String event, String lines) {
+			this.level = level;
+			this.type = type;
+			this.event = event;
+			this.lines = lines;
+		}
+		
+		public String toString(){
+			return "<" + messageTypes[type].toLowerCase() + " level =\""+ level +"\" lines=\"" + lines.trim() + "\">" + event + "</" + messageTypes[type].toLowerCase() + ">";
+		}
+	}
+
+
+	public void printLog(int LEVEL, String filename, int startLine, int endLine, int type, String output) {
+		if (LEVEL <= this.getLOG_LEVEL()) {
+			String lines;
+			if (startLine >= endLine) {
+				lines = " " + startLine;
+			} else {
+				lines = " " + startLine + "-" + endLine;
+			}
+			String log = "    " + filename + ": " + lines + ": " + messageTypes[type] + ": " + output;
+			System.out.println(log);
+			setEvent(LEVEL, type, output, lines);
+			if(type == 1 || type == 2)
+				filesWithoutErrorsWarnings.remove(filename);
+		}
+	}
+
+	
+	private void setEvent(int level, int type, String event, String lines){
+		writeStream("\n\t\t" + new T3DLogEvent(level, type, event, lines));
+	}
+	
+	public void setLOG_LEVEL(int lOG_LEVEL) {
+		LOG_LEVEL = lOG_LEVEL;
+	}
+
+
+	public int getLOG_LEVEL() {
+		return LOG_LEVEL;
+	}
+	
+	public void setCurrentTTCN3File(String currentTTCN3File) {
+		if(!firstFile)
+			writeStream("\n\t</file>");
+		else
+			firstFile = false;
+		writeStream("\n\t<file path=\"" + currentTTCN3File + "\">");
+		files.add(currentTTCN3File);
+		filesWithoutErrorsWarnings.add(currentTTCN3File);
+	}
+	
+	private void writeStream(String content){
+		stream.print(content);
+	}
+	
+	public void finishXML(){
+			writeStream("\n\t</file>");
+		writeStream("\n</t3dlog>");
+		
+		System.out.println("\tINFORMATION:");
+		System.out.println("\t Files parsed:");
+		for(String file : files)
+			System.out.println("\t  " + file);
+		System.out.println("\t Files processed without errors/warnings:");
+		for(String file : filesWithoutErrorsWarnings)
+			System.out.println("\t  " + file);
+		System.out.println("\t Files processed with errors/warnings:");
+		for(String file : files)
+			if(!filesWithoutErrorsWarnings.contains(file))
+			System.out.println("\t  " + file);
+	}
+	
+	public void setXMLPath(String xmlpath){
+		FileOutputStream file;
+		try {
+			file = new FileOutputStream(xmlpath);
+			stream = new PrintStream(file);
+		} catch (FileNotFoundException e) {
+			e.printStackTrace();
+		}
+		writeStream("\n<t3dlog t3dversion=\"" + T3D.versionNumber + "\">");		
+	}
+}
Index: /trunk/t3d/src/org/etsi/t3d/XMLPrinter.java
===================================================================
--- /trunk/t3d/src/org/etsi/t3d/XMLPrinter.java	(revision 7)
+++ /trunk/t3d/src/org/etsi/t3d/XMLPrinter.java	(revision 7)
@@ -0,0 +1,158 @@
+package org.etsi.t3d;
+
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.PrintStream;
+import java.util.LinkedList;
+
+import org.etsi.common.logging.LoggingConfiguration;
+import org.etsi.common.logging.LoggingInterface;
+import org.etsi.common.logging.LoggingInterface.MessageClass;
+
+
+import elements.*;
+public class XMLPrinter {
+	private String currentTTCN3File;
+	private PrintStream stream;
+	private LinkedList<String> modules = new LinkedList<String>();
+	private int files = 0;
+	private String currentModule;
+	private LinkedList <String[]> descs = new LinkedList<String[]>();
+
+	private LoggingInterface logger = null;
+	
+	public XMLPrinter(){
+		this.logger = new LoggingInterface(T3D.activeProfile.getLoggingConfiguration());
+		this.logger.setMaximumLogLevel(T3D.getLogLevel());
+	}
+	
+	public int getFileCount(){
+		return files;
+	}
+	
+	public void setXMLPath(String xmlpath){
+		FileOutputStream file;
+		try {
+			file = new FileOutputStream(xmlpath);
+			stream = new PrintStream(file);
+		} catch (FileNotFoundException e) {
+			e.printStackTrace();
+		}		
+		writeStream("\n<project t3dversion=\"" + T3D.versionNumber + "\">");		
+	}
+	//adds String content to project.xml
+	private void writeStream(String content){
+		stream.print(content);
+	}
+	//adds XML representation of element to project.xml
+	public void printElement(TTCN3Element element, int line){
+		addDescriptions(element.getDescs());
+		writeStream("\n" + element.toXML(currentModule));
+		files++;
+		if(element.getType().equals("testcase") || element.getType().equals("parameter"))
+			files++;
+	}
+	// 0 = desc, 1 = file, 2 = line
+	private void addDescriptions(LinkedList<String[]> descs){
+		for(String[] desc : descs){			
+			if(!descsContain(desc))
+				this.descs.add(desc);
+		}
+	}
+	
+	private boolean descsContain(String[] desc){
+		for(String[] stringArray : descs)
+			if(stringArray[0].equals(desc[0])){
+				//TODO: out of place here, needs to be moved
+				if (T3D.activeProfile.isCheckIdenticalDescriptionTags()) {
+					String warning = "Identical @desc tag found: \""
+							+ desc[0].replaceAll("\\n", " ")
+							+ "\" ("
+							+ stringArray[1]
+							+ " "
+							+ stringArray[2]
+							+ ")";
+					this.getLoggingInterface()
+						.logWarning(Integer.valueOf(desc[2]).intValue(),
+								Integer.valueOf(desc[2]).intValue(),
+								MessageClass.DOCUMENTATION,
+								warning);
+					// TODO: revise XML usage
+					// T3D.printLog(LEVEL0, getCurrentTTCN3File(),
+					// Integer.valueOf(desc[2]).intValue(),
+					// Integer.valueOf(desc[2]).intValue(), 1, warning);
+				}
+				return true;
+			}
+		return false;
+	}
+	
+	
+	//adds XML representation of a module to project.xml and prints warnings
+	public void printModule(String name, TTCN3Comment comment, String behaviour, int line){
+		if (modules.contains(name)) {
+			int repetitionIndex = 0; 
+			while(modules.contains(name + "_"+repetitionIndex)){
+				repetitionIndex++;
+			}
+			this.getLoggingInterface().logWarning(line,
+					line,
+					MessageClass.DOCUMENTATION,
+					"Module \""+name+"\" (in file \""+this.getCurrentTTCN3File()+"\") is declared multiple times. The instance will be refererred to as \""+name+"_"+repetitionIndex+"\"!");
+
+			printModule(name+"_"+repetitionIndex,comment, behaviour, line);
+			modules.add(name+"_"+repetitionIndex);
+		} else {
+			writeStream("\n<module>\n<name>" + name + "</name>" + comment.toString()
+					+ "<behaviour>" + behaviour.replaceAll("<tab/>", "     ") + "</behaviour>"
+					+ "<modulename>" + name + "</modulename>"
+					+ "\n</module>");
+			modules.add(name);
+			files += 3;
+			currentModule = name;
+			for (String warning : comment.getWarnings()) {
+				this.getLoggingInterface().logWarning(line,
+						line,
+						MessageClass.DOCUMENTATION,
+						warning);
+				// TODO: revise XML usage
+				// T3D.printLog(LEVEL0, getCurrentTTCN3File(), line, line, 1,
+				// warning);
+			}
+		}
+	}
+	
+	//adds XML representation of a group to project.xml
+	public void printGroup(String name, String location, TTCN3Comment comment, String behaviour, String path, int line){
+			writeStream("\n<group>\n<name>" + name + "</name>\n"
+				+ "<location>" + location + "</location>"
+				+ comment.toString()
+				+ "<behaviour>" + behaviour.replaceAll("<tab/>", "     ") + "</behaviour>"
+				+ "<modulename>" + currentModule + "</modulename>"
+				+ path
+				+ "\n</group>");
+			files += 2;
+	}
+	//adds <file> elements to project.xml finishes the root element
+	public void finishXML(){
+		files = files + 3;
+		writeStream("\n</project>");
+	}
+	
+	public void setCurrentTTCN3File(String currentTTCN3File) {
+		this.currentTTCN3File = currentTTCN3File;
+	}
+
+	public String getCurrentTTCN3File() {
+		return currentTTCN3File;
+	}
+
+	public void setLoggingInterface(LoggingInterface logger) {
+		this.logger = logger;
+	}
+
+	public LoggingInterface getLoggingInterface() {
+		return logger;
+	}
+	
+}
Index: /trunk/t3d/src/org/etsi/t3d/config/CommentTagsConfiguration.java
===================================================================
--- /trunk/t3d/src/org/etsi/t3d/config/CommentTagsConfiguration.java	(revision 7)
+++ /trunk/t3d/src/org/etsi/t3d/config/CommentTagsConfiguration.java	(revision 7)
@@ -0,0 +1,112 @@
+package org.etsi.t3d.config;
+
+public class CommentTagsConfiguration {
+	
+	private String descTag = "desc";
+	private String authorTag = "author";
+	private String configTag = "config";
+	private String exceptionTag = "exception";
+	private String memberTag = "member";
+	private String paramTag = "param";
+	private String purposeTag = "purpose";
+	private String remarkTag = "remark";
+	private String returnTag = "return";
+	private String seeTag = "see";
+	private String sinceTag = "since";
+	private String statusTag = "status";
+	private String urlTag = "url";
+	private String verdictTag = "verdict";
+	private String versionTag = "version";
+	
+	public String getDescTag() {
+		return descTag;
+	}
+	public void setDescTag(String descTag) {
+		this.descTag = descTag;
+	}
+	public String getAuthorTag() {
+		return authorTag;
+	}
+	public void setAuthorTag(String authorTag) {
+		this.authorTag = authorTag;
+	}
+	public String getConfigTag() {
+		return configTag;
+	}
+	public void setConfigTag(String configTag) {
+		this.configTag = configTag;
+	}
+	public String getExceptionTag() {
+		return exceptionTag;
+	}
+	public void setExceptionTag(String exceptionTag) {
+		this.exceptionTag = exceptionTag;
+	}
+	public String getMemberTag() {
+		return memberTag;
+	}
+	public void setMemberTag(String memberTag) {
+		this.memberTag = memberTag;
+	}
+	public String getParamTag() {
+		return paramTag;
+	}
+	public void setParamTag(String paramTag) {
+		this.paramTag = paramTag;
+	}
+	public String getPurposeTag() {
+		return purposeTag;
+	}
+	public void setPurposeTag(String purposeTag) {
+		this.purposeTag = purposeTag;
+	}
+	public String getRemarkTag() {
+		return remarkTag;
+	}
+	public void setRemarkTag(String remarkTag) {
+		this.remarkTag = remarkTag;
+	}
+	public String getReturnTag() {
+		return returnTag;
+	}
+	public void setReturnTag(String returnTag) {
+		this.returnTag = returnTag;
+	}
+	public String getSeeTag() {
+		return seeTag;
+	}
+	public void setSeeTag(String seeTag) {
+		this.seeTag = seeTag;
+	}
+	public String getSinceTag() {
+		return sinceTag;
+	}
+	public void setSinceTag(String sinceTag) {
+		this.sinceTag = sinceTag;
+	}
+	public String getStatusTag() {
+		return statusTag;
+	}
+	public void setStatusTag(String statusTag) {
+		this.statusTag = statusTag;
+	}
+	public String getUrlTag() {
+		return urlTag;
+	}
+	public void setUrlTag(String urlTag) {
+		this.urlTag = urlTag;
+	}
+	public String getVerdictTag() {
+		return verdictTag;
+	}
+	public void setVerdictTag(String verdictTag) {
+		this.verdictTag = verdictTag;
+	}
+	public String getVersionTag() {
+		return versionTag;
+	}
+	public void setVersionTag(String versionTag) {
+		this.versionTag = versionTag;
+	}	
+	
+}
Index: /trunk/t3d/src/org/etsi/t3d/config/DocumentationProfile.java
===================================================================
--- /trunk/t3d/src/org/etsi/t3d/config/DocumentationProfile.java	(revision 7)
+++ /trunk/t3d/src/org/etsi/t3d/config/DocumentationProfile.java	(revision 7)
@@ -0,0 +1,128 @@
+package org.etsi.t3d.config;
+
+import org.etsi.common.configuration.ConfigurationProfile;
+
+public class DocumentationProfile extends ConfigurationProfile {
+
+	private CommentTagsConfiguration commentTagsConfiguration = new CommentTagsConfiguration();
+	
+	private boolean includeConstructBody = true;
+	private boolean hideConstructBody = false;
+	private boolean showOriginalT3DocTags = false;
+	private boolean checkUndocumentedParameters = true;
+	private boolean checkConsistentTagUsage = true;
+	private boolean checkIdenticalDescriptionTags = true;
+	private boolean checkCyclicImports = true;
+	
+	private String cssFile = System.getenv("T3D_HOME")+"/css/doc.css";
+	private String jsFile = System.getenv("T3D_HOME")+"/js/doc.js";
+	private String xsltFileHTML = System.getenv("T3D_HOME")+"/xslt/html.xsl";
+	private String xsltFileImport = System.getenv("T3D_HOME")+"/xslt/html_import.xsl";
+
+	private String outputDirectory = "DOCUMENTATION";
+
+	public String getJsFile() {
+		return jsFile;
+	}
+
+	public void setJsFile(String jsFile) {
+		this.jsFile = jsFile;
+	}
+
+	public String getOutputDirectory() {
+		return outputDirectory;
+	}
+
+	public void setOutputDirectory(String outputDirectory) {
+		this.outputDirectory = outputDirectory;
+	}
+
+	public void setCssFile(String cssFile) {
+		this.cssFile = cssFile;
+	}
+
+	public String getCssFile() {
+		return cssFile;
+	}
+
+	public void setXsltFileHTML(String xsltFileHTML) {
+		this.xsltFileHTML = xsltFileHTML;
+	}
+	
+	public String getXsltFileHTML() {
+		return xsltFileHTML;
+	}
+
+	public void setIncludeConstructBody(boolean includeConstructBody) {
+		this.includeConstructBody = includeConstructBody;
+	}
+
+	public boolean isIncludeConstructBody() {
+		return includeConstructBody;
+	}
+
+	public boolean isHideConstructBody() {
+		return hideConstructBody && includeConstructBody;
+	}
+
+	public void setHideConstructBody(boolean hideConstructBody) {
+		this.hideConstructBody = hideConstructBody;
+	}
+
+	public boolean isCheckUndocumentedParameters() {
+		return checkUndocumentedParameters;
+	}
+
+	public void setCheckUndocumentedParameters(boolean checkUndocumentedParameters) {
+		this.checkUndocumentedParameters = checkUndocumentedParameters;
+	}
+
+	public boolean isShowOriginalT3DocTags() {
+		return showOriginalT3DocTags;
+	}
+
+	public void setShowOriginalT3DocTags(boolean showOriginalT3DocTags) {
+		this.showOriginalT3DocTags = showOriginalT3DocTags;
+	}
+
+	public boolean isCheckCyclicImports() {
+		return checkCyclicImports;
+	}
+
+	public void setCheckCyclicImports(boolean checkCyclicImports) {
+		this.checkCyclicImports = checkCyclicImports;
+	}
+
+	public String getXsltFileImport() {
+		return xsltFileImport;
+	}
+
+	public void setXsltFileImport(String xsltFileImport) {
+		this.xsltFileImport = xsltFileImport;
+	}
+
+	public void setCheckConsistentTagUsage(boolean checkConsistentTagUsage) {
+		this.checkConsistentTagUsage = checkConsistentTagUsage;
+	}
+
+	public boolean isCheckConsistentTagUsage() {
+		return checkConsistentTagUsage;
+	}
+
+	public void setCheckIdenticalDescriptionTags(
+			boolean checkIdenticalDescriptionTags) {
+		this.checkIdenticalDescriptionTags = checkIdenticalDescriptionTags;
+	}
+
+	public boolean isCheckIdenticalDescriptionTags() {
+		return checkIdenticalDescriptionTags;
+	}
+
+	public void setCommentTagConfiguration(CommentTagsConfiguration commentTagsConfiguration) {
+		this.commentTagsConfiguration = commentTagsConfiguration;
+	}
+
+	public CommentTagsConfiguration getCommentTagsConfiguration() {
+		return commentTagsConfiguration;
+	}
+}
Index: /trunk/t3d/src/org/etsi/t3d/config/T3DConfig.java
===================================================================
--- /trunk/t3d/src/org/etsi/t3d/config/T3DConfig.java	(revision 7)
+++ /trunk/t3d/src/org/etsi/t3d/config/T3DConfig.java	(revision 7)
@@ -0,0 +1,6 @@
+package org.etsi.t3d.config;
+
+import org.etsi.common.configuration.ToolConfiguration;
+
+public class T3DConfig extends ToolConfiguration{
+}
Index: /trunk/t3d/src/org/etsi/t3d/config/T3DOptionsHandler.java
===================================================================
--- /trunk/t3d/src/org/etsi/t3d/config/T3DOptionsHandler.java	(revision 7)
+++ /trunk/t3d/src/org/etsi/t3d/config/T3DOptionsHandler.java	(revision 7)
@@ -0,0 +1,27 @@
+package org.etsi.t3d.config;
+
+import org.etsi.common.configuration.OptionWithID;
+import org.etsi.common.configuration.OptionsHandler;
+
+
+public class T3DOptionsHandler extends OptionsHandler {
+
+	public T3DOptionsHandler() {
+		super();
+		this.initializeCustomOptions();
+	}
+
+	private void initializeCustomOptions() {
+		//TODO: add arguments ?
+		OptionWithID optionWithID;
+		optionWithID = new OptionWithID(21, "html", "Generate HTML documentation, including intermediate XML files");
+		getOptions().addOption(optionWithID);
+		
+		optionWithID = new OptionWithID(22, "xml-only", "Generate intermediate XML files only");
+		getOptions().addOption(optionWithID);
+
+		optionWithID = new OptionWithID(23, "local-dependencies", "Generate local dependencies XML file\n");
+		getOptions().addOption(optionWithID);
+
+	}
+}
Index: /trunk/t3d/src/org/etsi/t3d/exceptions/TTCN3BehaviorException.java
===================================================================
--- /trunk/t3d/src/org/etsi/t3d/exceptions/TTCN3BehaviorException.java	(revision 7)
+++ /trunk/t3d/src/org/etsi/t3d/exceptions/TTCN3BehaviorException.java	(revision 7)
@@ -0,0 +1,11 @@
+package org.etsi.t3d.exceptions;
+
+public class TTCN3BehaviorException extends Exception {
+
+	private static final long serialVersionUID = 3801467473799856594L;
+
+	public TTCN3BehaviorException(String message) {
+		super("TTCN-3 Behavior Exception: " + message);
+	}
+
+}
Index: /trunk/t3d/src/org/etsi/t3d/exceptions/TTCN3ParserException.java
===================================================================
--- /trunk/t3d/src/org/etsi/t3d/exceptions/TTCN3ParserException.java	(revision 7)
+++ /trunk/t3d/src/org/etsi/t3d/exceptions/TTCN3ParserException.java	(revision 7)
@@ -0,0 +1,11 @@
+package org.etsi.t3d.exceptions;
+
+public class TTCN3ParserException extends Exception {
+
+	private static final long serialVersionUID = -207414866662976520L;
+
+	public TTCN3ParserException(String message) {
+		super("TTCN-3 Parser Exception: " + message);
+	}
+
+}
Index: /trunk/t3d/src/org/etsi/t3d/visitor/AbstractVisitor.java
===================================================================
--- /trunk/t3d/src/org/etsi/t3d/visitor/AbstractVisitor.java	(revision 7)
+++ /trunk/t3d/src/org/etsi/t3d/visitor/AbstractVisitor.java	(revision 7)
@@ -0,0 +1,3388 @@
+//This class has been generated automatically. Do not modify it by hand!
+package org.etsi.t3d.visitor;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.Queue;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.LocationAST;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.TTCN3ParserTokenTypes;
+//import de.ugoe.cs.swe.t3simexec.exceptions.TTCN3BehaviorException;
+import org.etsi.t3d.exceptions.TTCN3BehaviorException;
+
+public abstract class AbstractVisitor {
+
+    public int visitedNodeCount;
+
+    public ContinueStatus visitAddExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAddressRefList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAliveKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAliveOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAllAltstepsWithExcept(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAllCompsAllPortsSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAllConnectionsSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAllConstsWithExcept(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAllFunctionsWithExcept(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAllGroupsWithExcept(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAllModuleParWithExcept(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAllPortsSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAllSignaturesWithExcept(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAllTemplsWithExcept(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAllTestcasesWithExcept(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAllTypesWithExcept(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAllWithExcepts(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAltstepInstance(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAltstepLocalDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAltstepLocalDefList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAltstepRef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAltstepRefList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAndExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAnyTypeKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAllRef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBitAndExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBitNotExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBitOrExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBitXorExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBreakStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCaseKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCheckPortOpsPresent(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCompenentIdentifierOrLiteral(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitComponentIdentifierOrLiteral(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitComponentReferenceOrLiteral(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitConstRefList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitContinueStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDefaultKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDerivedRefWithParList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitEqualExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExceptAltstepSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExceptConstSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExceptElement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExceptFunctionSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExceptGroupRefList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExceptGroupSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExceptModuleParSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExceptSignatureSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExceptSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExceptTemplateSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExceptTestcaseSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExceptTypeDefSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExceptsDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExtendsKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFloatDotNotation(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFloatENotation(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFromClausePresent(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFullGroupIdentifier(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFullGroupIdentifierWithExcept(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFunctionRefList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitGroupRefList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitGroupRefListWithExcept(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitImportAltstepSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitImportModuleParSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitKillKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitKillTCStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitKilledStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitLogItem(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitModuleDefinitionList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitModuleParRefList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMulExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNestedEnumDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNestedRecordDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNestedRecordOfDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNestedSetDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNestedSetOfDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNestedTypeDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNestedUnionDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNotExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOmitValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortRedirectSymbol(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortRedirectWithValueAndParam(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRedirectPresent(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRedirectWithParamSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRedirectWithValueAndParamSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRelExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRepeatStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRestrictedTemplate(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSelectCase(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSelectCaseBody(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSelectCaseConstruct(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSelectKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitShiftExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSignatureRefList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSingleConnectionSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSingleOrMultiConnectionSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSingleTimerInstance(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTempVarList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTemplateRefList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTemplateRestriction(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTestcaseRefList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTimerList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTypeRefList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitUnaryExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNameForm(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNumberForm(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNameAndNumberForm(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitVariationKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDefinitiveIdentifier(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDefinitiveNumberForm(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitXorExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDefinitiveNameAndNumberForm(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitActivateOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAddOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAddressKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAddressRef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAddressValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAllKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAllOrSignatureList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAllOrTypeList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAllPort(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAllowedValues(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAltConstruct(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAltGuardChar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAltGuardElement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAltGuardElements(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAltGuardList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAltKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAltstepDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAltstepKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAnd4b(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAnd(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAnyKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAnyOrOmit(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAnyValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitArrayBounds(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitArrayDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitArrayDefRange(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitArrayElementConstExpressionList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitArrayElementExpressionList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitArrayElementSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitArrayElementSpecList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitArrayExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitArrayOrBitRef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitArrayValueOrAttrib(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAssignment(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAssignmentChar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAssignmentList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAttribKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAttribQualifier(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAttribSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBaseTemplate(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBasicStatements(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBeginChar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBehaviourStatements(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBinOrMatch(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBitOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBitStringKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBitStringMatch(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBitStringValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBooleanExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBooleanKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBooleanValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCallBodyGuard(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCallBodyOps(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCallBodyStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCallBodyStatementList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCallParameters(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCallStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCallTimerValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCatchOpParameter(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCatchStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCell(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCharKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCharStringKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCharStringMatch(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCharStringPattern(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCharStringValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCharStringValueId(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCheckParameter(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCheckStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitClearStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitColon(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitComma(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCommunicationStatements(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitComplement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitComponentDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitComponentDefList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitComponentElementDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitComponentId(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitComponentIdentifier(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitComponentRef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitComponentType(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitComponentRefAssignment(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCompoundConstExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCompoundExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitConditionalConstruct(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitConfigSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitConfigurationOps(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitConfigurationStatements(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitConnectStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitConstDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitConstList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitConstantExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitControlStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitControlStatementOrDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitControlStatementOrDefList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCreateOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCstring(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDash(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDeactivateStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDefIndentClose(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDefIndentOpen(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDefKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDefOrFieldRef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDefOrFieldRefList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDerivedDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDerivedRegWithParList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDirection(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDisconnectStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDisplayKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDoWhileStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDoneStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDot(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDoubleColon(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitElseClause(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitElseIfClause(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitElseIfClauses(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitElseStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitEncodeKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitEndChar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitEnumDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitEnumeratedValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitEnumeration(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitEnumerationList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitEqual(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitError(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExceptionSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExceptionTypeList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExtConstDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExtFunctionDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExtendedFieldReference(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExtensionKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExtraMatchingAttributes(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFactor(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFail(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFalse(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFieldConstExpressionList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFieldConstExpressionSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFieldExpressionList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFieldExpressionSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFieldReference(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFieldSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFieldSpecList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFieldValueOrAttrib(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFinal(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFloatKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFloatValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitForStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFormalPortPar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFormalTemplatePar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFormalTimerPar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFormalTypePar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFormalValuePar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFromClause(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFunctionActualParAssignment(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFriendKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFriendModuleDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFunctionActualPar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFunctionActualParList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFunctionBody(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFunctionDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFunctionLocalDefOrInst(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFunctionLocalDefOrInstList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFunctionStatementList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFunctionFormalPar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFunctionInstance(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFunctionLocalDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFunctionLocalInst(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFunctionRef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFunctionStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitGetCallStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitGetLocalVerdict(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitGetReplyStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitGlobalModuleId(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitGotoStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitGroup(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitGroupDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitGuardOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitGuardStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitHexOrMatch(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitHexStringKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitHexStringMatch(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitHexStringValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitHaltStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitIdentifier(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitIfPresentMatch(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitImportAllSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitImportConstSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitImportDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitImportElement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitImportFromSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitImportFunctionSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitImportGroupSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitImportNamedAltSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitImportSignatureSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitImportSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitImportTemplateSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitImportTestcaseSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitImportTypeDefSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitInLineTemplate(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitInOutParKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitInParKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitInconc(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitInfinity(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitInitial(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitIntegerKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitIntegerValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitInterleavedAction(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitInterleavedConstruct(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitInterleavedGuard(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitInterleavedGuardElement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitInterleavedGuardList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitKilledKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitLParen(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitLabelStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitLanguageSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitLengthMatch(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitLessorequal(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitLessthan(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitLogStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitLoopConstruct(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitLowerBound(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMTCOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMapStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMatchOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMatchingSymbol(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMessageAttribs(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMessageList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMinus(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMixedAttribs(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMixedList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMod(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitModifiesKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitModuleControlBody(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitModuleControlPart(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitModuleDefinition(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitModuleDefinitionsList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitModuleDefinitionsPart(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitModuleId(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitModulePar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitModuleParDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitModuleParList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMoreorequal(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMorethan(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMultiWithAttrib(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMultiplyOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMultitypedModuleParList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNamedAltActualPar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNamedAltActualParList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNamedAltDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNamedAltFormalPar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNamedAltFormalParList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNamedAltInstance(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNamedAltList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNamedAltRef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNamedAltRefList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNamedKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNamedValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNamedValueList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNoBlockKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNone(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNot4b(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNot(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNotUsedOrExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNotUsedSymbol(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNotequals(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNowaitKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNull(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNumber(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOctOrMatch(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOctetStringKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOctetStringMatch(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOctetStringValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOmitKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOpCall(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOpValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOptionalKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOr4b(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOr(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOutParKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOverrideKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitParRef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitParaAssignmentList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitParaSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPass(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPermutationMatch(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPlane(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPlus(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPort(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortCallBody(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortCallOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortCatchOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortCheckOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortClearOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortDefAttribs(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortDefBody(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortElement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortGetCallOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortGetReplyOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortInstance(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortOrAll(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortOrAny(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortRaiseOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortReceiveOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortRedirect(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortRedirectWithParam(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortRef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortReplyOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortSendOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortStartOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortStopOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortTriggerOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortType(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPredefinedType(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPredefinedValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPrimary(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitProcOrType(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitProcOrTypeList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitProcedureAttribs(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitProcedureList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitProduct(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortHaltOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPrivateKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPublicKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitQuadruple(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitQuestionMark(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRParen(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRaiseStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRange(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRangeDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRangeOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitReadTimerOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitReceiveParameter(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitReceiveStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRecordDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRecordOfDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRecordRef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRecursiveKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitReferencedType(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitReferencedValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRelOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRem(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitReplyStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitReturnStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitReturnType(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRow(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRunningOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRunningTimerOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRunsOnSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSUTAction(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSUTStatements(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSelfOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSemiColon(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSendParameter(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSendStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSenderSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSetDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSetLocalVerdict(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSetOfDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitShiftOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSignature(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSignatureDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSignatureFormalPar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSignatureFormalParList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSignatureList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSimpleExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSimpleExpressions(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSingleConstDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSingleExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSingleQuote(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSingleTempVarInstance(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSingleValueOrAttrib(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSingleVarInstance(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSingleValueSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSingleWithAttrib(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSlash(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSquareClose(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSquareOpen(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStartStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStartTCStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStartTimerStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStatementBlock(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStep(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStopStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStopTCStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStopTimerStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStringAnyOrOmit(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStringAnyValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStringLength(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStringMatchOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStringOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStructDefBody(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStructDefFormalPar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStructDefFormalParList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStructFieldDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStructFieldRef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStructOfDefBody(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStructuredTypeDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSubExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSubTypeDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSubTypeSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSubsetMatch(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSupersetMatch(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSystemOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSystemSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTTCN3File(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTTCN3Module(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTTCN3ModuleId(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTemplateActualPar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTemplateActualParList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTemplateBody(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTemplateDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTemplateFormalPar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTemplateFormalParList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTemplateInstanceAssignment(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTemplateInstance(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTemplateKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTemplateOps(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTemplateRef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTemplateRefWithParList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTerm(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTestcaseActualParAssignment(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTestcaseActualPar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTestcaseActualParList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTestcaseDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTestcaseInstance(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTestcaseRef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTimeoutKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTimeoutStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTimerInstance(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTimerKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTimerOps(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTimerRef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTimerRefOrAll(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTimerRefOrAny(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTimerStatements(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTimerValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitToClause(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTriggerStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTrue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitType(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTypeActualPar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTypeActualParList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTypeDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTypeDefIdentifier(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTypeList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTypeReference(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitUnaryOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitUnderscore(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitUnionDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitUnionDefBody(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitUnionFieldDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitUniversalChar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitUniversalCharString(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitUniversalKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitUnmapStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitUpperBound(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitValueList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitValueMatchSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitValueOrAttribList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitValueOrRange(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitValueParOrTypePar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitValueReference(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitValueSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitValueofOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitVarInitialValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitVarInstance(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitVarList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitVariableAssignment(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitVariableEntry(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitVariableList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitVariableRef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitVerdictOps(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitVerdictStatements(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitVerdictTypeKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitVerdictTypeValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitVisibility(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitWhileStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitWithAttribList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitWithStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitXor4b(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitXor(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBSTRING(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBSTRINGMATCH(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDOT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFLOATVALUE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitHSTRING(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitHSTRINGMATCH(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOSTRING(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOSTRINGMATCH(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRANGEOP(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitACTION(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitACTIVATE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitADDRESS(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitALIVE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitALL(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitALT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitALTSTEP(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAND(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAND4B(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitANY(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitANYTYPE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBITSTRING(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBOOLEAN(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBREAK(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCALL(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCASE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCATCH(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCHAR(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCHARSTRING(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCHECK(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCLEAR(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCOMPLEMENT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCOMPONENT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCONNECT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCONST(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCONTINUE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCONTROL(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCREATE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDEACTIVATE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDEFAULT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDISCONNECT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDISPLAY(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDO(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDONE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitELSE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitENCODE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitENUMERATED(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitERROR(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitEXCEPT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitEXCEPTION(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitEXECUTE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitEXTENDS(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitEXTENSION(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitEXTERNAL(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFAIL(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFALSE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFLOAT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFOR(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFROM(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFUNCTION(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFRIEND(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitGETCALL(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitGETREPLY(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitGETVERDICT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitGOTO(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitGROUP(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitHALT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitHEXSTRING(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitIF(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitIFPRESENT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitIMPORT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitIN(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitINCONC(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitINFINITY(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitINOUT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitINTEGER(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitINTERLEAVE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitKILL(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitKILLED(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitLABEL(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitLANGUAGE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitLENGTH(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitLOG(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMAP(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMATCH(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMESSAGE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMIXED(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMOD(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMODIFIES(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMODULE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMODULEPAR(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMTC(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNOBLOCK(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNONE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNOT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNOT4B(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNOWAIT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNULL(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOBJID(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOCTETSTRING(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOF(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOMIT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitON(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOPTIONAL(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOR(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOR4B(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOUT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOVERRIDE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPARAM(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPASS(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPATTERN(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPERMUTATION(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPORT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPRESENT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPRIVATE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPROCEDURE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPUBLIC(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRAISE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitREAD(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRECEIVE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRECORD(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRECURSIVE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitREM(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitREPEAT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitREPLY(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRETURN(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRUNNING(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRUNS(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSELECT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSELF(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSEND(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSENDER(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSET(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSETVERDICT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSIGNATURE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSTART(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSTOP(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSUBSET(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSUPERSET(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSYSTEM(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTEMPLATE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTESTCASE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTIMEOUT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTIMER(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTO(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTRIGGER(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTRUE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTYPE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitUNION(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitUNIVERSAL(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitUNMAP(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitVALUE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitVAR(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitVARIANT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitVERDICTTYPE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitWHILE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitWITH(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitXOR(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitXOR4B(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitWS(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSL_COMMENT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitML_COMMENT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitIDENTIFIER(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitASSIGNMENTCHAR(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPORTREDIRECTSYMBOL(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBEGINCHAR(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCSTRING(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSTRING(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNUMBER(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitEXPONENT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSEMICOLON(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCOMMA(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDOUBLECOLON(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCOLON(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitUNDERSCORE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitENDCHAR(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSQUAREOPEN(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSQUARECLOSE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitLPAREN(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRPAREN(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitLESSTHAN(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMORETHAN(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNOTEQUALS(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMOREOREQUAL(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitLESSOREQUAL(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitEQUAL(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPLUS(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMINUS(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSTAR(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSLASH(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSINGLEQUOTE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDOUBLEQUOTE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitQUESTIONMARK(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSHIFTLEFT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSHIFTRIGHT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitROTATELEFT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitROTATERIGHT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSTRINGANYVALUE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSTRINGANYOROMIT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitQUOTESYMBOL(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSTRINGOP(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitZero(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNonzeronum(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNonzeronumber(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDecimalnumber(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNum(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBIN(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitHEX(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOCT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitChar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitGeneralTextCharacter(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAlphanumeric(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitLetter(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitUppercaseLetter(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitLowercaseLetter(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSpecial(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOtherSpecial(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOtherCharacter(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSpace(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPreProcessorMacro(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+
+    public ContinueStatus visit(LocationAST node) throws TTCN3BehaviorException {
+        visitedNodeCount++;
+        ContinueStatus continueStatus;
+        switch(node.getType()) {
+            case TTCN3ParserTokenTypes.AddExpression:
+                            continueStatus=visitAddExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AddressRefList:
+                            continueStatus=visitAddressRefList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AliveKeyword:
+                            continueStatus=visitAliveKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AliveOp:
+                            continueStatus=visitAliveOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AllAltstepsWithExcept:
+                            continueStatus=visitAllAltstepsWithExcept(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AllCompsAllPortsSpec:
+                            continueStatus=visitAllCompsAllPortsSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AllConnectionsSpec:
+                            continueStatus=visitAllConnectionsSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AllConstsWithExcept:
+                            continueStatus=visitAllConstsWithExcept(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AllFunctionsWithExcept:
+                            continueStatus=visitAllFunctionsWithExcept(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AllGroupsWithExcept:
+                            continueStatus=visitAllGroupsWithExcept(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AllModuleParWithExcept:
+                            continueStatus=visitAllModuleParWithExcept(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AllPortsSpec:
+                            continueStatus=visitAllPortsSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AllSignaturesWithExcept:
+                            continueStatus=visitAllSignaturesWithExcept(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AllTemplsWithExcept:
+                            continueStatus=visitAllTemplsWithExcept(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AllTestcasesWithExcept:
+                            continueStatus=visitAllTestcasesWithExcept(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AllTypesWithExcept:
+                            continueStatus=visitAllTypesWithExcept(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AllWithExcepts:
+                            continueStatus=visitAllWithExcepts(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AltstepInstance:
+                            continueStatus=visitAltstepInstance(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AltstepLocalDef:
+                            continueStatus=visitAltstepLocalDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AltstepLocalDefList:
+                            continueStatus=visitAltstepLocalDefList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AltstepRef:
+                            continueStatus=visitAltstepRef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AltstepRefList:
+                            continueStatus=visitAltstepRefList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AndExpression:
+                            continueStatus=visitAndExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AnyTypeKeyword:
+                            continueStatus=visitAnyTypeKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AllRef:
+                            continueStatus=visitAllRef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BitAndExpression:
+                            continueStatus=visitBitAndExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BitNotExpression:
+                            continueStatus=visitBitNotExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BitOrExpression:
+                            continueStatus=visitBitOrExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BitXorExpression:
+                            continueStatus=visitBitXorExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BreakStatement:
+                            continueStatus=visitBreakStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CaseKeyword:
+                            continueStatus=visitCaseKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CheckPortOpsPresent:
+                            continueStatus=visitCheckPortOpsPresent(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CompenentIdentifierOrLiteral:
+                            continueStatus=visitCompenentIdentifierOrLiteral(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ComponentIdentifierOrLiteral:
+                            continueStatus=visitComponentIdentifierOrLiteral(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ComponentReferenceOrLiteral:
+                            continueStatus=visitComponentReferenceOrLiteral(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ConstRefList:
+                            continueStatus=visitConstRefList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ContinueStatement:
+                            continueStatus=visitContinueStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DefaultKeyword:
+                            continueStatus=visitDefaultKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DerivedRefWithParList:
+                            continueStatus=visitDerivedRefWithParList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.EqualExpression:
+                            continueStatus=visitEqualExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExceptAltstepSpec:
+                            continueStatus=visitExceptAltstepSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExceptConstSpec:
+                            continueStatus=visitExceptConstSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExceptElement:
+                            continueStatus=visitExceptElement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExceptFunctionSpec:
+                            continueStatus=visitExceptFunctionSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExceptGroupRefList:
+                            continueStatus=visitExceptGroupRefList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExceptGroupSpec:
+                            continueStatus=visitExceptGroupSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExceptModuleParSpec:
+                            continueStatus=visitExceptModuleParSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExceptSignatureSpec:
+                            continueStatus=visitExceptSignatureSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExceptSpec:
+                            continueStatus=visitExceptSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExceptTemplateSpec:
+                            continueStatus=visitExceptTemplateSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExceptTestcaseSpec:
+                            continueStatus=visitExceptTestcaseSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExceptTypeDefSpec:
+                            continueStatus=visitExceptTypeDefSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExceptsDef:
+                            continueStatus=visitExceptsDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExtendsKeyword:
+                            continueStatus=visitExtendsKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FloatDotNotation:
+                            continueStatus=visitFloatDotNotation(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FloatENotation:
+                            continueStatus=visitFloatENotation(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FromClausePresent:
+                            continueStatus=visitFromClausePresent(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FullGroupIdentifier:
+                            continueStatus=visitFullGroupIdentifier(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FullGroupIdentifierWithExcept:
+                            continueStatus=visitFullGroupIdentifierWithExcept(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FunctionRefList:
+                            continueStatus=visitFunctionRefList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.GroupRefList:
+                            continueStatus=visitGroupRefList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.GroupRefListWithExcept:
+                            continueStatus=visitGroupRefListWithExcept(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ImportAltstepSpec:
+                            continueStatus=visitImportAltstepSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ImportModuleParSpec:
+                            continueStatus=visitImportModuleParSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.KillKeyword:
+                            continueStatus=visitKillKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.KillTCStatement:
+                            continueStatus=visitKillTCStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.KilledStatement:
+                            continueStatus=visitKilledStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.LogItem:
+                            continueStatus=visitLogItem(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ModuleDefinitionList:
+                            continueStatus=visitModuleDefinitionList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ModuleParRefList:
+                            continueStatus=visitModuleParRefList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MulExpression:
+                            continueStatus=visitMulExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NestedEnumDef:
+                            continueStatus=visitNestedEnumDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NestedRecordDef:
+                            continueStatus=visitNestedRecordDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NestedRecordOfDef:
+                            continueStatus=visitNestedRecordOfDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NestedSetDef:
+                            continueStatus=visitNestedSetDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NestedSetOfDef:
+                            continueStatus=visitNestedSetOfDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NestedTypeDef:
+                            continueStatus=visitNestedTypeDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NestedUnionDef:
+                            continueStatus=visitNestedUnionDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NotExpression:
+                            continueStatus=visitNotExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OmitValue:
+                            continueStatus=visitOmitValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortRedirectSymbol:
+                            continueStatus=visitPortRedirectSymbol(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortRedirectWithValueAndParam:
+                            continueStatus=visitPortRedirectWithValueAndParam(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RedirectPresent:
+                            continueStatus=visitRedirectPresent(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RedirectWithParamSpec:
+                            continueStatus=visitRedirectWithParamSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RedirectWithValueAndParamSpec:
+                            continueStatus=visitRedirectWithValueAndParamSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RelExpression:
+                            continueStatus=visitRelExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RepeatStatement:
+                            continueStatus=visitRepeatStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RestrictedTemplate:
+                            continueStatus=visitRestrictedTemplate(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SelectCase:
+                            continueStatus=visitSelectCase(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SelectCaseBody:
+                            continueStatus=visitSelectCaseBody(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SelectCaseConstruct:
+                            continueStatus=visitSelectCaseConstruct(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SelectKeyword:
+                            continueStatus=visitSelectKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ShiftExpression:
+                            continueStatus=visitShiftExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SignatureRefList:
+                            continueStatus=visitSignatureRefList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SingleConnectionSpec:
+                            continueStatus=visitSingleConnectionSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SingleOrMultiConnectionSpec:
+                            continueStatus=visitSingleOrMultiConnectionSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SingleTimerInstance:
+                            continueStatus=visitSingleTimerInstance(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TempVarList:
+                            continueStatus=visitTempVarList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TemplateRefList:
+                            continueStatus=visitTemplateRefList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TemplateRestriction:
+                            continueStatus=visitTemplateRestriction(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TestcaseRefList:
+                            continueStatus=visitTestcaseRefList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TimerList:
+                            continueStatus=visitTimerList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TypeRefList:
+                            continueStatus=visitTypeRefList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.UnaryExpression:
+                            continueStatus=visitUnaryExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NameForm:
+                            continueStatus=visitNameForm(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NumberForm:
+                            continueStatus=visitNumberForm(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NameAndNumberForm:
+                            continueStatus=visitNameAndNumberForm(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.VariationKeyword:
+                            continueStatus=visitVariationKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DefinitiveIdentifier:
+                            continueStatus=visitDefinitiveIdentifier(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DefinitiveNumberForm:
+                            continueStatus=visitDefinitiveNumberForm(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.XorExpression:
+                            continueStatus=visitXorExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DefinitiveNameAndNumberForm:
+                            continueStatus=visitDefinitiveNameAndNumberForm(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ActivateOp:
+                            continueStatus=visitActivateOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AddOp:
+                            continueStatus=visitAddOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AddressKeyword:
+                            continueStatus=visitAddressKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AddressRef:
+                            continueStatus=visitAddressRef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AddressValue:
+                            continueStatus=visitAddressValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AllKeyword:
+                            continueStatus=visitAllKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AllOrSignatureList:
+                            continueStatus=visitAllOrSignatureList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AllOrTypeList:
+                            continueStatus=visitAllOrTypeList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AllPort:
+                            continueStatus=visitAllPort(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AllowedValues:
+                            continueStatus=visitAllowedValues(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AltConstruct:
+                            continueStatus=visitAltConstruct(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AltGuardChar:
+                            continueStatus=visitAltGuardChar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AltGuardElement:
+                            continueStatus=visitAltGuardElement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AltGuardElements:
+                            continueStatus=visitAltGuardElements(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AltGuardList:
+                            continueStatus=visitAltGuardList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AltKeyword:
+                            continueStatus=visitAltKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AltstepDef:
+                            continueStatus=visitAltstepDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AltstepKeyword:
+                            continueStatus=visitAltstepKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.And4b:
+                            continueStatus=visitAnd4b(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.And:
+                            continueStatus=visitAnd(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AnyKeyword:
+                            continueStatus=visitAnyKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AnyOrOmit:
+                            continueStatus=visitAnyOrOmit(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AnyValue:
+                            continueStatus=visitAnyValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ArrayBounds:
+                            continueStatus=visitArrayBounds(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ArrayDef:
+                            continueStatus=visitArrayDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ArrayDefRange:
+                            continueStatus=visitArrayDefRange(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ArrayElementConstExpressionList:
+                            continueStatus=visitArrayElementConstExpressionList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ArrayElementExpressionList:
+                            continueStatus=visitArrayElementExpressionList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ArrayElementSpec:
+                            continueStatus=visitArrayElementSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ArrayElementSpecList:
+                            continueStatus=visitArrayElementSpecList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ArrayExpression:
+                            continueStatus=visitArrayExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ArrayOrBitRef:
+                            continueStatus=visitArrayOrBitRef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ArrayValueOrAttrib:
+                            continueStatus=visitArrayValueOrAttrib(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Assignment:
+                            continueStatus=visitAssignment(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AssignmentChar:
+                            continueStatus=visitAssignmentChar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AssignmentList:
+                            continueStatus=visitAssignmentList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AttribKeyword:
+                            continueStatus=visitAttribKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AttribQualifier:
+                            continueStatus=visitAttribQualifier(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AttribSpec:
+                            continueStatus=visitAttribSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BaseTemplate:
+                            continueStatus=visitBaseTemplate(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BasicStatements:
+                            continueStatus=visitBasicStatements(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BeginChar:
+                            continueStatus=visitBeginChar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BehaviourStatements:
+                            continueStatus=visitBehaviourStatements(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BinOrMatch:
+                            continueStatus=visitBinOrMatch(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BitOp:
+                            continueStatus=visitBitOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BitStringKeyword:
+                            continueStatus=visitBitStringKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BitStringMatch:
+                            continueStatus=visitBitStringMatch(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BitStringValue:
+                            continueStatus=visitBitStringValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BooleanExpression:
+                            continueStatus=visitBooleanExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BooleanKeyword:
+                            continueStatus=visitBooleanKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BooleanValue:
+                            continueStatus=visitBooleanValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CallBodyGuard:
+                            continueStatus=visitCallBodyGuard(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CallBodyOps:
+                            continueStatus=visitCallBodyOps(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CallBodyStatement:
+                            continueStatus=visitCallBodyStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CallBodyStatementList:
+                            continueStatus=visitCallBodyStatementList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CallParameters:
+                            continueStatus=visitCallParameters(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CallStatement:
+                            continueStatus=visitCallStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CallTimerValue:
+                            continueStatus=visitCallTimerValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CatchOpParameter:
+                            continueStatus=visitCatchOpParameter(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CatchStatement:
+                            continueStatus=visitCatchStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Cell:
+                            continueStatus=visitCell(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CharKeyword:
+                            continueStatus=visitCharKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CharStringKeyword:
+                            continueStatus=visitCharStringKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CharStringMatch:
+                            continueStatus=visitCharStringMatch(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CharStringPattern:
+                            continueStatus=visitCharStringPattern(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CharStringValue:
+                            continueStatus=visitCharStringValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CharStringValueId:
+                            continueStatus=visitCharStringValueId(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CheckParameter:
+                            continueStatus=visitCheckParameter(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CheckStatement:
+                            continueStatus=visitCheckStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ClearStatement:
+                            continueStatus=visitClearStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Colon:
+                            continueStatus=visitColon(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Comma:
+                            continueStatus=visitComma(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CommunicationStatements:
+                            continueStatus=visitCommunicationStatements(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Complement:
+                            continueStatus=visitComplement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ComponentDef:
+                            continueStatus=visitComponentDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ComponentDefList:
+                            continueStatus=visitComponentDefList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ComponentElementDef:
+                            continueStatus=visitComponentElementDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ComponentId:
+                            continueStatus=visitComponentId(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ComponentIdentifier:
+                            continueStatus=visitComponentIdentifier(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ComponentRef:
+                            continueStatus=visitComponentRef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ComponentType:
+                            continueStatus=visitComponentType(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ComponentRefAssignment:
+                            continueStatus=visitComponentRefAssignment(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CompoundConstExpression:
+                            continueStatus=visitCompoundConstExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CompoundExpression:
+                            continueStatus=visitCompoundExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ConditionalConstruct:
+                            continueStatus=visitConditionalConstruct(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ConfigSpec:
+                            continueStatus=visitConfigSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ConfigurationOps:
+                            continueStatus=visitConfigurationOps(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ConfigurationStatements:
+                            continueStatus=visitConfigurationStatements(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ConnectStatement:
+                            continueStatus=visitConnectStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ConstDef:
+                            continueStatus=visitConstDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ConstList:
+                            continueStatus=visitConstList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ConstantExpression:
+                            continueStatus=visitConstantExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ControlStatement:
+                            continueStatus=visitControlStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ControlStatementOrDef:
+                            continueStatus=visitControlStatementOrDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ControlStatementOrDefList:
+                            continueStatus=visitControlStatementOrDefList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CreateOp:
+                            continueStatus=visitCreateOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Cstring:
+                            continueStatus=visitCstring(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Dash:
+                            continueStatus=visitDash(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DeactivateStatement:
+                            continueStatus=visitDeactivateStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DefIndentClose:
+                            continueStatus=visitDefIndentClose(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DefIndentOpen:
+                            continueStatus=visitDefIndentOpen(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DefKeyword:
+                            continueStatus=visitDefKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DefOrFieldRef:
+                            continueStatus=visitDefOrFieldRef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DefOrFieldRefList:
+                            continueStatus=visitDefOrFieldRefList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DerivedDef:
+                            continueStatus=visitDerivedDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DerivedRegWithParList:
+                            continueStatus=visitDerivedRegWithParList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Direction:
+                            continueStatus=visitDirection(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DisconnectStatement:
+                            continueStatus=visitDisconnectStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DisplayKeyword:
+                            continueStatus=visitDisplayKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DoWhileStatement:
+                            continueStatus=visitDoWhileStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DoneStatement:
+                            continueStatus=visitDoneStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Dot:
+                            continueStatus=visitDot(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DoubleColon:
+                            continueStatus=visitDoubleColon(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ElseClause:
+                            continueStatus=visitElseClause(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ElseIfClause:
+                            continueStatus=visitElseIfClause(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ElseIfClauses:
+                            continueStatus=visitElseIfClauses(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ElseStatement:
+                            continueStatus=visitElseStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.EncodeKeyword:
+                            continueStatus=visitEncodeKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.EndChar:
+                            continueStatus=visitEndChar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.EnumDef:
+                            continueStatus=visitEnumDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.EnumeratedValue:
+                            continueStatus=visitEnumeratedValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Enumeration:
+                            continueStatus=visitEnumeration(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.EnumerationList:
+                            continueStatus=visitEnumerationList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Equal:
+                            continueStatus=visitEqual(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Error:
+                            continueStatus=visitError(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExceptionSpec:
+                            continueStatus=visitExceptionSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExceptionTypeList:
+                            continueStatus=visitExceptionTypeList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Expression:
+                            continueStatus=visitExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExtConstDef:
+                            continueStatus=visitExtConstDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExtFunctionDef:
+                            continueStatus=visitExtFunctionDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExtendedFieldReference:
+                            continueStatus=visitExtendedFieldReference(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExtensionKeyword:
+                            continueStatus=visitExtensionKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExtraMatchingAttributes:
+                            continueStatus=visitExtraMatchingAttributes(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Factor:
+                            continueStatus=visitFactor(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Fail:
+                            continueStatus=visitFail(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.False:
+                            continueStatus=visitFalse(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FieldConstExpressionList:
+                            continueStatus=visitFieldConstExpressionList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FieldConstExpressionSpec:
+                            continueStatus=visitFieldConstExpressionSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FieldExpressionList:
+                            continueStatus=visitFieldExpressionList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FieldExpressionSpec:
+                            continueStatus=visitFieldExpressionSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FieldReference:
+                            continueStatus=visitFieldReference(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FieldSpec:
+                            continueStatus=visitFieldSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FieldSpecList:
+                            continueStatus=visitFieldSpecList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FieldValueOrAttrib:
+                            continueStatus=visitFieldValueOrAttrib(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Final:
+                            continueStatus=visitFinal(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FloatKeyword:
+                            continueStatus=visitFloatKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FloatValue:
+                            continueStatus=visitFloatValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ForStatement:
+                            continueStatus=visitForStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FormalPortPar:
+                            continueStatus=visitFormalPortPar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FormalTemplatePar:
+                            continueStatus=visitFormalTemplatePar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FormalTimerPar:
+                            continueStatus=visitFormalTimerPar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FormalTypePar:
+                            continueStatus=visitFormalTypePar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FormalValuePar:
+                            continueStatus=visitFormalValuePar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FromClause:
+                            continueStatus=visitFromClause(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FunctionActualParAssignment:
+                            continueStatus=visitFunctionActualParAssignment(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FriendKeyword:
+                            continueStatus=visitFriendKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FriendModuleDef:
+                            continueStatus=visitFriendModuleDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FunctionActualPar:
+                            continueStatus=visitFunctionActualPar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FunctionActualParList:
+                            continueStatus=visitFunctionActualParList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FunctionBody:
+                            continueStatus=visitFunctionBody(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FunctionDef:
+                            continueStatus=visitFunctionDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FunctionLocalDefOrInst:
+                            continueStatus=visitFunctionLocalDefOrInst(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FunctionLocalDefOrInstList:
+                            continueStatus=visitFunctionLocalDefOrInstList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FunctionStatementList:
+                            continueStatus=visitFunctionStatementList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FunctionFormalPar:
+                            continueStatus=visitFunctionFormalPar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FunctionInstance:
+                            continueStatus=visitFunctionInstance(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FunctionLocalDef:
+                            continueStatus=visitFunctionLocalDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FunctionLocalInst:
+                            continueStatus=visitFunctionLocalInst(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FunctionRef:
+                            continueStatus=visitFunctionRef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FunctionStatement:
+                            continueStatus=visitFunctionStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.GetCallStatement:
+                            continueStatus=visitGetCallStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.GetLocalVerdict:
+                            continueStatus=visitGetLocalVerdict(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.GetReplyStatement:
+                            continueStatus=visitGetReplyStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.GlobalModuleId:
+                            continueStatus=visitGlobalModuleId(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.GotoStatement:
+                            continueStatus=visitGotoStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Group:
+                            continueStatus=visitGroup(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.GroupDef:
+                            continueStatus=visitGroupDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.GuardOp:
+                            continueStatus=visitGuardOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.GuardStatement:
+                            continueStatus=visitGuardStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.HexOrMatch:
+                            continueStatus=visitHexOrMatch(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.HexStringKeyword:
+                            continueStatus=visitHexStringKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.HexStringMatch:
+                            continueStatus=visitHexStringMatch(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.HexStringValue:
+                            continueStatus=visitHexStringValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.HaltStatement:
+                            continueStatus=visitHaltStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Identifier:
+                            continueStatus=visitIdentifier(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.IfPresentMatch:
+                            continueStatus=visitIfPresentMatch(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ImportAllSpec:
+                            continueStatus=visitImportAllSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ImportConstSpec:
+                            continueStatus=visitImportConstSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ImportDef:
+                            continueStatus=visitImportDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ImportElement:
+                            continueStatus=visitImportElement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ImportFromSpec:
+                            continueStatus=visitImportFromSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ImportFunctionSpec:
+                            continueStatus=visitImportFunctionSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ImportGroupSpec:
+                            continueStatus=visitImportGroupSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ImportNamedAltSpec:
+                            continueStatus=visitImportNamedAltSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ImportSignatureSpec:
+                            continueStatus=visitImportSignatureSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ImportSpec:
+                            continueStatus=visitImportSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ImportTemplateSpec:
+                            continueStatus=visitImportTemplateSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ImportTestcaseSpec:
+                            continueStatus=visitImportTestcaseSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ImportTypeDefSpec:
+                            continueStatus=visitImportTypeDefSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.InLineTemplate:
+                            continueStatus=visitInLineTemplate(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.InOutParKeyword:
+                            continueStatus=visitInOutParKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.InParKeyword:
+                            continueStatus=visitInParKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Inconc:
+                            continueStatus=visitInconc(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Infinity:
+                            continueStatus=visitInfinity(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Initial:
+                            continueStatus=visitInitial(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.IntegerKeyword:
+                            continueStatus=visitIntegerKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.IntegerValue:
+                            continueStatus=visitIntegerValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.InterleavedAction:
+                            continueStatus=visitInterleavedAction(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.InterleavedConstruct:
+                            continueStatus=visitInterleavedConstruct(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.InterleavedGuard:
+                            continueStatus=visitInterleavedGuard(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.InterleavedGuardElement:
+                            continueStatus=visitInterleavedGuardElement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.InterleavedGuardList:
+                            continueStatus=visitInterleavedGuardList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.KilledKeyword:
+                            continueStatus=visitKilledKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.LParen:
+                            continueStatus=visitLParen(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.LabelStatement:
+                            continueStatus=visitLabelStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.LanguageSpec:
+                            continueStatus=visitLanguageSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.LengthMatch:
+                            continueStatus=visitLengthMatch(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Lessorequal:
+                            continueStatus=visitLessorequal(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Lessthan:
+                            continueStatus=visitLessthan(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.LogStatement:
+                            continueStatus=visitLogStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.LoopConstruct:
+                            continueStatus=visitLoopConstruct(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.LowerBound:
+                            continueStatus=visitLowerBound(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MTCOp:
+                            continueStatus=visitMTCOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MapStatement:
+                            continueStatus=visitMapStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MatchOp:
+                            continueStatus=visitMatchOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MatchingSymbol:
+                            continueStatus=visitMatchingSymbol(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MessageAttribs:
+                            continueStatus=visitMessageAttribs(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MessageList:
+                            continueStatus=visitMessageList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Minus:
+                            continueStatus=visitMinus(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MixedAttribs:
+                            continueStatus=visitMixedAttribs(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MixedList:
+                            continueStatus=visitMixedList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Mod:
+                            continueStatus=visitMod(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ModifiesKeyword:
+                            continueStatus=visitModifiesKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ModuleControlBody:
+                            continueStatus=visitModuleControlBody(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ModuleControlPart:
+                            continueStatus=visitModuleControlPart(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ModuleDefinition:
+                            continueStatus=visitModuleDefinition(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ModuleDefinitionsList:
+                            continueStatus=visitModuleDefinitionsList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ModuleDefinitionsPart:
+                            continueStatus=visitModuleDefinitionsPart(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ModuleId:
+                            continueStatus=visitModuleId(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ModulePar:
+                            continueStatus=visitModulePar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ModuleParDef:
+                            continueStatus=visitModuleParDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ModuleParList:
+                            continueStatus=visitModuleParList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Moreorequal:
+                            continueStatus=visitMoreorequal(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Morethan:
+                            continueStatus=visitMorethan(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MultiWithAttrib:
+                            continueStatus=visitMultiWithAttrib(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MultiplyOp:
+                            continueStatus=visitMultiplyOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MultitypedModuleParList:
+                            continueStatus=visitMultitypedModuleParList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NamedAltActualPar:
+                            continueStatus=visitNamedAltActualPar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NamedAltActualParList:
+                            continueStatus=visitNamedAltActualParList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NamedAltDef:
+                            continueStatus=visitNamedAltDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NamedAltFormalPar:
+                            continueStatus=visitNamedAltFormalPar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NamedAltFormalParList:
+                            continueStatus=visitNamedAltFormalParList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NamedAltInstance:
+                            continueStatus=visitNamedAltInstance(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NamedAltList:
+                            continueStatus=visitNamedAltList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NamedAltRef:
+                            continueStatus=visitNamedAltRef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NamedAltRefList:
+                            continueStatus=visitNamedAltRefList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NamedKeyword:
+                            continueStatus=visitNamedKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NamedValue:
+                            continueStatus=visitNamedValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NamedValueList:
+                            continueStatus=visitNamedValueList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NoBlockKeyword:
+                            continueStatus=visitNoBlockKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.None:
+                            continueStatus=visitNone(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Not4b:
+                            continueStatus=visitNot4b(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Not:
+                            continueStatus=visitNot(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NotUsedOrExpression:
+                            continueStatus=visitNotUsedOrExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NotUsedSymbol:
+                            continueStatus=visitNotUsedSymbol(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Notequals:
+                            continueStatus=visitNotequals(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NowaitKeyword:
+                            continueStatus=visitNowaitKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Null:
+                            continueStatus=visitNull(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Number:
+                            continueStatus=visitNumber(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OctOrMatch:
+                            continueStatus=visitOctOrMatch(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OctetStringKeyword:
+                            continueStatus=visitOctetStringKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OctetStringMatch:
+                            continueStatus=visitOctetStringMatch(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OctetStringValue:
+                            continueStatus=visitOctetStringValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OmitKeyword:
+                            continueStatus=visitOmitKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OpCall:
+                            continueStatus=visitOpCall(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OpValue:
+                            continueStatus=visitOpValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OptionalKeyword:
+                            continueStatus=visitOptionalKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Or4b:
+                            continueStatus=visitOr4b(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Or:
+                            continueStatus=visitOr(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OutParKeyword:
+                            continueStatus=visitOutParKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OverrideKeyword:
+                            continueStatus=visitOverrideKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ParRef:
+                            continueStatus=visitParRef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ParaAssignmentList:
+                            continueStatus=visitParaAssignmentList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ParaSpec:
+                            continueStatus=visitParaSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Pass:
+                            continueStatus=visitPass(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PermutationMatch:
+                            continueStatus=visitPermutationMatch(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Plane:
+                            continueStatus=visitPlane(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Plus:
+                            continueStatus=visitPlus(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Port:
+                            continueStatus=visitPort(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortCallBody:
+                            continueStatus=visitPortCallBody(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortCallOp:
+                            continueStatus=visitPortCallOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortCatchOp:
+                            continueStatus=visitPortCatchOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortCheckOp:
+                            continueStatus=visitPortCheckOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortClearOp:
+                            continueStatus=visitPortClearOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortDef:
+                            continueStatus=visitPortDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortDefAttribs:
+                            continueStatus=visitPortDefAttribs(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortDefBody:
+                            continueStatus=visitPortDefBody(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortElement:
+                            continueStatus=visitPortElement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortGetCallOp:
+                            continueStatus=visitPortGetCallOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortGetReplyOp:
+                            continueStatus=visitPortGetReplyOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortInstance:
+                            continueStatus=visitPortInstance(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortKeyword:
+                            continueStatus=visitPortKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortOrAll:
+                            continueStatus=visitPortOrAll(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortOrAny:
+                            continueStatus=visitPortOrAny(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortRaiseOp:
+                            continueStatus=visitPortRaiseOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortReceiveOp:
+                            continueStatus=visitPortReceiveOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortRedirect:
+                            continueStatus=visitPortRedirect(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortRedirectWithParam:
+                            continueStatus=visitPortRedirectWithParam(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortRef:
+                            continueStatus=visitPortRef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortReplyOp:
+                            continueStatus=visitPortReplyOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortSendOp:
+                            continueStatus=visitPortSendOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortSpec:
+                            continueStatus=visitPortSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortStartOp:
+                            continueStatus=visitPortStartOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortStopOp:
+                            continueStatus=visitPortStopOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortTriggerOp:
+                            continueStatus=visitPortTriggerOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortType:
+                            continueStatus=visitPortType(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PredefinedType:
+                            continueStatus=visitPredefinedType(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PredefinedValue:
+                            continueStatus=visitPredefinedValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Primary:
+                            continueStatus=visitPrimary(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ProcOrType:
+                            continueStatus=visitProcOrType(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ProcOrTypeList:
+                            continueStatus=visitProcOrTypeList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ProcedureAttribs:
+                            continueStatus=visitProcedureAttribs(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ProcedureList:
+                            continueStatus=visitProcedureList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Product:
+                            continueStatus=visitProduct(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortHaltOp:
+                            continueStatus=visitPortHaltOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PrivateKeyword:
+                            continueStatus=visitPrivateKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PublicKeyword:
+                            continueStatus=visitPublicKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Quadruple:
+                            continueStatus=visitQuadruple(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.QuestionMark:
+                            continueStatus=visitQuestionMark(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RParen:
+                            continueStatus=visitRParen(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RaiseStatement:
+                            continueStatus=visitRaiseStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Range:
+                            continueStatus=visitRange(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RangeDef:
+                            continueStatus=visitRangeDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RangeOp:
+                            continueStatus=visitRangeOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ReadTimerOp:
+                            continueStatus=visitReadTimerOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ReceiveParameter:
+                            continueStatus=visitReceiveParameter(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ReceiveStatement:
+                            continueStatus=visitReceiveStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RecordDef:
+                            continueStatus=visitRecordDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RecordOfDef:
+                            continueStatus=visitRecordOfDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RecordRef:
+                            continueStatus=visitRecordRef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RecursiveKeyword:
+                            continueStatus=visitRecursiveKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ReferencedType:
+                            continueStatus=visitReferencedType(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ReferencedValue:
+                            continueStatus=visitReferencedValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RelOp:
+                            continueStatus=visitRelOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Rem:
+                            continueStatus=visitRem(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ReplyStatement:
+                            continueStatus=visitReplyStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ReturnStatement:
+                            continueStatus=visitReturnStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ReturnType:
+                            continueStatus=visitReturnType(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Row:
+                            continueStatus=visitRow(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RunningOp:
+                            continueStatus=visitRunningOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RunningTimerOp:
+                            continueStatus=visitRunningTimerOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RunsOnSpec:
+                            continueStatus=visitRunsOnSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SUTAction:
+                            continueStatus=visitSUTAction(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SUTStatements:
+                            continueStatus=visitSUTStatements(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SelfOp:
+                            continueStatus=visitSelfOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SemiColon:
+                            continueStatus=visitSemiColon(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SendParameter:
+                            continueStatus=visitSendParameter(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SendStatement:
+                            continueStatus=visitSendStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SenderSpec:
+                            continueStatus=visitSenderSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SetDef:
+                            continueStatus=visitSetDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SetLocalVerdict:
+                            continueStatus=visitSetLocalVerdict(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SetOfDef:
+                            continueStatus=visitSetOfDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ShiftOp:
+                            continueStatus=visitShiftOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Signature:
+                            continueStatus=visitSignature(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SignatureDef:
+                            continueStatus=visitSignatureDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SignatureFormalPar:
+                            continueStatus=visitSignatureFormalPar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SignatureFormalParList:
+                            continueStatus=visitSignatureFormalParList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SignatureList:
+                            continueStatus=visitSignatureList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SimpleExpression:
+                            continueStatus=visitSimpleExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SimpleExpressions:
+                            continueStatus=visitSimpleExpressions(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SingleConstDef:
+                            continueStatus=visitSingleConstDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SingleExpression:
+                            continueStatus=visitSingleExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SingleQuote:
+                            continueStatus=visitSingleQuote(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SingleTempVarInstance:
+                            continueStatus=visitSingleTempVarInstance(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SingleValueOrAttrib:
+                            continueStatus=visitSingleValueOrAttrib(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SingleVarInstance:
+                            continueStatus=visitSingleVarInstance(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SingleValueSpec:
+                            continueStatus=visitSingleValueSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SingleWithAttrib:
+                            continueStatus=visitSingleWithAttrib(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Slash:
+                            continueStatus=visitSlash(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SquareClose:
+                            continueStatus=visitSquareClose(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SquareOpen:
+                            continueStatus=visitSquareOpen(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Star:
+                            continueStatus=visitStar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.StartStatement:
+                            continueStatus=visitStartStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.StartTCStatement:
+                            continueStatus=visitStartTCStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.StartTimerStatement:
+                            continueStatus=visitStartTimerStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.StatementBlock:
+                            continueStatus=visitStatementBlock(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Step:
+                            continueStatus=visitStep(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.StopStatement:
+                            continueStatus=visitStopStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.StopTCStatement:
+                            continueStatus=visitStopTCStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.StopTimerStatement:
+                            continueStatus=visitStopTimerStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.StringAnyOrOmit:
+                            continueStatus=visitStringAnyOrOmit(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.StringAnyValue:
+                            continueStatus=visitStringAnyValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.StringLength:
+                            continueStatus=visitStringLength(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.StringMatchOp:
+                            continueStatus=visitStringMatchOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.StringOp:
+                            continueStatus=visitStringOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.StructDefBody:
+                            continueStatus=visitStructDefBody(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.StructDefFormalPar:
+                            continueStatus=visitStructDefFormalPar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.StructDefFormalParList:
+                            continueStatus=visitStructDefFormalParList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.StructFieldDef:
+                            continueStatus=visitStructFieldDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.StructFieldRef:
+                            continueStatus=visitStructFieldRef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.StructOfDefBody:
+                            continueStatus=visitStructOfDefBody(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.StructuredTypeDef:
+                            continueStatus=visitStructuredTypeDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SubExpression:
+                            continueStatus=visitSubExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SubTypeDef:
+                            continueStatus=visitSubTypeDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SubTypeSpec:
+                            continueStatus=visitSubTypeSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SubsetMatch:
+                            continueStatus=visitSubsetMatch(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SupersetMatch:
+                            continueStatus=visitSupersetMatch(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SystemOp:
+                            continueStatus=visitSystemOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SystemSpec:
+                            continueStatus=visitSystemSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TTCN3File:
+                            continueStatus=visitTTCN3File(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TTCN3Module:
+                            continueStatus=visitTTCN3Module(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TTCN3ModuleId:
+                            continueStatus=visitTTCN3ModuleId(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TemplateActualPar:
+                            continueStatus=visitTemplateActualPar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TemplateActualParList:
+                            continueStatus=visitTemplateActualParList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TemplateBody:
+                            continueStatus=visitTemplateBody(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TemplateDef:
+                            continueStatus=visitTemplateDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TemplateFormalPar:
+                            continueStatus=visitTemplateFormalPar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TemplateFormalParList:
+                            continueStatus=visitTemplateFormalParList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TemplateInstanceAssignment:
+                            continueStatus=visitTemplateInstanceAssignment(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TemplateInstance:
+                            continueStatus=visitTemplateInstance(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TemplateKeyword:
+                            continueStatus=visitTemplateKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TemplateOps:
+                            continueStatus=visitTemplateOps(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TemplateRef:
+                            continueStatus=visitTemplateRef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TemplateRefWithParList:
+                            continueStatus=visitTemplateRefWithParList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Term:
+                            continueStatus=visitTerm(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TestcaseActualParAssignment:
+                            continueStatus=visitTestcaseActualParAssignment(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TestcaseActualPar:
+                            continueStatus=visitTestcaseActualPar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TestcaseActualParList:
+                            continueStatus=visitTestcaseActualParList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TestcaseDef:
+                            continueStatus=visitTestcaseDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TestcaseInstance:
+                            continueStatus=visitTestcaseInstance(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TestcaseRef:
+                            continueStatus=visitTestcaseRef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TimeoutKeyword:
+                            continueStatus=visitTimeoutKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TimeoutStatement:
+                            continueStatus=visitTimeoutStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TimerInstance:
+                            continueStatus=visitTimerInstance(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TimerKeyword:
+                            continueStatus=visitTimerKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TimerOps:
+                            continueStatus=visitTimerOps(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TimerRef:
+                            continueStatus=visitTimerRef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TimerRefOrAll:
+                            continueStatus=visitTimerRefOrAll(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TimerRefOrAny:
+                            continueStatus=visitTimerRefOrAny(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TimerStatements:
+                            continueStatus=visitTimerStatements(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TimerValue:
+                            continueStatus=visitTimerValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ToClause:
+                            continueStatus=visitToClause(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TriggerStatement:
+                            continueStatus=visitTriggerStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.True:
+                            continueStatus=visitTrue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Type:
+                            continueStatus=visitType(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TypeActualPar:
+                            continueStatus=visitTypeActualPar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TypeActualParList:
+                            continueStatus=visitTypeActualParList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TypeDef:
+                            continueStatus=visitTypeDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TypeDefIdentifier:
+                            continueStatus=visitTypeDefIdentifier(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TypeList:
+                            continueStatus=visitTypeList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TypeReference:
+                            continueStatus=visitTypeReference(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.UnaryOp:
+                            continueStatus=visitUnaryOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Underscore:
+                            continueStatus=visitUnderscore(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.UnionDef:
+                            continueStatus=visitUnionDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.UnionDefBody:
+                            continueStatus=visitUnionDefBody(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.UnionFieldDef:
+                            continueStatus=visitUnionFieldDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.UniversalChar:
+                            continueStatus=visitUniversalChar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.UniversalCharString:
+                            continueStatus=visitUniversalCharString(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.UniversalKeyword:
+                            continueStatus=visitUniversalKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.UnmapStatement:
+                            continueStatus=visitUnmapStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.UpperBound:
+                            continueStatus=visitUpperBound(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Value:
+                            continueStatus=visitValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ValueList:
+                            continueStatus=visitValueList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ValueMatchSpec:
+                            continueStatus=visitValueMatchSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ValueOrAttribList:
+                            continueStatus=visitValueOrAttribList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ValueOrRange:
+                            continueStatus=visitValueOrRange(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ValueParOrTypePar:
+                            continueStatus=visitValueParOrTypePar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ValueReference:
+                            continueStatus=visitValueReference(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ValueSpec:
+                            continueStatus=visitValueSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ValueofOp:
+                            continueStatus=visitValueofOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.VarInitialValue:
+                            continueStatus=visitVarInitialValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.VarInstance:
+                            continueStatus=visitVarInstance(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.VarList:
+                            continueStatus=visitVarList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.VariableAssignment:
+                            continueStatus=visitVariableAssignment(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.VariableEntry:
+                            continueStatus=visitVariableEntry(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.VariableList:
+                            continueStatus=visitVariableList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.VariableRef:
+                            continueStatus=visitVariableRef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.VerdictOps:
+                            continueStatus=visitVerdictOps(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.VerdictStatements:
+                            continueStatus=visitVerdictStatements(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.VerdictTypeKeyword:
+                            continueStatus=visitVerdictTypeKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.VerdictTypeValue:
+                            continueStatus=visitVerdictTypeValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Visibility:
+                            continueStatus=visitVisibility(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.WhileStatement:
+                            continueStatus=visitWhileStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.WithAttribList:
+                            continueStatus=visitWithAttribList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.WithStatement:
+                            continueStatus=visitWithStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Xor4b:
+                            continueStatus=visitXor4b(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Xor:
+                            continueStatus=visitXor(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BSTRING:
+                            continueStatus=visitBSTRING(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BSTRINGMATCH:
+                            continueStatus=visitBSTRINGMATCH(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DOT:
+                            continueStatus=visitDOT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FLOATVALUE:
+                            continueStatus=visitFLOATVALUE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.HSTRING:
+                            continueStatus=visitHSTRING(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.HSTRINGMATCH:
+                            continueStatus=visitHSTRINGMATCH(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OSTRING:
+                            continueStatus=visitOSTRING(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OSTRINGMATCH:
+                            continueStatus=visitOSTRINGMATCH(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RANGEOP:
+                            continueStatus=visitRANGEOP(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ACTION:
+                            continueStatus=visitACTION(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ACTIVATE:
+                            continueStatus=visitACTIVATE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ADDRESS:
+                            continueStatus=visitADDRESS(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ALIVE:
+                            continueStatus=visitALIVE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ALL:
+                            continueStatus=visitALL(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ALT:
+                            continueStatus=visitALT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ALTSTEP:
+                            continueStatus=visitALTSTEP(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AND:
+                            continueStatus=visitAND(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AND4B:
+                            continueStatus=visitAND4B(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ANY:
+                            continueStatus=visitANY(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ANYTYPE:
+                            continueStatus=visitANYTYPE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BITSTRING:
+                            continueStatus=visitBITSTRING(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BOOLEAN:
+                            continueStatus=visitBOOLEAN(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BREAK:
+                            continueStatus=visitBREAK(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CALL:
+                            continueStatus=visitCALL(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CASE:
+                            continueStatus=visitCASE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CATCH:
+                            continueStatus=visitCATCH(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CHAR:
+                            continueStatus=visitCHAR(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CHARSTRING:
+                            continueStatus=visitCHARSTRING(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CHECK:
+                            continueStatus=visitCHECK(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CLEAR:
+                            continueStatus=visitCLEAR(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.COMPLEMENT:
+                            continueStatus=visitCOMPLEMENT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.COMPONENT:
+                            continueStatus=visitCOMPONENT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CONNECT:
+                            continueStatus=visitCONNECT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CONST:
+                            continueStatus=visitCONST(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CONTINUE:
+                            continueStatus=visitCONTINUE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CONTROL:
+                            continueStatus=visitCONTROL(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CREATE:
+                            continueStatus=visitCREATE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DEACTIVATE:
+                            continueStatus=visitDEACTIVATE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DEFAULT:
+                            continueStatus=visitDEFAULT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DISCONNECT:
+                            continueStatus=visitDISCONNECT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DISPLAY:
+                            continueStatus=visitDISPLAY(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DO:
+                            continueStatus=visitDO(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DONE:
+                            continueStatus=visitDONE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ELSE:
+                            continueStatus=visitELSE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ENCODE:
+                            continueStatus=visitENCODE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ENUMERATED:
+                            continueStatus=visitENUMERATED(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ERROR:
+                            continueStatus=visitERROR(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.EXCEPT:
+                            continueStatus=visitEXCEPT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.EXCEPTION:
+                            continueStatus=visitEXCEPTION(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.EXECUTE:
+                            continueStatus=visitEXECUTE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.EXTENDS:
+                            continueStatus=visitEXTENDS(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.EXTENSION:
+                            continueStatus=visitEXTENSION(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.EXTERNAL:
+                            continueStatus=visitEXTERNAL(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FAIL:
+                            continueStatus=visitFAIL(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FALSE:
+                            continueStatus=visitFALSE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FLOAT:
+                            continueStatus=visitFLOAT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FOR:
+                            continueStatus=visitFOR(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FROM:
+                            continueStatus=visitFROM(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FUNCTION:
+                            continueStatus=visitFUNCTION(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FRIEND:
+                            continueStatus=visitFRIEND(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.GETCALL:
+                            continueStatus=visitGETCALL(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.GETREPLY:
+                            continueStatus=visitGETREPLY(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.GETVERDICT:
+                            continueStatus=visitGETVERDICT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.GOTO:
+                            continueStatus=visitGOTO(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.GROUP:
+                            continueStatus=visitGROUP(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.HALT:
+                            continueStatus=visitHALT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.HEXSTRING:
+                            continueStatus=visitHEXSTRING(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.IF:
+                            continueStatus=visitIF(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.IFPRESENT:
+                            continueStatus=visitIFPRESENT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.IMPORT:
+                            continueStatus=visitIMPORT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.IN:
+                            continueStatus=visitIN(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.INCONC:
+                            continueStatus=visitINCONC(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.INFINITY:
+                            continueStatus=visitINFINITY(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.INOUT:
+                            continueStatus=visitINOUT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.INTEGER:
+                            continueStatus=visitINTEGER(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.INTERLEAVE:
+                            continueStatus=visitINTERLEAVE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.KILL:
+                            continueStatus=visitKILL(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.KILLED:
+                            continueStatus=visitKILLED(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.LABEL:
+                            continueStatus=visitLABEL(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.LANGUAGE:
+                            continueStatus=visitLANGUAGE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.LENGTH:
+                            continueStatus=visitLENGTH(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.LOG:
+                            continueStatus=visitLOG(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MAP:
+                            continueStatus=visitMAP(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MATCH:
+                            continueStatus=visitMATCH(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MESSAGE:
+                            continueStatus=visitMESSAGE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MIXED:
+                            continueStatus=visitMIXED(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MOD:
+                            continueStatus=visitMOD(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MODIFIES:
+                            continueStatus=visitMODIFIES(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MODULE:
+                            continueStatus=visitMODULE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MODULEPAR:
+                            continueStatus=visitMODULEPAR(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MTC:
+                            continueStatus=visitMTC(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NOBLOCK:
+                            continueStatus=visitNOBLOCK(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NONE:
+                            continueStatus=visitNONE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NOT:
+                            continueStatus=visitNOT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NOT4B:
+                            continueStatus=visitNOT4B(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NOWAIT:
+                            continueStatus=visitNOWAIT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NULL:
+                            continueStatus=visitNULL(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OBJID:
+                            continueStatus=visitOBJID(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OCTETSTRING:
+                            continueStatus=visitOCTETSTRING(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OF:
+                            continueStatus=visitOF(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OMIT:
+                            continueStatus=visitOMIT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ON:
+                            continueStatus=visitON(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OPTIONAL:
+                            continueStatus=visitOPTIONAL(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OR:
+                            continueStatus=visitOR(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OR4B:
+                            continueStatus=visitOR4B(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OUT:
+                            continueStatus=visitOUT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OVERRIDE:
+                            continueStatus=visitOVERRIDE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PARAM:
+                            continueStatus=visitPARAM(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PASS:
+                            continueStatus=visitPASS(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PATTERN:
+                            continueStatus=visitPATTERN(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PERMUTATION:
+                            continueStatus=visitPERMUTATION(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PORT:
+                            continueStatus=visitPORT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PRESENT:
+                            continueStatus=visitPRESENT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PRIVATE:
+                            continueStatus=visitPRIVATE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PROCEDURE:
+                            continueStatus=visitPROCEDURE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PUBLIC:
+                            continueStatus=visitPUBLIC(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RAISE:
+                            continueStatus=visitRAISE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.READ:
+                            continueStatus=visitREAD(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RECEIVE:
+                            continueStatus=visitRECEIVE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RECORD:
+                            continueStatus=visitRECORD(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RECURSIVE:
+                            continueStatus=visitRECURSIVE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.REM:
+                            continueStatus=visitREM(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.REPEAT:
+                            continueStatus=visitREPEAT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.REPLY:
+                            continueStatus=visitREPLY(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RETURN:
+                            continueStatus=visitRETURN(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RUNNING:
+                            continueStatus=visitRUNNING(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RUNS:
+                            continueStatus=visitRUNS(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SELECT:
+                            continueStatus=visitSELECT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SELF:
+                            continueStatus=visitSELF(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SEND:
+                            continueStatus=visitSEND(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SENDER:
+                            continueStatus=visitSENDER(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SET:
+                            continueStatus=visitSET(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SETVERDICT:
+                            continueStatus=visitSETVERDICT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SIGNATURE:
+                            continueStatus=visitSIGNATURE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.START:
+                            continueStatus=visitSTART(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.STOP:
+                            continueStatus=visitSTOP(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SUBSET:
+                            continueStatus=visitSUBSET(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SUPERSET:
+                            continueStatus=visitSUPERSET(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SYSTEM:
+                            continueStatus=visitSYSTEM(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TEMPLATE:
+                            continueStatus=visitTEMPLATE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TESTCASE:
+                            continueStatus=visitTESTCASE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TIMEOUT:
+                            continueStatus=visitTIMEOUT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TIMER:
+                            continueStatus=visitTIMER(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TO:
+                            continueStatus=visitTO(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TRIGGER:
+                            continueStatus=visitTRIGGER(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TRUE:
+                            continueStatus=visitTRUE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TYPE:
+                            continueStatus=visitTYPE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.UNION:
+                            continueStatus=visitUNION(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.UNIVERSAL:
+                            continueStatus=visitUNIVERSAL(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.UNMAP:
+                            continueStatus=visitUNMAP(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.VALUE:
+                            continueStatus=visitVALUE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.VAR:
+                            continueStatus=visitVAR(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.VARIANT:
+                            continueStatus=visitVARIANT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.VERDICTTYPE:
+                            continueStatus=visitVERDICTTYPE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.WHILE:
+                            continueStatus=visitWHILE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.WITH:
+                            continueStatus=visitWITH(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.XOR:
+                            continueStatus=visitXOR(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.XOR4B:
+                            continueStatus=visitXOR4B(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.WS:
+                            continueStatus=visitWS(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SL_COMMENT:
+                            continueStatus=visitSL_COMMENT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ML_COMMENT:
+                            continueStatus=visitML_COMMENT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.IDENTIFIER:
+                            continueStatus=visitIDENTIFIER(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ASSIGNMENTCHAR:
+                            continueStatus=visitASSIGNMENTCHAR(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PORTREDIRECTSYMBOL:
+                            continueStatus=visitPORTREDIRECTSYMBOL(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BEGINCHAR:
+                            continueStatus=visitBEGINCHAR(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CSTRING:
+                            continueStatus=visitCSTRING(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.STRING:
+                            continueStatus=visitSTRING(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NUMBER:
+                            continueStatus=visitNUMBER(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.EXPONENT:
+                            continueStatus=visitEXPONENT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SEMICOLON:
+                            continueStatus=visitSEMICOLON(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.COMMA:
+                            continueStatus=visitCOMMA(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DOUBLECOLON:
+                            continueStatus=visitDOUBLECOLON(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.COLON:
+                            continueStatus=visitCOLON(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.UNDERSCORE:
+                            continueStatus=visitUNDERSCORE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ENDCHAR:
+                            continueStatus=visitENDCHAR(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SQUAREOPEN:
+                            continueStatus=visitSQUAREOPEN(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SQUARECLOSE:
+                            continueStatus=visitSQUARECLOSE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.LPAREN:
+                            continueStatus=visitLPAREN(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RPAREN:
+                            continueStatus=visitRPAREN(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.LESSTHAN:
+                            continueStatus=visitLESSTHAN(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MORETHAN:
+                            continueStatus=visitMORETHAN(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NOTEQUALS:
+                            continueStatus=visitNOTEQUALS(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MOREOREQUAL:
+                            continueStatus=visitMOREOREQUAL(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.LESSOREQUAL:
+                            continueStatus=visitLESSOREQUAL(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.EQUAL:
+                            continueStatus=visitEQUAL(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PLUS:
+                            continueStatus=visitPLUS(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MINUS:
+                            continueStatus=visitMINUS(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.STAR:
+                            continueStatus=visitSTAR(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SLASH:
+                            continueStatus=visitSLASH(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SINGLEQUOTE:
+                            continueStatus=visitSINGLEQUOTE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DOUBLEQUOTE:
+                            continueStatus=visitDOUBLEQUOTE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.QUESTIONMARK:
+                            continueStatus=visitQUESTIONMARK(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SHIFTLEFT:
+                            continueStatus=visitSHIFTLEFT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SHIFTRIGHT:
+                            continueStatus=visitSHIFTRIGHT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ROTATELEFT:
+                            continueStatus=visitROTATELEFT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ROTATERIGHT:
+                            continueStatus=visitROTATERIGHT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.STRINGANYVALUE:
+                            continueStatus=visitSTRINGANYVALUE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.STRINGANYOROMIT:
+                            continueStatus=visitSTRINGANYOROMIT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.QUOTESYMBOL:
+                            continueStatus=visitQUOTESYMBOL(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.STRINGOP:
+                            continueStatus=visitSTRINGOP(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Zero:
+                            continueStatus=visitZero(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Nonzeronum:
+                            continueStatus=visitNonzeronum(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Nonzeronumber:
+                            continueStatus=visitNonzeronumber(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Decimalnumber:
+                            continueStatus=visitDecimalnumber(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Num:
+                            continueStatus=visitNum(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BIN:
+                            continueStatus=visitBIN(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.HEX:
+                            continueStatus=visitHEX(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OCT:
+                            continueStatus=visitOCT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Char:
+                            continueStatus=visitChar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.GeneralTextCharacter:
+                            continueStatus=visitGeneralTextCharacter(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Alphanumeric:
+                            continueStatus=visitAlphanumeric(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Letter:
+                            continueStatus=visitLetter(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.UppercaseLetter:
+                            continueStatus=visitUppercaseLetter(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.LowercaseLetter:
+                            continueStatus=visitLowercaseLetter(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Special:
+                            continueStatus=visitSpecial(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OtherSpecial:
+                            continueStatus=visitOtherSpecial(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OtherCharacter:
+                            continueStatus=visitOtherCharacter(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Space:
+                            continueStatus=visitSpace(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PreProcessorMacro:
+                            continueStatus=visitPreProcessorMacro(node);
+                            return continueStatus;
+        }
+        return new ContinueStatus();
+    }
+
+    public abstract void init();
+    public abstract void finish();
+    
+    public void acceptDFS(LocationAST node) throws TTCN3BehaviorException {
+        init();
+        searchASTDepthFirst(node);
+        finish();
+    }
+
+    public void acceptBFS(LocationAST node) throws TTCN3BehaviorException {
+        init();
+        searchASTBreadthFirst(node);
+        finish();
+    }
+
+    protected ContinueStatus searchASTDepthFirst(LocationAST node) throws TTCN3BehaviorException {
+        if (node == null)
+            return ContinueStatus.getInstance(true, true);
+
+        LocationAST next = node;
+        while (next != null) {
+            ContinueStatus continueStatus = visit(next);
+            if (!continueStatus.continueSearch)
+                return ContinueStatus.getInstance(false, false);
+            if (continueStatus.goDeeper)
+                searchASTDepthFirst(next.getFirstChild());
+            next = next.getNextSibling();
+        }
+        return ContinueStatus.getInstance(true, true);
+    }
+
+    protected ContinueStatus searchASTBreadthFirst(LocationAST node) throws TTCN3BehaviorException {
+        if (node == null)
+            return ContinueStatus.getInstance(true, true);
+        
+        Queue<LocationAST> open = new LinkedList<LocationAST>();
+        open.add(node);
+        searchASTBreadthFirst(open);
+        return ContinueStatus.getInstance(true, true);
+    }
+
+    private ContinueStatus searchASTBreadthFirst(Queue<LocationAST> nodes) throws TTCN3BehaviorException {
+        Queue<LocationAST> open = new LinkedList<LocationAST>();
+        Iterator<LocationAST> it = nodes.iterator();
+        while (it.hasNext()) {
+            LocationAST item = it.next();
+            while (item != null) {
+                ContinueStatus continueStatus = visit(item);
+                if (!continueStatus.continueSearch)
+                    return ContinueStatus.getInstance(false, false);
+                if ( (item.getFirstChild() != null) && (continueStatus.goDeeper) )
+                    open.add(item.getFirstChild());
+                item = item.getNextSibling();
+            }
+        }
+        if (open.size() > 0)
+            searchASTBreadthFirst(open);
+        return ContinueStatus.getInstance(true, true);
+    }
+
+    static class ContinueStatus {
+        public boolean continueSearch = true;
+        public boolean goDeeper = true;
+        private static ContinueStatus truetrue = new ContinueStatus(true, true);
+        private static ContinueStatus truefalse = new ContinueStatus(true, false);
+        private static ContinueStatus falsetrue = new ContinueStatus(false, true);
+        private static ContinueStatus falsefalse = new ContinueStatus(false, false);
+
+        private ContinueStatus() {
+            this.continueSearch = true;
+            this.goDeeper = true;
+        }
+
+        private ContinueStatus(boolean continueSearch, boolean goDeeper) {
+            this.continueSearch = continueSearch;
+            this.goDeeper = goDeeper;
+        }
+
+        public static ContinueStatus getInstance(boolean continueSearch, boolean goDeeper) {
+            if (continueSearch && goDeeper) {
+                return truetrue;
+            } else if (!continueSearch && goDeeper) {
+                return falsetrue;
+            } else if (continueSearch && !goDeeper) {
+                return truefalse;
+            } else {
+                return falsefalse;
+            }
+        }
+    }
+    
+
+}
Index: /trunk/t3d/src/org/etsi/t3d/visitor/DependencyVisitor.java
===================================================================
--- /trunk/t3d/src/org/etsi/t3d/visitor/DependencyVisitor.java	(revision 7)
+++ /trunk/t3d/src/org/etsi/t3d/visitor/DependencyVisitor.java	(revision 7)
@@ -0,0 +1,182 @@
+package org.etsi.t3d.visitor;
+
+import java.util.ArrayList;
+import java.util.LinkedList;
+
+import org.etsi.t3d.DependencyPrinter;
+import org.etsi.t3d.exceptions.TTCN3BehaviorException;
+
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.ASTUtil;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.LocationAST;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.TTCN3ParserTokenTypes;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.symboltable.EnumSymbol;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.symboltable.Symbol;
+
+public class DependencyVisitor extends AbstractVisitor {
+	
+	private DependencyPrinter dependencyPrinter;
+
+	public DependencyVisitor(DependencyPrinter dependencyPrinter) {
+		this.dependencyPrinter = dependencyPrinter;
+	}
+	@Override
+	public void finish() {
+	}
+
+	@Override
+	public void init() {
+	}
+	
+	
+	/**
+	 * Extracts identifiers related to a module definition identifier within the 
+	 * corresponding module definition subtree
+	 * TODO: filter out predefined functions
+	 * @param moduleDefinitionIdentifierNode - A module definition identifier node
+	 * @return - A list of referenced identifier nodes, excluding the identifier
+	 *  nodes of the module definition itself; if node is not of type Identifier
+	 *  an empty list is returned instead
+	 */
+	//TODO: this may need to be moved for reuse
+	private static LinkedList<LocationAST> getRelatedIdentifierNodes(
+			LocationAST identifierNode) {
+		LinkedList<LocationAST> identifierNodes = new LinkedList<LocationAST>();
+		if (identifierNode.getType() != TTCN3ParserTokenTypes.Identifier) {
+			return identifierNodes;
+		}
+		LocationAST moduleDefinitionNode = LocationAST.resolveParentsUntilType(identifierNode,
+				TTCN3ParserTokenTypes.ModuleDefinition);
+
+		LocationAST typeNode = LocationAST.getModuleDefinitionTypeNode(moduleDefinitionNode);
+		if (typeNode.getType() == TTCN3ParserTokenTypes.ModuleParDef
+				&& typeNode.getFirstChild().getType() == TTCN3ParserTokenTypes.MultitypedModuleParList) {
+			LocationAST sibling = identifierNode.getNextSibling();
+			if (sibling != null
+					&& sibling.getType() != TTCN3ParserTokenTypes.Identifier) {
+				identifierNodes.addAll(ASTUtil.findTypeNodes(sibling,
+						TTCN3ParserTokenTypes.Identifier));
+
+			}
+			LocationAST moduleParNode = LocationAST.resolveParentsUntilType(identifierNode,
+					TTCN3ParserTokenTypes.ModulePar);
+			LocationAST moduleParTypeNode = moduleParNode.getFirstChild();
+			identifierNodes.addAll(ASTUtil.findTypeNodes(moduleParTypeNode,
+					TTCN3ParserTokenTypes.Identifier));
+
+		} else {
+			identifierNodes = ASTUtil.findTypeNodes(moduleDefinitionNode,
+					TTCN3ParserTokenTypes.Identifier);
+			ArrayList<LocationAST> moduleDefinitionIdentifierNodes = LocationAST.getModuleDefinitionIdentifiersList(moduleDefinitionNode);
+			identifierNodes.removeAll(moduleDefinitionIdentifierNodes);
+		}
+		// TODO: exclude predefined functions
+		return identifierNodes;
+	}	
+	
+	
+	/**
+	 * Extracts referenced identifiers from within a module definition subtree
+	 * TODO: filter out predefined functions
+	 * @param moduleDefinitionNode - A module definition node
+	 * @return - A list of referenced identifier nodes, excluding the identifier nodes of the module definition itself; if node is not of type ModuleDefintion, an empty list is returned instead
+	 */
+	//TODO: This may have to be deprecated
+	private static LinkedList<LocationAST> getReferencedIdentifierNodes(LocationAST moduleDefinitionNode){
+		if (moduleDefinitionNode.getType()!=TTCN3ParserTokenTypes.ModuleDefinition) {
+			return new LinkedList<LocationAST>();
+		}
+		LinkedList<LocationAST> identifierNodes = ASTUtil.findTypeNodes(moduleDefinitionNode, TTCN3ParserTokenTypes.Identifier);
+		ArrayList<LocationAST> moduleDefinitionIdentifierNodes = LocationAST.getModuleDefinitionIdentifiersList(moduleDefinitionNode);
+		identifierNodes.removeAll(moduleDefinitionIdentifierNodes);
+		//TODO: exclude predefined functions
+		return identifierNodes;
+	}
+	
+	
+	/**
+	 * Transforms a list of <LocationAST> identifier nodes into a list of <String> reference IDs
+	 * @param identifierNodes - the list of identifier nodes
+	 * @return - A list of reference IDs 
+	 */
+	private LinkedList<String> getReferenceIds(LinkedList<LocationAST> identifierNodes){
+		LinkedList<String> referencedIds = new LinkedList<String>();
+		
+		for (LocationAST identifierNode : identifierNodes) {
+			LocationAST declarationNode = VisitorCommonFunctions.getDeclarationNodeFromIdentifier(identifierNode.getFirstChild());
+			if (declarationNode != null) {
+				String id = VisitorCommonFunctions.getIdFromIdentifier(declarationNode);
+				// TODO: move predefined filtering up
+				if (!id.equals("#") && !id.startsWith("trexPredefined")) {
+					Symbol symbol = identifierNode.getFirstChild().getSymbol();
+					if (symbol instanceof EnumSymbol) {
+						//TODO: need to add handling in documentation and imports generators too probably
+						declarationNode = symbol.getSurroundingScope().getScopeSymbol().getDeclarationNode();
+						id = VisitorCommonFunctions.getIdFromIdentifier(declarationNode);
+					}
+					if (VisitorCommonFunctions.isValidCrossReference(declarationNode)) {
+						if (!referencedIds.contains(id)) {
+							referencedIds.add(id);
+						}
+					}
+				} 
+			} else {
+				referencedIds.add("unresolvedReference---"
+						+ VisitorCommonFunctions.getName(identifierNode.getFirstChild()));
+			}
+		}
+		return referencedIds;
+	}	
+	
+	
+	private String getDependecies(LocationAST identifierNode) {
+		//TODO: this should be a part of the printer
+		LinkedList<String> referenceIds = getReferenceIds(getRelatedIdentifierNodes(identifierNode));
+		//sanitize list for slipped-through enumerated values
+		referenceIds.remove(VisitorCommonFunctions.getIdFromIdentifier(identifierNode));
+		String refs = "\n\t\t<reflist>";
+		for (String id : referenceIds)
+			refs += "\n\t\t\t<ref id=\"" + id + "\"/>";
+		refs += "\n\t\t</reflist>";
+		return refs;
+	}
+	
+	private String getElementList(LocationAST node){
+		//TODO: this should be a part of the printer
+		String elementList = "\n\t\t<elementlist>";
+		LinkedList <LocationAST> moduleDefinitionsList = ASTUtil.findTypeNodes(LocationAST.resolveParentsUntilType(node, TTCN3ParserTokenTypes.ModuleDefinition).getFirstChild(), TTCN3ParserTokenTypes.ModuleDefinition);
+		for(LocationAST moduleDefinitionNode : moduleDefinitionsList){
+			ArrayList<LocationAST> identifiersList = LocationAST.getModuleDefinitionIdentifiersList(moduleDefinitionNode);
+			for(LocationAST identifierNode : identifiersList)
+				elementList += "\n\t\t\t<ref id=\"" + VisitorCommonFunctions.getIdFromIdentifier(identifierNode) + "\"/>";
+		}		
+		return elementList + "\n\t\t</elementlist>";
+	}
+
+	public ContinueStatus visitModuleDefinition(LocationAST node) throws TTCN3BehaviorException {
+		ArrayList<LocationAST> identifiersList = LocationAST.getModuleDefinitionIdentifiersList(node);
+		LocationAST typeNode = LocationAST.getModuleDefinitionTypeNode(node);
+		
+		for (LocationAST identifierNode : identifiersList) {
+			if (typeNode.getType()==TTCN3ParserTokenTypes.GroupDef) {
+				dependencyPrinter.newGroup(VisitorCommonFunctions.getName(identifierNode),
+						VisitorCommonFunctions.getIdFromIdentifier(identifierNode.getFirstChild()),
+						typeNode.getType(),
+						identifierNode.getLine(),
+						VisitorCommonFunctions.getModuleName(identifierNode),
+						getElementList(identifierNode));
+			}else {
+				dependencyPrinter.newElement(VisitorCommonFunctions.getName(identifierNode),
+						VisitorCommonFunctions.getIdFromIdentifier(identifierNode.getFirstChild()),
+						typeNode.getType(),
+						identifierNode.getLine(),
+						VisitorCommonFunctions.getModuleName(identifierNode),
+						getDependecies(identifierNode));
+			}
+		}
+
+		return ContinueStatus.getInstance(true,true);
+	}
+
+
+	
+}
Index: /trunk/t3d/src/org/etsi/t3d/visitor/ImportVisitor.java
===================================================================
--- /trunk/t3d/src/org/etsi/t3d/visitor/ImportVisitor.java	(revision 7)
+++ /trunk/t3d/src/org/etsi/t3d/visitor/ImportVisitor.java	(revision 7)
@@ -0,0 +1,43 @@
+package org.etsi.t3d.visitor;
+
+import java.util.LinkedList;
+
+import org.etsi.t3d.ImportPrinter;
+import org.etsi.t3d.T3D;
+import org.etsi.t3d.exceptions.TTCN3BehaviorException;
+
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.LocationAST;
+
+public class ImportVisitor extends AbstractVisitor {
+
+	private ImportPrinter importPrinter;
+	private String filename;
+
+	public ImportVisitor(ImportPrinter importPrinter) {
+		this.importPrinter = importPrinter;
+	}
+	@Override
+	public void finish() {
+	}
+
+	@Override
+	public void init() {
+		importPrinter.getLoggingInterface().setLogSourceName(this.getFilename());
+		importPrinter.setCurrentTTCN3File(this.getFilename());
+	}
+	
+	public ContinueStatus visitTTCN3Module(LocationAST node) throws TTCN3BehaviorException {
+		importPrinter.newModule(VisitorCommonFunctions.getName(node));
+		importPrinter.printImportView(node);
+		if(T3D.activeProfile.isCheckCyclicImports())
+			importPrinter.checkForCyclicImports(node, new LinkedList<String>());
+		return ContinueStatus.getInstance(true,true);
+	}
+	public void setFilename(String filename) {
+		this.filename = filename;
+	}
+	public String getFilename() {
+		return filename;
+	}
+	
+}
Index: /trunk/t3d/src/org/etsi/t3d/visitor/T3DVisitor.java
===================================================================
--- /trunk/t3d/src/org/etsi/t3d/visitor/T3DVisitor.java	(revision 7)
+++ /trunk/t3d/src/org/etsi/t3d/visitor/T3DVisitor.java	(revision 7)
@@ -0,0 +1,394 @@
+package org.etsi.t3d.visitor;
+
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.etsi.t3d.T3D;
+import org.etsi.t3d.XMLPrinter;
+import org.etsi.t3d.exceptions.TTCN3BehaviorException;
+
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.ASTUtil;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.LocationAST;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.TTCN3ParserTokenTypes;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.TokenWithIndex;
+
+import elements.*;
+
+public class T3DVisitor extends AbstractVisitor {
+
+	private XMLPrinter xmlPrinter;
+	private String filename;
+
+	public T3DVisitor(XMLPrinter xmlPrinter) {
+		this.xmlPrinter = xmlPrinter;
+	}
+
+	@Override
+	public void finish() {
+	}
+
+	@Override
+	public void init() {
+		xmlPrinter.getLoggingInterface().setLogSourceName(this.getFilename());
+		xmlPrinter.setCurrentTTCN3File(this.getFilename());
+	}
+
+	// creates TTCN3Element instance from first child of Moduledefinition-node
+	// and passes it to the XMLPrinter
+	// TODO: Move content to element and pass on the module definition node
+	// TODO: move calls from defNodes to moduleDefs
+	// TODO: watchout for module definitions that shall be disregarded or
+	// handled differently
+	private void visitElementDefinition(LocationAST node) {
+		if (node.getParent().getType() != TTCN3ParserTokenTypes.ModuleDefinition)
+			return;
+		LinkedList<LocationAST> parameterList = ASTUtil.findTypeNodes(node,
+				TTCN3ParserTokenTypes.FormalValuePar);
+		parameterList.addAll(ASTUtil.findTypeNodes(node,
+				TTCN3ParserTokenTypes.FormalPortPar));
+		parameterList.addAll(ASTUtil.findTypeNodes(node,
+				TTCN3ParserTokenTypes.FormalTimerPar));
+		parameterList.addAll(ASTUtil.findTypeNodes(node,
+				TTCN3ParserTokenTypes.FormalTemplatePar));
+
+		LinkedList<String> parNames = new LinkedList<String>();
+		LocationAST tempAST;
+		for (LocationAST parNode : parameterList) {
+			tempAST = parNode.getFirstChild();
+			while (tempAST.getNextSibling() != null
+					&& tempAST.getType() != TTCN3ParserTokenTypes.Identifier)
+				tempAST = tempAST.getNextSibling();
+			parNames.add(tempAST.getFirstChild().getText()
+					+ " "
+					+ tempAST.getLine());
+		}
+
+		ArrayList<LocationAST> elList = LocationAST.getModuleDefinitionIdentifiersList(node.getParent());
+
+		for (LocationAST elNode : elList) {
+			String paramView = "";
+			if (node.getType() == TTCN3ParserTokenTypes.ModuleParDef)
+				paramView = getParamview(elNode.getFirstChild(),
+						new LinkedList<String>());
+			TTCN3Element element = new TTCN3Element(elNode	.getFirstChild()
+															.getText(),
+					LocationAST.getTTCN3ParserTokenTypeTypePrettyName(node.getType()),
+					VisitorCommonFunctions.getLocationFromIdentifier(elNode.getFirstChild()),
+					VisitorCommonFunctions.getBehaviour(node,
+							0,
+							true,
+							T3D.activeProfile.isIncludeConstructBody()),
+					getCommentFromNode(node),
+					parNames,
+					xmlPrinter.getCurrentTTCN3File(),
+					paramView,
+					getGroupNavigationPath(node),
+					elNode.getLine());
+			xmlPrinter.printElement(element, node.getLine());
+		}
+	}
+
+	// returns XML representation of the group navigation path of a node
+	private String getGroupNavigationPath(LocationAST node) {
+		LocationAST currentNode = node.getParent();
+		String path = "\n<path>";
+		int groups = 0;
+		while (currentNode.getParent() != null) {
+			if (currentNode.getType() == TTCN3ParserTokenTypes.GroupDef) {
+				path += "\n<path_group loc=\""
+						+ VisitorCommonFunctions.getLocationFromIdentifier(VisitorCommonFunctions.getIdentifier(currentNode))
+						+ "\" name=\""
+						+ VisitorCommonFunctions.getName(currentNode)
+						+ "\">";
+				groups++;
+			}
+			currentNode = currentNode.getParent();
+		}
+		for (int i = 0; i < groups; i++)
+			path += "</path_group>";
+		return path + "</path>";
+	}
+
+	// returns XML representation of the Module Parameter View from a
+	// ModuleParDef node
+	private String getParamview(LocationAST node, LinkedList<String> locations) {
+		String pview = "";
+		LinkedList<LocationAST> refList = VisitorCommonFunctions.getReferenceList(node);
+		String loc = VisitorCommonFunctions.getLocationFromIdentifier(node);
+		String type = "mpview_"
+				+ LocationAST.resolveParentsUntilType(node, TTCN3ParserTokenTypes.ModuleDefinition)
+										.getFirstChild()
+										.getText();
+		pview += "\n<"
+				+ type
+				+ " loc=\""
+				+ loc
+				+ "\" name=\""
+				+ VisitorCommonFunctions.getName(node)
+				+ "\">";
+		if (refList != null) {
+			for (LocationAST n : refList) {
+				LocationAST moduleDef = LocationAST.resolveParentsUntilType(n, TTCN3ParserTokenTypes.ModuleDefinition);
+				if (moduleDef != null
+						&& (moduleDef.getFirstChild().getType() == TTCN3ParserTokenTypes.TestcaseDef
+								|| moduleDef.getFirstChild().getType() == TTCN3ParserTokenTypes.FunctionDef || moduleDef.getFirstChild()
+																														.getType() == TTCN3ParserTokenTypes.AltstepDef)) {
+					String loc1 = VisitorCommonFunctions.getLocationFromIdentifier(VisitorCommonFunctions.getIdentifier(moduleDef));
+
+					if (!locations.contains(loc1)) {
+						locations.add(loc1);
+						pview += getParamview(VisitorCommonFunctions.getIdentifier(moduleDef),
+								locations);
+					}
+				}
+			}
+		}
+		pview += "</" + type + ">";
+
+		return pview;
+	}
+
+	public ContinueStatus visitConstDef(LocationAST node)
+			throws TTCN3BehaviorException {
+		visitElementDefinition(node);
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitTemplateDef(LocationAST node)
+			throws TTCN3BehaviorException {
+		visitElementDefinition(node);
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitFunctionDef(LocationAST node)
+			throws TTCN3BehaviorException {
+		visitElementDefinition(node);
+		return ContinueStatus.getInstance(true, true);
+	}
+	public ContinueStatus visitExtFunctionDef(LocationAST node)
+		throws TTCN3BehaviorException {
+		visitElementDefinition(node);
+		return ContinueStatus.getInstance(true, true);
+	}
+	public ContinueStatus visitExtConstDef(LocationAST node)
+		throws TTCN3BehaviorException {
+		visitElementDefinition(node);
+		return ContinueStatus.getInstance(true, true);
+	}
+	
+	public ContinueStatus visitTestcaseDef(LocationAST node)
+			throws TTCN3BehaviorException {
+		visitElementDefinition(node);
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitAltstepDef(LocationAST node)
+			throws TTCN3BehaviorException {
+		visitElementDefinition(node);
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitTypeDef(LocationAST node)
+			throws TTCN3BehaviorException {
+		visitElementDefinition(node);
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitSignatureDef(LocationAST node)
+			throws TTCN3BehaviorException {
+		visitElementDefinition(node);
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitModuleParDef(LocationAST node)
+			throws TTCN3BehaviorException {
+		ArrayList<LocationAST> elList = LocationAST.getModuleDefinitionIdentifiersList(node.getParent());
+
+		for (LocationAST elNode : elList) {
+			String paramView = getParamview(elNode.getFirstChild(),
+					new LinkedList<String>());
+			TTCN3Element element = new TTCN3Element(elNode	.getFirstChild()
+															.getText(),
+					LocationAST.getTTCN3ParserTokenTypeTypePrettyName(node.getType()),
+					VisitorCommonFunctions.getLocationFromIdentifier(elNode.getFirstChild()),
+					VisitorCommonFunctions.getBehaviour(getModuleParNode(elNode),
+							0,
+							true,
+							true),
+					getCommentFromNode(node),
+					new LinkedList<String>(),
+					xmlPrinter.getCurrentTTCN3File(),
+					paramView,
+					getGroupNavigationPath(node),
+					elNode.getLine());
+			xmlPrinter.printElement(element, node.getLine());
+		}
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	private LocationAST getModuleParNode(LocationAST node) {
+		while (node.getType() != TTCN3ParserTokenTypes.ModulePar)
+			node = node.getParent();
+		return node;
+	}
+
+	public ContinueStatus visitTTCN3Module(LocationAST node)
+			throws TTCN3BehaviorException {
+		xmlPrinter.printModule(VisitorCommonFunctions.getName(node),
+				getCommentFromNode(node),
+				getModuleBehaviour(node, "module"),
+				node.getLine());
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitGroupDef(LocationAST node)
+			throws TTCN3BehaviorException {
+		ArrayList<LocationAST> elList = LocationAST.getModuleDefinitionIdentifiersList(node.getParent());
+
+		for (LocationAST elNode : elList) {
+			xmlPrinter.printGroup(elNode.getFirstChild().getText(),
+					VisitorCommonFunctions.getLocationFromIdentifier(elNode.getFirstChild()),
+					getCommentFromNode(node),
+					getModuleBehaviour(node, "group"),
+					getGroupNavigationPath(node),
+					node.getLine());
+		}
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	// returns the XML representation(<behaviour>) of a ModuleDefinitionList
+	// node
+	private String getModDefListBehaviour(LocationAST node, int tabs,
+			String controlPart) {
+		String tabString = "";
+		for (int i = 0; i < tabs; i++)
+			tabString += "<tab/>";
+		String b = "";
+		LocationAST ModDefNode = node.getFirstChild();
+		while (ModDefNode != null) {
+			if (ModDefNode.getType() == TTCN3ParserTokenTypes.ModuleDefinition) {
+				if (ModDefNode.getFirstChild().getType() == TTCN3ParserTokenTypes.GroupDef) {
+					LocationAST modDefListNode = ModDefNode.getFirstChild();
+					if (modDefListNode != null)
+						modDefListNode = modDefListNode.getFirstChild();
+					if (modDefListNode.getNextSibling() == null)
+						b += "\n"
+								+ tabString
+								+ "<keyword>group</keyword> "
+								+ "<link loc=\""
+								+ VisitorCommonFunctions.getLocationFromIdentifier(VisitorCommonFunctions.getIdentifier(ModDefNode))
+								+ "\">"
+								+ VisitorCommonFunctions.getName(ModDefNode)
+								+ "</link>"
+								+ "<constructbody id=\"o_"
+								+ ModDefNode.getOffset()
+								+ "\">"
+								+ " {\n"
+								+ tabString
+								+ "}</constructbody>\n";
+
+					if (modDefListNode != null)
+						modDefListNode = modDefListNode.getNextSibling();
+					if (modDefListNode != null)
+						modDefListNode = modDefListNode.getFirstChild();
+					if (modDefListNode != null)
+						b += "\n"
+								+ tabString
+								+ "<keyword>group</keyword> "
+								+ "<link loc=\""
+								+ VisitorCommonFunctions.getLocationFromIdentifier(VisitorCommonFunctions.getIdentifier(ModDefNode))
+								+ "\">"
+								+ VisitorCommonFunctions.getName(ModDefNode)
+								+ "</link>"
+								+ "<constructbody id=\"o_"
+								+ ModDefNode.getOffset()
+								+ "\">"
+								+ " {\n"
+								+ getModDefListBehaviour(modDefListNode,
+										tabs + 1,
+										"");
+				} else {
+					LocationAST elementDefNode = ModDefNode.getFirstChild();
+					if (elementDefNode.getType() == TTCN3ParserTokenTypes.Visibility)
+						elementDefNode = elementDefNode.getNextSibling();
+					if (elementDefNode.getType() == TTCN3ParserTokenTypes.ModuleParDef)
+						b += VisitorCommonFunctions.getBehaviour(elementDefNode,
+								tabs,
+								true,
+								true);
+					else
+						b += VisitorCommonFunctions.getBehaviour(elementDefNode,
+								tabs,
+								true,
+								T3D.activeProfile.isIncludeConstructBody());
+				}
+			}
+			ModDefNode = ModDefNode.getNextSibling();
+		}
+		return b
+				+ controlPart
+				+ "\n"
+				+ tabString.substring(6)
+				+ "}</constructbody>\n";
+	}
+
+	// returns the XML representation(<behaviour>) of a TTCN3Module node
+	private String getModuleBehaviour(LocationAST node, String type) {
+		LocationAST modDefListNode = null;
+		LinkedList<LocationAST> modDefListNodeList = ASTUtil.findTypeNodes(node,
+				TTCN3ParserTokenTypes.ModuleDefinitionList);
+		if (!modDefListNodeList.isEmpty())
+			modDefListNode = modDefListNodeList.getFirst();
+
+		if (modDefListNode == null)
+			return "<keyword>"
+					+ type
+					+ "</keyword> "
+					+ VisitorCommonFunctions.getName(node)
+					+ "<constructbody id=\"modulebody\">{\n}</constructbody>\n";
+
+		LinkedList<LocationAST> controlPartList = ASTUtil.findTypeNodes(node,
+				TTCN3ParserTokenTypes.ModuleControlPart);
+		LocationAST controlPartNode = null;
+		if (!controlPartList.isEmpty())
+			controlPartNode = controlPartList.getFirst();
+		String controlPartBehaviour = "";
+		if (controlPartNode != null)
+			controlPartBehaviour = VisitorCommonFunctions.getBehaviour(controlPartNode,
+					1,
+					true,
+					true);
+		String b = "<keyword>"
+				+ type
+				+ "</keyword> "
+				+ VisitorCommonFunctions.getName(node)
+				+ " <constructbody id=\"modulebody\">{\n"
+				+ getModDefListBehaviour(modDefListNode,
+						1,
+						controlPartBehaviour.replaceFirst("\\n<tab/><tab/>}\\n<tab/><tab/> ;",
+								"\n<tab/>};"));
+		modDefListNode = modDefListNode.getNextSibling();
+		return b + " ";
+	}
+
+	// returns the TTCN3Comment representation of T3Doc documentation preceding
+	// node
+	private TTCN3Comment getCommentFromNode(LocationAST node) {
+		List<TokenWithIndex> commentList = node.getCommentsBefore();
+		String rawComments = "";
+		for (TokenWithIndex c : commentList) {
+			rawComments = c.getText() + rawComments;
+		}
+		return new TTCN3Comment(rawComments, node.getType());
+	}
+
+	public void setFilename(String filename) {
+		this.filename = filename;
+	}
+
+	public String getFilename() {
+		return filename;
+	}
+
+}
Index: /trunk/t3d/src/org/etsi/t3d/visitor/VisitorCommonFunctions.java
===================================================================
--- /trunk/t3d/src/org/etsi/t3d/visitor/VisitorCommonFunctions.java	(revision 7)
+++ /trunk/t3d/src/org/etsi/t3d/visitor/VisitorCommonFunctions.java	(revision 7)
@@ -0,0 +1,251 @@
+package org.etsi.t3d.visitor;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.lang.StringEscapeUtils;
+
+import antlr.RecognitionException;
+
+import de.ugoe.cs.swe.trex.core.analyzer.astutil.ReferenceFinder;
+import de.ugoe.cs.swe.trex.core.analyzer.astutil.ReferenceWithContext;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.ASTUtil;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.KeywordExtractor;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.LocationAST;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.TTCN3FormatterTreeParser;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.TTCN3Lexer;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.TTCN3ParserTokenTypes;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.symboltable.Scope;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.symboltable.Symbol;
+import de.ugoe.cs.swe.trex.core.formatter.TTCN3FormatterParameters;
+
+public class VisitorCommonFunctions {
+
+	
+	public static String addSyntaxHighlighting(String element){
+		String[] TTCN3_KEYWORDS = KeywordExtractor.getInstance().getLiterals().toArray(new String[0]);
+		element = " " + element;
+		for(String keyword : TTCN3_KEYWORDS)
+			element = element.replaceAll(" " + keyword + " ", " <keyword>" + keyword + "</keyword> ").replaceAll("\\n" + keyword + " ", "\n<keyword>" + keyword + "</keyword> ").replaceAll(">" + keyword + " ", "><keyword>" + keyword + "</keyword> ");
+		return element.substring(1);
+	}	
+	
+	static class TTCN3Reference{
+		public TTCN3Reference(String name, String location) {
+			this.name = name;
+			this.location = location;
+		}
+		public String name;
+		public String location;
+	}
+	//returns a list of all references of a node in the TTCN3 project
+	public static LinkedList<TTCN3Reference> getReferences(LocationAST node){		
+		LinkedList<TTCN3Reference> refvector = new LinkedList<TTCN3Reference>();
+		LinkedList<LocationAST> refNodeList = ASTUtil.findTypeNodes(node, TTCN3ParserTokenTypes.IDENTIFIER);
+		for(LocationAST IdNode : refNodeList){
+			String name = IdNode.getText();
+			String location = getDecLocationFromIdentifier(IdNode);
+			if(!location.equals("#") && !location.startsWith("trexPredefined")
+					&& isValidCrossReference(IdNode)){
+					refvector.add(new TTCN3Reference(name, location));
+			}
+		}
+		return refvector;
+	}
+	//returns true if refNode is a valid cross-reference
+	//TODO: REVIEW, seems rather pointless 
+	public static boolean isValidCrossReference(LocationAST identifierNode){
+		LocationAST declarationNode = getDeclarationNodeFromIdentifier(identifierNode);
+		LocationAST declarationModuleDefinitionNode = LocationAST.resolveParentsUntilType(declarationNode, TTCN3ParserTokenTypes.ModuleDefinition);
+
+		if(declarationModuleDefinitionNode == null) {
+			return true;
+		}
+		
+		LinkedList<String> identifierNames = new LinkedList<String>();
+		for(LocationAST node : LocationAST.getModuleDefinitionIdentifiersList(declarationModuleDefinitionNode)) {
+			identifierNames.add(node.getFirstChild().getText());
+		}
+//		if(modDefNode.getFirstChild().getType() == TTCN3ParserTokenTypes.ExtFunctionDef || modDefNode.getFirstChild().getType() == TTCN3ParserTokenTypes.ExtConstDef)
+//			return false;
+//		else {
+			return (identifierNames.contains(identifierNode.getText()));
+//		}
+	}
+	
+	public static String replaceReferences(String b, LinkedList<TTCN3Reference> reflist){
+		for(TTCN3Reference r : reflist){
+			b = b.replaceAll("( |\\t)" + r.name + " ", " <link loc=\"" + r.location + "\">" + r.name + "</link> ");
+			b = b.replaceAll("( |\\t)" + r.name + ";", " <link loc=\"" + r.location + "\">" + r.name + "</link>;");
+			b = b.replaceAll("( |\\t)" + r.name + ",", " <link loc=\"" + r.location + "\">" + r.name + "</link>,");
+			b = b.replaceAll("( |\\t)" + r.name + "\n", " <link loc=\"" + r.location + "\">" + r.name + "</link>\n");
+		}
+		return b;
+	}
+	
+	//returns the XML representation(<behaviour>) of a ModuleDefinition node
+	public static String getBehaviour(LocationAST node, int tabs, boolean syntaxHighlighting, boolean showContructBody){
+		String tabString = "";
+		for(int i=0; i < tabs; i++)
+			tabString += "<tab/>";
+		LinkedList<TTCN3Reference> reflist = getReferences(node);
+		String b = getWholeElement(node, showContructBody).replaceAll("\\r", "");
+		b = StringEscapeUtils.escapeXml(b);
+		b = replaceReferences(b, reflist);
+		String constrEndString = "";
+		if(b.contains("{")){
+			b = b.replaceFirst("\\{", "<constructbody id=\"id" + node.getOffset() + "\">{");
+			constrEndString = "</constructbody>";
+		}
+		if(syntaxHighlighting)
+			b = addSyntaxHighlighting(b);
+		
+		if(b.charAt(b.length()-2) == '}' && b.charAt(b.length()-3) != ';'){
+			return tabString + b.substring(0, b.length()-3).replaceAll("\n", "\n" + tabString + "<tab/>") + "\n" + tabString + "}" + constrEndString + "\n";
+		}else{
+			
+			String beh = tabString + b.replaceAll("\n", "\n" + tabString + "<tab/>") + ";" + constrEndString + "\n";
+			return beh.replaceAll("(\\s|\\n|<tab/>)*;", ";").replaceFirst("<tab/>\\};</constructbody>", "};</constructbody>");
+		}
+	}
+	
+	//returns String representation of a ModuleDefinition node
+	public static String getWholeElement(LocationAST node, boolean showContructBody){
+		TTCN3FormatterTreeParser prettyPrinter = new TTCN3FormatterTreeParser();
+		prettyPrinter.setFormatterParameters(new TTCN3FormatterParameters());
+		try {
+			String element;
+			if(node.getType() == TTCN3ParserTokenTypes.ModuleControlPart)
+				element = prettyPrinter.pr_ModuleControlPart(node).toString() + " ";
+			else if(node.getType() == TTCN3ParserTokenTypes.ModulePar)
+				element = "modulepar " + prettyPrinter.pr_ModulePar(node).toString() + " ";
+			else
+				element = prettyPrinter.pr_ModuleDefinition(node.getParent()).toString() + " ";
+			if(!showContructBody && element.contains("{")){
+				if(node.getType() == TTCN3ParserTokenTypes.TemplateDef && element.contains(":="))
+					element= element.substring(0, element.indexOf(":="));
+				else
+					element= element.substring(0, element.indexOf('{'));				
+			}
+			
+			return element.replaceAll("\\r","");
+		} catch (RecognitionException e) {
+			e.printStackTrace();
+		}
+		return "*** Parser error ***";
+	}
+	
+	// returns a list of every node that references the given node
+	public static LinkedList<LocationAST> getReferenceList(LocationAST node){
+		LinkedList<LocationAST> linkedRefList = new LinkedList<LocationAST>();
+		ReferenceFinder referenceFinder = new ReferenceFinder();
+		Scope scope = node.getScope();
+		if (scope == null)
+			return null;
+		Symbol symb = scope.resolve(node);
+		Map<String, List<ReferenceWithContext>> result = referenceFinder.findReferences(symb);
+
+		Iterator<List<ReferenceWithContext>> refIt = result.values().iterator();
+		if(refIt != null)
+			while(refIt.hasNext()){
+				
+				ArrayList<ReferenceWithContext> refList = (ArrayList<ReferenceWithContext>)refIt.next();
+				for(ReferenceWithContext ref : refList){
+					linkedRefList.add(ref.getReferenceNode());
+				}
+			}
+		if(linkedRefList.isEmpty())
+			return null;
+		return linkedRefList;
+	}
+	
+	
+	//returns the location of an html file that would represent node
+	public static String getLocationFromIdentifier(LocationAST node){
+		return getModuleName(node) + "-" + node.getText() + "-" + node.getOffset() + ".html";
+	}
+	
+	public static String getIdFromIdentifier(LocationAST node){
+		return getModuleName(node) + "-" + VisitorCommonFunctions.getName(node);
+	}
+	//returns the name of the TTCN3 module node belongs to 
+	public static String getModuleName(LocationAST node){
+		LocationAST module = getModule(node);
+		while(module.getFirstChild() != null)
+			module = module.getFirstChild();
+		return module.getText();
+	}
+	
+	public static LocationAST getModule(LocationAST node){
+		LocationAST module = node;
+		while(module.getParent() != null){
+			module = module.getParent();
+		}
+		return module;
+	}
+	
+	//returns the name of a TTCN3 element
+	public static String getName(LocationAST node){
+		return getIdentifier(node).getText();
+	}
+	//returns the identifier of a TTCN3 element
+	public static LocationAST getIdentifier(LocationAST node){
+		if(node.getType() == TTCN3ParserTokenTypes.Identifier)
+			return node.getFirstChild();
+		LocationAST identifier = null;
+		for(int i = 1; identifier == null && i < 1000; i++)
+			identifier = searchIdentifier(node, i);
+		
+		if(identifier.getFirstChild() != null)
+			identifier = identifier.getFirstChild();
+		return identifier;
+	}
+	//returns the first identifier node found in a certain depth or null if none is found
+	public static LocationAST searchIdentifier(LocationAST node, int depth){
+		if(node.getType() == TTCN3ParserTokenTypes.Identifier)
+			return node;
+		if(node.getParent().getType() == TTCN3ParserTokenTypes.Identifier)
+			return node;
+		if(depth <= 0)
+			return null;
+		LocationAST currNode = node.getFirstChild();
+		LocationAST identifier = null;
+		while(currNode != null && identifier == null){
+			identifier = searchIdentifier(currNode, depth-1);
+			currNode = currNode.getNextSibling();
+		}
+		return identifier;
+	}
+	
+	//returns getLocationFromIdentifier() of the declaration node of node
+	public static String getDecLocationFromIdentifier(LocationAST node){
+		LocationAST decNode = getDeclarationNodeFromIdentifier(node);
+		if(decNode != null)			
+			if(VisitorCommonFunctions.getModuleName(decNode).equals(node.getText()))
+				return node.getText() + ".html";
+			else 
+				return VisitorCommonFunctions.getLocationFromIdentifier(decNode);
+		else
+			return "#";
+	}
+	
+	public static LocationAST getDeclarationNodeFromIdentifier(LocationAST node){
+		Scope identifierScope = node.getScope();
+		Symbol decSymbol = null;
+		if(identifierScope != null)
+			decSymbol = identifierScope.resolve(node);
+		else
+			return null;
+		//Symbol decSymbol = node.getSymbol();
+		if(decSymbol != null){
+			LocationAST decNode = decSymbol.getDeclarationNode();
+			return decNode;
+		}
+		else
+			return null;
+	}
+	
+}
Index: /trunk/t3d/src/org/etsi/t3d/visitor/tool/VisitorGenerator.java
===================================================================
--- /trunk/t3d/src/org/etsi/t3d/visitor/tool/VisitorGenerator.java	(revision 7)
+++ /trunk/t3d/src/org/etsi/t3d/visitor/tool/VisitorGenerator.java	(revision 7)
@@ -0,0 +1,70 @@
+package org.etsi.t3d.visitor.tool;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.lang.reflect.Field;
+
+import org.antlr.stringtemplate.StringTemplate;
+import org.antlr.stringtemplate.StringTemplateGroup;
+
+public class VisitorGenerator {
+
+	public VisitorGenerator() {
+
+		try {
+			StringTemplateGroup group = new StringTemplateGroup("visitorGroup",
+					"templates");
+			group.setRefreshInterval(0); // no caching
+			group.setRefreshInterval(Integer.MAX_VALUE); // no refreshing
+			StringTemplate classTemplate = group
+					.getInstanceOf("AbstractVisitor");
+			Class<?> c = Class
+					.forName("de.ugoe.cs.swe.trex.core.analyzer.rfparser.TTCN3ParserTokenTypes");
+			Field[] fields = c.getFields();
+
+			for (int i = 0; i < fields.length; i++) {
+				if (!isOmitField(fields[i])) {
+					classTemplate.setAttribute("nodeType", fields[i].getName());
+				}
+			}
+			File f = new File(
+					"src/org/etsi/t3d/visitor/AbstractVisitor.java");
+			saveFile(f, classTemplate.toString());
+		} catch (ClassNotFoundException e) {
+			e.printStackTrace();
+		}
+	}
+
+	// ----------------------------------------------------------------------
+
+	private boolean isOmitField(Field f) {
+		if (f.getName().contains("EOF")
+				|| f.getName().contains("NULL_TREE_LOOKAHEAD"))
+			return true;
+		return false;
+	}
+
+	// ----------------------------------------------------------------------
+
+	public void saveFile(File filename, String content) {
+		FileOutputStream fs;
+		try {
+			fs = new FileOutputStream(filename);
+			fs.write(content.getBytes());
+			fs.close();
+		} catch (FileNotFoundException e) {
+			e.printStackTrace();
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+
+	// ----------------------------------------------------------------------
+
+	public static void main(String[] args) {
+		new VisitorGenerator();
+	}
+
+}
Index: /trunk/t3d/t3d
===================================================================
--- /trunk/t3d/t3d	(revision 7)
+++ /trunk/t3d/t3d	(revision 7)
@@ -0,0 +1,58 @@
+#!/bin/bash
+
+if [ "$T3D_HOME" == "" ]; then
+   echo "T3D_HOME environment variable not set! It must point to the T3D installation directory!";
+   exit;
+fi
+
+if [ "$JAVA_HOME" == "" ]; then
+   echo "JAVA_HOME environment variable not set! It must point to the directory of your Java Runtime >= 5.0";
+   exit;
+fi
+
+JAVA=$JAVA_HOME/bin/java 
+
+CLASSPATH=$CLASSPATH:$T3D_HOME/lib/com.yourkit.javaprofiler.controller_7.0.4.jar
+CLASSPATH=$CLASSPATH:$T3D_HOME/lib/de.ugoe.cs.swe.trex.antlr_2.7.6.jar
+CLASSPATH=$CLASSPATH:$T3D_HOME/lib/org.eclipse.core.resources_3.4.0.v20080604-1400.jar
+CLASSPATH=$CLASSPATH:$T3D_HOME/lib/org.eclipse.core.runtime_3.4.0.v20080512.jar
+CLASSPATH=$CLASSPATH:$T3D_HOME/lib/org.eclipse.equinox.common_3.4.0.v20080421-2006.jar
+CLASSPATH=$CLASSPATH:$T3D_HOME/lib/org.eclipse.osgi_3.4.0.v20080605-1900.jar
+CLASSPATH=$CLASSPATH:$T3D_HOME/lib/stringtemplate.jar
+CLASSPATH=$CLASSPATH:$T3D_HOME/lib/xpp3_min-1.1.4c.jar
+CLASSPATH=$CLASSPATH:$T3D_HOME/lib/xstream-1.3.1.jar
+CLASSPATH=$CLASSPATH:$T3D_HOME/lib/fop.jar
+CLASSPATH=$CLASSPATH:$T3D_HOME/lib/commons-logging-1.1.1.jar
+CLASSPATH=$CLASSPATH:$T3D_HOME/lib/commons-io-1.4.jar
+CLASSPATH=$CLASSPATH:$T3D_HOME/lib/commons-lang-2.4.jar
+CLASSPATH=$CLASSPATH:$T3D_HOME/lib/commons-cli-1.2.jar
+CLASSPATH=$CLASSPATH:$T3D_HOME/lib/batik-util.jar
+CLASSPATH=$CLASSPATH:$T3D_HOME/lib/saxon9.jar
+
+if [ -d "$T3D_HOME/../de.ugoe.cs.swe.trex.core/bin/de" ]; then
+   CLASSPATH=$CLASSPATH:$T3D_HOME/../de.ugoe.cs.swe.trex.core/bin
+else
+   CLASSPATH=$CLASSPATH:$T3D_HOME/lib/de.ugoe.cs.swe.trex.core_0.6.0.200810271154.jar
+fi
+
+if [ -d "$T3D_HOME/../org.etsi.common/bin/org" ]; then
+   CLASSPATH=$CLASSPATH:$T3D_HOME/../org.etsi.common/bin
+else
+   CLASSPATH=$CLASSPATH:$T3D_HOME/lib/org.etsi.common.jar
+fi
+
+if [ -d "$T3D_HOME/bin/org" ]; then
+   CLASSPATH=$CLASSPATH:$T3D_HOME/bin
+else
+   CLASSPATH=$CLASSPATH:$T3D_HOME/lib/t3d.jar
+fi
+
+JAVA_CMD="$JAVA -Xmx512m -Xss128m -cp $CLASSPATH org.etsi.t3d.T3D"
+
+if [[ $# > 0 && $1 == "--echo" ]]; then
+	echo $JAVA_CMD
+else
+	$JAVA_CMD "$@"
+fi
+
+#$JAVA -Xmx512m -Xss128m -cp $CLASSPATH org.etsi.t3d.T3D "$@"
Index: /trunk/t3d/t3d-launch4j.xml
===================================================================
--- /trunk/t3d/t3d-launch4j.xml	(revision 7)
+++ /trunk/t3d/t3d-launch4j.xml	(revision 7)
@@ -0,0 +1,48 @@
+<launch4jConfig>
+  <dontWrapJar>true</dontWrapJar>
+  <headerType>console</headerType>
+  <jar></jar>
+  <outfile>t3d.exe</outfile>
+  <errTitle></errTitle>
+  <cmdLine></cmdLine>
+  <chdir></chdir>
+  <priority>normal</priority>
+  <downloadUrl>http://java.com/download</downloadUrl>
+  <supportUrl></supportUrl>
+  <customProcName>true</customProcName>
+  <stayAlive>false</stayAlive>
+  <manifest></manifest>
+  <icon></icon>
+  <classPath>
+    <mainClass>org.etsi.t3d.T3D</mainClass>
+    <cp>%EXEDIR%\lib\com.yourkit.javaprofiler.controller_7.0.4.jar</cp>
+    <cp>%EXEDIR%\lib\de.ugoe.cs.swe.trex.antlr_2.7.6.jar</cp>
+    <cp>%EXEDIR%\lib\de.ugoe.cs.swe.trex.core_0.6.0.201003090301.jar</cp>
+    <cp>%EXEDIR%\lib\org.eclipse.core.resources_3.4.0.v20080604-1400.jar</cp>
+    <cp>%EXEDIR%\lib\org.eclipse.core.runtime_3.4.0.v20080512.jar</cp>
+    <cp>%EXEDIR%\lib\org.eclipse.equinox.common_3.4.0.v20080421-2006.jar</cp>
+    <cp>%EXEDIR%\lib\org.eclipse.osgi_3.4.0.v20080605-1900.jar</cp>
+    <cp>%EXEDIR%\lib\stringtemplate.jar</cp>
+    <cp>%EXEDIR%\lib\xpp3_min-1.1.4c.jar</cp>
+    <cp>%EXEDIR%\lib\xstream-1.3.1.jar</cp>
+    <cp>%EXEDIR%\lib\commons-cli-1.2.jar</cp>
+    <cp>%EXEDIR%\lib\fop.jar</cp>
+    <cp>%EXEDIR%\lib\commons-logging-1.1.1.jar</cp>
+    <cp>%EXEDIR%\lib\commons-io-1.4.jar</cp>
+    <cp>%EXEDIR%\lib\commons-lang-2.4.jar</cp>
+    <cp>%EXEDIR%\lib\commons-cli-1.2.jar</cp>
+    <cp>%EXEDIR%\lib\batik-util.jar</cp>
+    <cp>%EXEDIR%\lib\saxon9.jar</cp>
+    <cp>%EXEDIR%\lib\org.etsi.common.jar</cp>
+    <cp>%EXEDIR%\lib\t3d.jar</cp>
+  </classPath>
+  <jre>
+    <path></path>
+    <minVersion>1.5.0</minVersion>
+    <maxVersion></maxVersion>
+    <jdkPreference>preferJre</jdkPreference>
+    <initialHeapSize>512</initialHeapSize>
+    <maxHeapSize>512</maxHeapSize>
+    <opt>-Xss128m</opt>
+  </jre>
+</launch4jConfig>
Index: /trunk/t3d/t3d.bat
===================================================================
--- /trunk/t3d/t3d.bat	(revision 7)
+++ /trunk/t3d/t3d.bat	(revision 7)
@@ -0,0 +1,58 @@
+@echo off
+
+if "%T3D_HOME%" == "" (
+    echo T3D_HOME environment variable not set! It must point to the T3D installation directory!
+    goto:eof
+)
+
+if "%JAVA_HOME%" == "" (
+    echo JAVA_HOME environment variable not set! It must point to the directory of your Java Runtime >= 5.0
+    goto:eof
+)
+
+setlocal
+set CLASSPATH=%T3D_HOME%\lib\com.yourkit.javaprofiler.controller_7.0.4.jar
+set CLASSPATH=%CLASSPATH%;%T3D_HOME%\lib\de.ugoe.cs.swe.trex.antlr_2.7.6.jar
+set CLASSPATH=%CLASSPATH%;%T3D_HOME%\lib\org.eclipse.core.resources_3.4.0.v20080604-1400.jar
+set CLASSPATH=%CLASSPATH%;%T3D_HOME%\lib\org.eclipse.core.runtime_3.4.0.v20080512.jar
+set CLASSPATH=%CLASSPATH%;%T3D_HOME%\lib\org.eclipse.equinox.common_3.4.0.v20080421-2006.jar
+set CLASSPATH=%CLASSPATH%;%T3D_HOME%\lib\org.eclipse.osgi_3.4.0.v20080605-1900.jar
+set CLASSPATH=%CLASSPATH%;%T3D_HOME%\lib\stringtemplate.jar
+set CLASSPATH=%CLASSPATH%;%T3D_HOME%\lib\xpp3_min-1.1.4c.jar
+set CLASSPATH=%CLASSPATH%;%T3D_HOME%\lib\xstream-1.3.1.jar
+set CLASSPATH=%CLASSPATH%;%T3D_HOME%\lib\fop.jar
+set CLASSPATH=%CLASSPATH%;%T3D_HOME%\lib\commons-logging-1.1.1.jar
+set CLASSPATH=%CLASSPATH%;%T3D_HOME%\lib\commons-io-1.4.jar
+set CLASSPATH=%CLASSPATH%;%T3D_HOME%\lib\commons-lang-2.4.jar
+set CLASSPATH=%CLASSPATH%;%T3D_HOME%\lib\commons-cli-1.2.jar
+set CLASSPATH=%CLASSPATH%;%T3D_HOME%\lib\batik-util.jar
+set CLASSPATH=%CLASSPATH%;%T3D_HOME%\lib\saxon9.jar
+
+set JAVA="%JAVA_HOME%\bin\java.exe"
+
+if exist "%T3D_HOME%\..\de.ugoe.cs.swe.trex.core\bin\de" (
+    set CLASSPATH=%CLASSPATH%;%T3D_HOME%\..\de.ugoe.cs.swe.trex.core\bin
+) else (
+    set CLASSPATH=%CLASSPATH%;%T3D_HOME%\lib\de.ugoe.cs.swe.trex.core_0.6.0.200810271154.jar
+)
+
+if exist "%T3D_HOME%\..\org.etsi.common\bin\org" (
+    set CLASSPATH=%CLASSPATH%;%T3D_HOME%\..\org.etsi.common\bin
+) else (
+    set CLASSPATH=%CLASSPATH%;%T3D_HOME%\lib\org.etsi.common.jar
+)
+
+if exist "%T3D_HOME%\bin\org" (
+    set CLASSPATH=%CLASSPATH%;%T3D_HOME%\bin
+) else (
+    set CLASSPATH=%CLASSPATH%;%T3D_HOME%\lib\t3d.jar
+)
+
+set JAVA_CMD=%JAVA% -Xmx512m -Xss128m -cp "%CLASSPATH%" org.etsi.t3d.T3D
+
+if "%1" == "--echo" (
+	echo %JAVA_CMD%
+) else (
+	%JAVA_CMD% %*
+)
+
Index: /trunk/t3d/templates/AbstractVisitor.st
===================================================================
--- /trunk/t3d/templates/AbstractVisitor.st	(revision 7)
+++ /trunk/t3d/templates/AbstractVisitor.st	(revision 7)
@@ -0,0 +1,118 @@
+//This class has been generated automatically. Do not modify it by hand!
+package org.etsi.t3d.visitor;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.Queue;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.LocationAST;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.TTCN3ParserTokenTypes;
+//import de.ugoe.cs.swe.t3simexec.exceptions.TTCN3BehaviorException;
+import org.etsi.t3d.exceptions.TTCN3BehaviorException;
+
+public abstract class AbstractVisitor {
+
+    public int visitedNodeCount;
+
+    $nodeType:VisitMethod(); separator="\n"$
+
+    public ContinueStatus visit(LocationAST node) throws TTCN3BehaviorException {
+        visitedNodeCount++;
+        ContinueStatus continueStatus;
+        switch(node.getType()) {
+            $nodeType:VisitCase(); separator="\n"$
+        }
+        return new ContinueStatus();
+    }
+
+    public abstract void init();
+    public abstract void finish();
+    
+    public void acceptDFS(LocationAST node) throws TTCN3BehaviorException {
+        init();
+        searchASTDepthFirst(node);
+        finish();
+    }
+
+    public void acceptBFS(LocationAST node) throws TTCN3BehaviorException {
+        init();
+        searchASTBreadthFirst(node);
+        finish();
+    }
+
+    protected ContinueStatus searchASTDepthFirst(LocationAST node) throws TTCN3BehaviorException {
+        if (node == null)
+            return ContinueStatus.getInstance(true, true);
+
+        LocationAST next = node;
+        while (next != null) {
+            ContinueStatus continueStatus = visit(next);
+            if (!continueStatus.continueSearch)
+                return ContinueStatus.getInstance(false, false);
+            if (continueStatus.goDeeper)
+                searchASTDepthFirst(next.getFirstChild());
+            next = next.getNextSibling();
+        }
+        return ContinueStatus.getInstance(true, true);
+    }
+
+    protected ContinueStatus searchASTBreadthFirst(LocationAST node) throws TTCN3BehaviorException {
+        if (node == null)
+            return ContinueStatus.getInstance(true, true);
+        
+        Queue<LocationAST> open = new LinkedList<LocationAST>();
+        open.add(node);
+        searchASTBreadthFirst(open);
+        return ContinueStatus.getInstance(true, true);
+    }
+
+    private ContinueStatus searchASTBreadthFirst(Queue<LocationAST> nodes) throws TTCN3BehaviorException {
+        Queue<LocationAST> open = new LinkedList<LocationAST>();
+        Iterator<LocationAST> it = nodes.iterator();
+        while (it.hasNext()) {
+            LocationAST item = it.next();
+            while (item != null) {
+                ContinueStatus continueStatus = visit(item);
+                if (!continueStatus.continueSearch)
+                    return ContinueStatus.getInstance(false, false);
+                if ( (item.getFirstChild() != null) && (continueStatus.goDeeper) )
+                    open.add(item.getFirstChild());
+                item = item.getNextSibling();
+            }
+        }
+        if (open.size() > 0)
+            searchASTBreadthFirst(open);
+        return ContinueStatus.getInstance(true, true);
+    }
+
+    static class ContinueStatus {
+        public boolean continueSearch = true;
+        public boolean goDeeper = true;
+        private static ContinueStatus truetrue = new ContinueStatus(true, true);
+        private static ContinueStatus truefalse = new ContinueStatus(true, false);
+        private static ContinueStatus falsetrue = new ContinueStatus(false, true);
+        private static ContinueStatus falsefalse = new ContinueStatus(false, false);
+
+        private ContinueStatus() {
+            this.continueSearch = true;
+            this.goDeeper = true;
+        }
+
+        private ContinueStatus(boolean continueSearch, boolean goDeeper) {
+            this.continueSearch = continueSearch;
+            this.goDeeper = goDeeper;
+        }
+
+        public static ContinueStatus getInstance(boolean continueSearch, boolean goDeeper) {
+            if (continueSearch && goDeeper) {
+                return truetrue;
+            } else if (!continueSearch && goDeeper) {
+                return falsetrue;
+            } else if (continueSearch && !goDeeper) {
+                return truefalse;
+            } else {
+                return falsefalse;
+            }
+        }
+    }
+    
+
+}
Index: /trunk/t3d/templates/VisitCase.st
===================================================================
--- /trunk/t3d/templates/VisitCase.st	(revision 7)
+++ /trunk/t3d/templates/VisitCase.st	(revision 7)
@@ -0,0 +1,3 @@
+            case TTCN3ParserTokenTypes.$it$:
+                continueStatus=visit$it$(node);
+                return continueStatus;
Index: /trunk/t3d/templates/VisitMethod.st
===================================================================
--- /trunk/t3d/templates/VisitMethod.st	(revision 7)
+++ /trunk/t3d/templates/VisitMethod.st	(revision 7)
@@ -0,0 +1,1 @@
+    public ContinueStatus visit$it$(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
Index: /trunk/t3d/xsd/dependencies.dtd
===================================================================
--- /trunk/t3d/xsd/dependencies.dtd	(revision 7)
+++ /trunk/t3d/xsd/dependencies.dtd	(revision 7)
@@ -0,0 +1,9 @@
+<!ELEMENT dependencies element*>
+<!ELEMENT element reflist>
+ <!ATTLIST element id ID #REQUIRED,
+                   type CDATA #REQUIRED
+                   line CDATA #REQUIRED
+                   module CDATA #REQUIRED>
+<!ELEMENT reflist ref*>
+<!ELEMENT ref EMPTY>
+ <!ATTLIST ref id IDREF #REQUIRED> 
Index: /trunk/t3d/xsd/dtd.dtd
===================================================================
--- /trunk/t3d/xsd/dtd.dtd	(revision 7)
+++ /trunk/t3d/xsd/dtd.dtd	(revision 7)
@@ -0,0 +1,58 @@
+<!ELEMENT project (module, element, group)*>
+
+<!ELEMENT module (name, comment?, behaviour, modulename, import*)>
+
+<!ELEMENT group (name, location, comment?, behaviour, modulename, path)>
+
+
+<!ELEMENT element (name, location, comment?, behaviour, modulename, mpview_ModuleParDef?, path)>
+ <!ATTLIST element type CDATA #REQUIRED> 
+ 
+<!ELEMENT path (path_group)>
+<!ELEMENT path_group (path_group)>
+ <!ATTLIST path_group loc CDATA #REQUIRED name CDATA #REQUIRED>
+
+<!ELEMENT mpview_ModuleParDef((mpview_TestcaseDef | mpview_FunctionDef | mpview_AltstepDef)*)
+<!ELEMENT mpview_FunctionDef((mpview_TestcaseDef | mpview_FunctionDef | mpview_AltstepDef)*)
+<!ELEMENT mpview_TestcaseDef((mpview_TestcaseDef | mpview_FunctionDef | mpview_AltstepDef)*)
+<!ELEMENT mpview_AltstepDef((mpview_TestcaseDef | mpview_FunctionDef | mpview_AltstepDef)*)
+ <!ATTLIST mpview_ModuleParDef loc CDATA #REQUIRED name CDATA #REQUIRED>
+ <!ATTLIST mpview_FunctionDef loc CDATA #REQUIRED name CDATA #REQUIRED>
+ <!ATTLIST mpview_TestcaseDef loc CDATA #REQUIRED name CDATA #REQUIRED>
+ <!ATTLIST mpview_AltstepDef loc CDATA #REQUIRED name CDATA #REQUIRED>
+ 
+<!ELEMENT behaviour (#PCDATA | keyword | constructbody | link)*>
+<!ELEMENT constructbody (#PCDATA | keyword | link)*>
+ <!ATTLIST constructbody id CDATA #REQUIRED>
+<!ELEMENT keyword (#PCDATA)>
+
+<!ELEMENT link (#PCDATA)>
+ <!ATTLIST link loc CDATA #REQUIRED>
+
+<!ELEMENT newline EMPTY>
+<!ELEMENT tab EMPTY>
+
+<!ELEMENT name (#PCDATA)>
+<!ELEMENT location (#PCDATA)>
+<!ELEMENT file (#PCDATA)>
+
+<!ELEMENT comment (author | config | desc | exception | member | param | purpose | remark | return | see | since | status | url | verdict | version)*>
+
+<!ELEMENT author (#PCDATA | esee | eurl)*>
+<!ELEMENT config (#PCDATA | esee | eurl)*>
+<!ELEMENT desc (#PCDATA | esee | eurl)*>
+<!ELEMENT exception (#PCDATA | esee | eurl)*>
+<!ELEMENT purpose (#PCDATA | esee | eurl)*>
+<!ELEMENT param (#PCDATA | esee | eurl)*>
+<!ELEMENT remark (#PCDATA | esee | eurl)*>
+<!ELEMENT return (#PCDATA | esee | eurl)*>
+<!ELEMENT see (#PCDATA)>
+<!ELEMENT since (#PCDATA | esee | eurl)*>
+<!ELEMENT status (#PCDATA | esee | eurl)*>
+<!ELEMENT url (#PCDATA | esee | eurl)*>
+<!ELEMENT verdict (#PCDATA | esee | eurl)*>
+<!ELEMENT version (#PCDATA | esee | eurl)*>
+<!ELEMENT member (#PCDATA | esee | eurl)*>
+
+<!ELEMENT esee (#PCDATA)>
+<!ELEMENT eurl (#PCDATA)>
Index: /trunk/t3d/xsd/import.dtd
===================================================================
--- /trunk/t3d/xsd/import.dtd	(revision 7)
+++ /trunk/t3d/xsd/import.dtd	(revision 7)
@@ -0,0 +1,10 @@
+<!ELEMENT imports module*>
+
+<!ELEMENT module import*>
+
+<!ELEMENT import (import_behaviour, import*) | EMPTY>
+ <!ATTLIST import name CDATA #REQUIRED>
+<!ELEMENT import_behaviour (#PCDATA | link)*>
+
+<!ELEMENT link (#PCDATA)>
+ <!ATTLIST link loc CDATA #REQUIRED>
Index: /trunk/t3d/xsd/log.dtd
===================================================================
--- /trunk/t3d/xsd/log.dtd	(revision 7)
+++ /trunk/t3d/xsd/log.dtd	(revision 7)
@@ -0,0 +1,13 @@
+<!ELEMENT t3dlog file*>
+ <!ATTLIST t3dlog t3dversion CDATA #REQUIRED>
+ 
+<!ELEMENT file (warning | error )*>
+ <!ATTLIST file path CDATA #REQUIRED>
+ 
+<!ELEMENT warning #PCDATA>
+ <!ATTLIST warning level CDATA #REQUIRED
+                   lines CDATA #REQUIRED>
+                   
+<!ELEMENT error #PCDATA>
+ <!ATTLIST error level CDATA #REQUIRED
+                   lines CDATA #REQUIRED>
Index: /trunk/t3d/xsd/project_schema.xsd
===================================================================
--- /trunk/t3d/xsd/project_schema.xsd	(revision 7)
+++ /trunk/t3d/xsd/project_schema.xsd	(revision 7)
@@ -0,0 +1,210 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:element name="author">
+    <xs:complexType mixed="true">
+      <xs:choice>
+        <xs:element ref="esee" />
+        <xs:element ref="eurl" />
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="behaviour">
+    <xs:complexType mixed="true">
+      <xs:choice>
+        <xs:element ref="newline" />
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="sign">
+    <xs:complexType mixed="true" />
+  </xs:element>
+  <xs:element name="comment">
+    <xs:complexType>
+      <xs:choice>
+        <xs:element ref="author" />
+        <xs:element ref="config" />
+        <xs:element ref="desc" />
+        <xs:element ref="exception" />
+        <xs:element ref="member" />
+        <xs:element ref="param" />
+        <xs:element ref="purpose" />
+        <xs:element ref="remark" />
+        <xs:element ref="return" />
+        <xs:element ref="see" />
+        <xs:element ref="since" />
+        <xs:element ref="status" />
+        <xs:element ref="url" />
+        <xs:element ref="verdict" />
+        <xs:element ref="version" />
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="config">
+    <xs:complexType mixed="true">
+      <xs:choice>
+        <xs:element ref="esee" />
+        <xs:element ref="eurl" />
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="desc">
+    <xs:complexType mixed="true">
+      <xs:choice>
+        <xs:element ref="esee" />
+        <xs:element ref="eurl" />
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="element">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="name" />
+        <xs:element ref="location" />
+        <xs:element ref="comment" minOccurs="0" />
+        <xs:element ref="behaviour" />
+        <xs:element ref="sign" />
+      </xs:sequence>
+      <xs:attribute name="type" type="xs:string" use="required" />
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="esee">
+    <xs:complexType mixed="true" />
+  </xs:element>
+  <xs:element name="eurl">
+    <xs:complexType mixed="true" />
+  </xs:element>
+  <xs:element name="exception">
+    <xs:complexType mixed="true">
+      <xs:choice>
+        <xs:element ref="esee" />
+        <xs:element ref="eurl" />
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="file">
+    <xs:complexType mixed="true" />
+  </xs:element>
+  <xs:element name="group">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="name" />
+        <xs:element ref="location" />
+        <xs:element ref="comment" minOccurs="0" />
+        <xs:choice>
+          <xs:element ref="group" />
+          <xs:element ref="element" />
+        </xs:choice>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="location">
+    <xs:complexType mixed="true" />
+  </xs:element>
+  <xs:element name="member">
+    <xs:complexType mixed="true">
+      <xs:choice>
+        <xs:element ref="esee" />
+        <xs:element ref="eurl" />
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="module">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="name" />
+        <xs:element ref="comment" minOccurs="0" />
+        <xs:choice>
+          <xs:element ref="group" />
+          <xs:element ref="element" />
+        </xs:choice>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="name">
+    <xs:complexType mixed="true" />
+  </xs:element>
+  <xs:element name="newline" type="xs:string" />
+  <xs:element name="param">
+    <xs:complexType mixed="true">
+      <xs:choice>
+        <xs:element ref="esee" />
+        <xs:element ref="eurl" />
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="project">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="file" minOccurs="0" maxOccurs="unbounded" />
+        <xs:element ref="module" minOccurs="0" maxOccurs="unbounded" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="purpose">
+    <xs:complexType mixed="true">
+      <xs:choice>
+        <xs:element ref="esee" />
+        <xs:element ref="eurl" />
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="remark">
+    <xs:complexType mixed="true">
+      <xs:choice>
+        <xs:element ref="esee" />
+        <xs:element ref="eurl" />
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="return">
+    <xs:complexType mixed="true">
+      <xs:choice>
+        <xs:element ref="esee" />
+        <xs:element ref="eurl" />
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="see">
+    <xs:complexType mixed="true" />
+  </xs:element>
+  <xs:element name="since">
+    <xs:complexType mixed="true">
+      <xs:choice>
+        <xs:element ref="esee" />
+        <xs:element ref="eurl" />
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="status">
+    <xs:complexType mixed="true">
+      <xs:choice>
+        <xs:element ref="esee" />
+        <xs:element ref="eurl" />
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="url">
+    <xs:complexType mixed="true">
+      <xs:choice>
+        <xs:element ref="esee" />
+        <xs:element ref="eurl" />
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="verdict">
+    <xs:complexType mixed="true">
+      <xs:choice>
+        <xs:element ref="esee" />
+        <xs:element ref="eurl" />
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="version">
+    <xs:complexType mixed="true">
+      <xs:choice>
+        <xs:element ref="esee" />
+        <xs:element ref="eurl" />
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+</xs:schema>
Index: /trunk/t3d/xslt/dependencies.xsl
===================================================================
--- /trunk/t3d/xslt/dependencies.xsl	(revision 7)
+++ /trunk/t3d/xslt/dependencies.xsl	(revision 7)
@@ -0,0 +1,49 @@
+<?xml version="1.0"?>
+<xsl:stylesheet version="1.0"
+xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<xsl:template match="/">
+ <xsl:param name="modulenames" select="//element[not(@module = preceding-sibling::*/@module)]/@module"/>
+  <html>
+  <head>
+  </head>
+  <body>
+
+   <xsl:for-each select="$modulenames">
+    <xsl:call-template name="module">
+     <xsl:with-param name="modulename" select="."/>
+    </xsl:call-template>
+   </xsl:for-each>
+
+  </body>
+  </html>
+</xsl:template>
+
+
+<xsl:template name="module">
+ <xsl:param name="modulename"/>
+ <p><xsl:value-of select="."/></p>
+ <xsl:apply-templates select="//element[@module = $modulename]"/>
+</xsl:template>
+
+<xsl:template match="element">
+ <p><a name="{@id}"><xsl:value-of select="@name"/></a></p>
+ <xsl:apply-templates select="reflist"/>
+</xsl:template>
+
+
+<xsl:template match="reflist">
+ <xsl:apply-templates select="ref"/>
+</xsl:template>
+
+<xsl:template match="ref">
+ <xsl:param name="id" select="@id"/>
+ <xsl:param name="ref" select="//element[@id = $id]"/>
+
+ <p><xsl:value-of select="'->'"/><a href="{concat('#', $id)}"><xsl:value-of select="$ref/@name"/></a></p>
+ 
+
+</xsl:template>
+
+
+</xsl:stylesheet>
Index: /trunk/t3d/xslt/html.xsl
===================================================================
--- /trunk/t3d/xslt/html.xsl	(revision 7)
+++ /trunk/t3d/xslt/html.xsl	(revision 7)
@@ -0,0 +1,991 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="2.0">
+<xsl:output method="xhtml" indent="yes" name="html" doctype-public="-//W3C//DTD XHTML 1.1//EN" doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"/>
+
+<xsl:param name="folder"/>
+<xsl:param name="includeconstructbodies"/>
+<xsl:param name="hideconstructbodies"/>
+<xsl:param name="showOriginalT3DocTags"/>
+<xsl:template match="/">
+
+<!-- main view index page -->
+ <xsl:variable name="filename" select="concat('file:///', $folder, '/html/index.html')"/>
+ <xsl:value-of select="$filename"/>
+ <xsl:result-document href="{$filename}" format="html">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+ <xsl:call-template name="html_head">
+  <xsl:with-param name="title" select="'Main Index'"/>
+ </xsl:call-template>  
+ <body onload="init(); toggleConstructbodies('{$hideconstructbodies}');">
+  <xsl:call-template name="views"/>
+  <xsl:call-template name="main_index">
+   <xsl:with-param name="modulename" select="'_T3D_FullIndex_'"/>
+  </xsl:call-template>
+  <p id="p_header">Index</p>
+  <div id="div_content">
+   <div id="div_statistics">
+    <table id="table_statistics">
+     <tr>
+      <th>Module</th>
+      <th>Documentation Files</th>     
+      <th>Documentation Tags</th>       
+     </tr>
+     <xsl:for-each select="//module">
+      <xsl:sort select="name/text()"/>
+      <xsl:variable name="modulename" select="name/text()"/>
+      <tr>
+       <td class="td_table_statistics_modules"><a href="{concat(name/text(), '.html')}"><xsl:value-of select="name/text()"/></a></td>
+       <td>
+        <xsl:value-of select="count(//element[modulename/text() eq $modulename] | //group[modulename/text() eq $modulename]) + count(//element[modulename/text() eq $modulename and (@type eq 'Testcase' or @type eq 'Module Parameter')]) + 3"/>
+       </td>
+       <td>
+        <xsl:value-of select="count((. | //element[modulename/text() eq $modulename] | //group[modulename/text() eq $modulename])/comment/(author | config | desc | exception | member | param | purpose | remark | return | see | since | status | url | verdict | version))"/>
+       </td>       
+      </tr>       
+     </xsl:for-each>
+    </table>    
+   </div>
+  </div>
+ </body>
+</html>
+ </xsl:result-document> 
+ 
+<!-- import view index page --> 
+ <xsl:variable name="filename_import" select="concat('file:///', $folder, '/html/import_index.html')"/>
+ <xsl:value-of select="$filename_import"/>
+ <xsl:result-document href="{$filename_import}" format="html">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+ <xsl:call-template name="html_head">
+  <xsl:with-param name="title" select="'Import View'"/>
+ </xsl:call-template>
+ <body onload="init();">
+  <xsl:call-template name="views">
+   <xsl:with-param name="togglemode" select="'import'"/>
+  </xsl:call-template>
+  <xsl:call-template name="index_modulelist">
+   <xsl:with-param name="prefix" select="'import_'"/>
+  </xsl:call-template>
+  <p id="p_header">Import  View</p> 
+  <div id="div_content">
+   <div id="div_import">
+    <table id="table_import">
+     <tr>
+      <th><span class="imports">imports</span></th><th>Modules</th><th><span class="importedby">imported by</span></th>
+     </tr>
+     <tr>
+      <td>
+      </td>
+      <td id="table_import_modules">
+       <xsl:for-each select="//module">
+        <xsl:sort select="name/text()"/>
+        <p>
+          <a href="{concat('import_',./name/text(), '.html')}"><xsl:value-of select="./name/text()"/></a>
+        </p>
+       </xsl:for-each>
+      </td>
+      <td>
+      </td>
+     </tr>
+    </table>
+   </div>
+  </div>
+ </body>
+</html>
+ </xsl:result-document>
+
+<!-- module parameter view index page -->  
+ <xsl:variable name="filename_mp" select="concat('file:///', $folder, '/html/mp_index.html')"/>
+ <xsl:value-of select="$filename_mp"/>
+ <xsl:result-document href="{$filename_mp}" format="html">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+ <xsl:call-template name="html_head">
+  <xsl:with-param name="title" select="'Module Parameter/Testcase View Index'"/>
+ </xsl:call-template>
+ <body onload="mp_init()">
+  <xsl:call-template name="views">
+   <xsl:with-param name="togglemode" select="'mp'"/>
+  </xsl:call-template>
+  <xsl:call-template name="mp_index">
+   <xsl:with-param name="modulename" select="'_T3D_FullIndex_'"/>
+  </xsl:call-template>
+  <p id="p_header">Module Parameter/Testcase View</p> 
+  <div id="div_content">
+   <xsl:call-template name="mp_allTables">
+    <xsl:with-param name="parameters" select="//mpview_ModuleParDef"/>
+    <xsl:with-param name="testcases" select="//element[@type eq 'Testcase']"/>
+   </xsl:call-template>
+  </div>
+ </body>
+</html>
+ </xsl:result-document>
+<!-- /index -->
+<!-- module -->
+<xsl:for-each select="//module">
+ <xsl:variable name="currentmodule" select="name/text()"/>
+ <xsl:variable name="currentindex">
+  <xsl:call-template name="main_index">
+   <xsl:with-param name="modulename" select="$currentmodule"/>
+  </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="currentmp_index">
+  <xsl:call-template name="mp_index">
+   <xsl:with-param name="modulename" select="$currentmodule"/>
+  </xsl:call-template>
+ </xsl:variable>
+ 
+ <xsl:variable name="filename" select="concat('file:///', $folder, '/html/', name/text(), '.html')"/>
+ <xsl:value-of select="$filename"/>
+ <xsl:result-document href="{$filename}" format="html">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+ <xsl:call-template name="html_head">
+  <xsl:with-param name="title" select="name/text()"/>
+ </xsl:call-template>  
+ <body onload="init('module'); toggleConstructbodies('{$hideconstructbodies}');">   
+  <xsl:call-template name="main_allElements">
+   <xsl:with-param name="this" select="."/>
+   <xsl:with-param name="currentindex" select="$currentindex"/>
+  </xsl:call-template>
+ </body>
+</html>
+</xsl:result-document>
+<!-- /module -->
+<!-- module mp_view -->
+ <xsl:variable name="filename" select="concat('file:///', $folder, '/html/mp_', name/text(), '.html')"/>
+ <xsl:value-of select="$filename"/>
+ <xsl:result-document href="{$filename}" format="html">
+  <xsl:variable name="modulename" select="name/text()"/>
+  
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+ <xsl:call-template name="html_head">
+  <xsl:with-param name="title" select="concat($modulename, ' - Module Parameter/Testcase View')"/>
+ </xsl:call-template>
+ <body onload="mp_init('module')">    
+  <xsl:call-template name="views">
+   <xsl:with-param name="main" select="concat($modulename, '.html')"/>
+   <xsl:with-param name="mp" select="concat($modulename, '.html')"/>
+   <xsl:with-param name="import" select="concat($modulename, '.html')"/>
+   <xsl:with-param name="togglemode" select="'mp'"/>
+  </xsl:call-template>    
+  <xsl:copy-of select="$currentmp_index"/>
+  <p id="p_header"><a href="mp_index.html">Index</a><xsl:value-of select="' / '"/><xsl:value-of select="$modulename"/> - Module Parameter/Testcase View</p> 
+  <div id="div_content">
+   <xsl:call-template name="mp_allTables">
+    <xsl:with-param name="parameters" select="//element[modulename/text() eq $modulename and @type eq 'parameter']//mpview_ModuleParDef"/>
+    <xsl:with-param name="testcases" select="//element[modulename/text() eq $modulename and @type eq 'Testcase']"/>
+   </xsl:call-template>
+  </div>
+ </body>
+</html>
+ </xsl:result-document>  
+<!-- /module mp_view -->
+
+
+<!-- element -->
+
+ <xsl:for-each select="//element[modulename/text() eq $currentmodule]">
+  <xsl:variable name="filename" select="concat('file:///', $folder, '/html/', location/text())"/>
+  <xsl:value-of select="$filename"/>
+   <xsl:result-document href="{$filename}" format="html">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+ <xsl:call-template name="html_head">
+  <xsl:with-param name="title" select="name/text()"/>
+ </xsl:call-template>  
+ 
+ <body onload="init('{@type}'); toggleConstructbodies('{$hideconstructbodies}');">
+  <xsl:call-template name="main_allElements">
+   <xsl:with-param name="this" select="."/>
+   <xsl:with-param name="currentindex" select="$currentindex"/>
+  </xsl:call-template>
+ </body>
+</html>
+  </xsl:result-document>
+<!-- /element -->
+<!-- element TC -->
+<xsl:if test="@type eq 'Testcase'">
+ <xsl:variable name="filename" select="concat('file:///', $folder, '/html/mp_', location/text())"/>
+  <xsl:value-of select="$filename"/>
+   <xsl:result-document href="{$filename}" format="html">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+ <xsl:call-template name="html_head">
+  <xsl:with-param name="title" select="name/text()"/>
+ </xsl:call-template>  
+ <body onload="mp_init('Testcase')">  
+  <xsl:call-template name="views">
+   <xsl:with-param name="main" select="location/text()"/>
+   <xsl:with-param name="mp" select="location/text()"/>
+   <xsl:with-param name="togglemode" select="'mp'"/>
+  </xsl:call-template>
+  <xsl:copy-of select="$currentmp_index"/>
+  <p id="p_header">
+   <a href="mp_index.html">Index</a> / <a href="{concat('mp_', modulename/text(), '.html')}"><xsl:value-of select="modulename/text()"/></a>
+   <xsl:if test="path/path_group">
+    <xsl:call-template name="path">
+     <xsl:with-param name="this" select="path"/>
+     <xsl:with-param name="prefix" select="'mp_'"/>
+    </xsl:call-template>
+   </xsl:if>
+   <xsl:value-of select="' / '"/> <a href="{location/text()}"><xsl:value-of select="name/text()"/></a>
+    - Module Parameter/Testcase View
+  </p>     
+  <div id="div_content">
+   <div id="div_mp">
+    <xsl:call-template name="mp_testcase_table">
+     <xsl:with-param name="this" select="."/>
+    </xsl:call-template>
+   </div>
+  </div>
+ </body>
+</html>
+ </xsl:result-document>
+</xsl:if>
+
+<xsl:if test="@type eq 'Module Parameter'">
+ <xsl:variable name="filename" select="concat('file:///', $folder, '/html/mp_', location/text())"/>
+ <xsl:value-of select="$filename"/>
+ <xsl:result-document href="{$filename}" format="html">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+ <xsl:call-template name="html_head">
+  <xsl:with-param name="title" select="name/text()"/>
+ </xsl:call-template>  
+ <body onload="mp_init('Module Parameter')">
+  <xsl:call-template name="views">
+   <xsl:with-param name="main" select="location/text()"/>
+   <xsl:with-param name="mp" select="location/text()"/>
+   <xsl:with-param name="togglemode" select="'mp'"/>
+  </xsl:call-template>
+  <xsl:copy-of select="$currentmp_index"/>
+  <p id="p_header">
+   <a href="mp_index.html">Index</a> / <a href="{concat('mp_', modulename/text(), '.html')}"><xsl:value-of select="modulename/text()"/></a>
+   <xsl:if test="path/path_group">
+    <xsl:call-template name="path">
+     <xsl:with-param name="this" select="path"/>
+     <xsl:with-param name="prefix" select="'mp_'"/>
+    </xsl:call-template>
+   </xsl:if>
+   <xsl:value-of select="' / '"/> <a href="{location/text()}"><xsl:value-of select="name/text()"/></a>
+    - Module Parameter/Testcase View
+  </p>
+  <div id="div_content">
+   <div id="div_mp">
+    <xsl:apply-templates select=".//mpview_ModuleParDef"/>
+   </div>
+  </div>
+ </body>
+</html>
+ </xsl:result-document>
+</xsl:if>
+ </xsl:for-each>
+<!-- /element TC -->
+ </xsl:for-each>
+<!-- groups -->
+ <xsl:for-each select="//group">
+  <xsl:variable name="grouplocation" select="location/text()"/>
+  <xsl:variable name="group" select="."/>
+  <xsl:variable name="filename" select="concat('file:///', $folder, '/html/', location/text())"/>
+  <xsl:value-of select="$filename"/>
+  <xsl:result-document href="{$filename}" format="html">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+ <xsl:call-template name="html_head">
+  <xsl:with-param name="title" select="name/text()"/>
+ </xsl:call-template>
+ <body onload="init('Group'); toggleConstructbodies('{$hideconstructbodies}');">
+  <xsl:call-template name="views">
+   <xsl:with-param name="main" select="./location/text()"/>
+   <xsl:with-param name="mp" select="./location/text()"/>
+  </xsl:call-template>
+  <xsl:call-template name="main_groupindex">
+   <xsl:with-param name="grouplocation" select="$grouplocation"/>
+  </xsl:call-template>
+  <xsl:call-template name="header">
+   <xsl:with-param name="this" select="."/>
+  </xsl:call-template>        
+  <xsl:call-template name="element_withcomment">
+   <xsl:with-param name="this" select="."/>
+  </xsl:call-template>
+ </body>
+</html>
+  </xsl:result-document>
+  
+  <xsl:variable name="filename" select="concat('file:///', $folder, '/html/mp_', location/text())"/>
+  <xsl:value-of select="$filename"/>
+   <xsl:result-document href="{$filename}" format="html">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+ <xsl:call-template name="html_head">
+  <xsl:with-param name="title" select="name/text()"/>
+ </xsl:call-template>
+ <body onload="mp_init('Group')">
+  <xsl:call-template name="views">
+   <xsl:with-param name="main" select="./location/text()"/>
+   <xsl:with-param name="mp" select="./location/text()"/>
+   <xsl:with-param name="togglemode" select="'mp'"/>
+  </xsl:call-template>
+  <xsl:call-template name="index_modulelist"/>
+  <div id="div_index">
+   <xsl:call-template name="index_grouplist">
+    <xsl:with-param name="this" select="//group[.//path_group[@loc eq $grouplocation]]"/>
+    <xsl:with-param name="prefix" select="'mp_'"/>
+   </xsl:call-template>
+
+   <xsl:call-template name="index_elementlist">
+    <xsl:with-param name="this" select="//element[@type eq 'Module Parameter' and .//path_group[@loc eq $grouplocation]]"/>
+    <xsl:with-param name="type" select="'Module Parameter'"/>
+    <xsl:with-param name="prefix" select="'mp_'"/>
+   </xsl:call-template>
+   
+   <xsl:call-template name="index_elementlist">
+    <xsl:with-param name="this" select="//element[@type eq 'Testcase' and .//path_group[@loc eq $grouplocation]]"/>
+    <xsl:with-param name="type" select="'Testcase'"/>
+    <xsl:with-param name="prefix" select="'mp_'"/>
+   </xsl:call-template>
+  </div>
+  <xsl:call-template name="header">
+   <xsl:with-param name="this" select="."/>
+   <xsl:with-param name="prefix" select="'mp_'"/>
+  </xsl:call-template>     
+  <div id="div_content">
+   <xsl:call-template name="mp_allTables">
+    <xsl:with-param name="parameters" select="//element[modulename/text() eq $group/modulename/text() and @type eq 'parameter' and .//path_group[@loc eq $group/location/text()]]//mpview_ModuleParDef"/>
+    <xsl:with-param name="testcases" select="//element[modulename/text() eq $group/modulename/text() and @type eq 'Testcase' and .//path_group[@loc eq $group/location/text()]]"/>
+   </xsl:call-template>
+  </div>  
+ </body>
+</html>
+  </xsl:result-document>
+ </xsl:for-each>
+<!-- /groups -->
+</xsl:template>
+
+<xsl:template name="main_allElements">
+<xsl:param name="this"/>
+<xsl:param name="currentindex"/>
+ <xsl:choose>
+  <xsl:when test="not($this/@type)">
+   <xsl:call-template name="views">
+    <xsl:with-param name="main" select="concat($this/name/text(), '.html')"/>
+    <xsl:with-param name="mp" select="concat($this/name/text(), '.html')"/>
+    <xsl:with-param name="import" select="concat($this/name/text(), '.html')"/>
+   </xsl:call-template>  
+  </xsl:when>
+  <xsl:when test="$this/@type eq 'Testcase' or $this/@type eq 'Module Parameter'">
+   <xsl:call-template name="views">
+    <xsl:with-param name="main" select="$this/location/text()"/>
+    <xsl:with-param name="mp" select="$this/location/text()"/>
+   </xsl:call-template> 
+  </xsl:when>
+  <xsl:otherwise>
+   <xsl:call-template name="views">
+    <xsl:with-param name="main" select="$this/location/text()"/>
+   </xsl:call-template> 
+  </xsl:otherwise>
+ </xsl:choose>
+ <xsl:copy-of select="$currentindex"/>
+ <xsl:call-template name="header">
+  <xsl:with-param name="this" select="$this"/>
+ </xsl:call-template>        
+ <xsl:call-template name="element_withcomment">
+  <xsl:with-param name="this" select="$this"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="mp_allTables">
+ <xsl:param name="testcases"/>
+ <xsl:param name="parameters"/>
+ <div id="div_mp">
+  <p class="bold"><a href="#mpview_parameters">Module Parameters</a> <a onclick="toggle('mpview_parameters')"> (toggle)</a></p>
+  <p class="bold"><a href="#mpview_testcases">Testcases</a> <a onclick="toggle('mpview_testcases')"> (toggle)</a></p>
+  <span id="mpview_parameters">
+   <p class="bold">Module Parameters:<a name="mpview_parameters"/></p>     
+   <xsl:for-each select="$parameters">
+    <p>
+     <a href="{concat('mp_', @loc)}" id="{@name}"><xsl:value-of select="@name"/></a>
+    </p>
+    <xsl:apply-templates select="."/>
+   </xsl:for-each>     
+  </span>
+  <span id="mpview_testcases">
+   <p class="bold">Testcases:<a name="mpview_testcases"/></p>
+   <xsl:for-each select="$testcases">      
+    <p><a href="mp_{./location/text()}"><xsl:value-of select="./name/text()"/></a></p>      
+    <xsl:call-template name="mp_testcase_table">
+     <xsl:with-param name="this" select="."/>
+    </xsl:call-template>
+   </xsl:for-each>
+  </span>
+ </div>
+</xsl:template>
+
+<xsl:template name="html_head">
+<xsl:param name="title"/>
+ <head>
+  <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
+  <link rel="stylesheet" type="text/css" href="css/doc.css"/>
+   <xsl:choose>
+    <xsl:when test="$showOriginalT3DocTags eq 'true'">
+     <style type="text/css">
+       .span_tagtype{
+       	display:none;
+      }
+     </style>   
+    </xsl:when>
+    <xsl:otherwise>
+     <style type="text/css">
+      .span_tagtypeOrig{
+       	display:none;
+      }
+     </style>   
+    </xsl:otherwise>
+   </xsl:choose>
+  <script type="text/javascript" src="js/doc.js"></script>
+  <script type="text/javascript" src="js/index.js"></script>
+  <title><xsl:value-of select="$title"/></title>
+ </head>
+</xsl:template>
+
+<xsl:template name="views">
+ <xsl:param name="main"/>
+ <xsl:param name="mp"/>
+ <xsl:param name="import"/>
+ <xsl:param name="togglemode"/>
+ <div id="div_views">
+  <p id="p_views">
+   <xsl:choose>
+    <xsl:when test="$main">
+	 <a href="{$main}">Main View</a> <br/>
+	</xsl:when>
+	<xsl:otherwise>
+	 <a href="index.html">Main View</a> <br/>
+	</xsl:otherwise>
+   </xsl:choose>
+   <xsl:choose>
+    <xsl:when test="$mp">
+	 <a href="{concat('mp_', $mp)}">Module Parameter/Testcase View</a> <br/>
+	</xsl:when>
+    <xsl:otherwise>
+	 <a href="mp_index.html">Module Parameter/Testcase View</a> <br/>
+    </xsl:otherwise>
+   </xsl:choose>	 
+   <xsl:choose>
+    <xsl:when test="$import">
+	 <a href="{concat('import_', $import)}">Import  View</a> <br/>
+	</xsl:when>
+	<xsl:otherwise>
+     <a href="import_index.html">Import  View</a> <br/>
+    </xsl:otherwise>
+   </xsl:choose>
+   <xsl:choose>
+	<xsl:when test="$togglemode eq 'mp'">
+	 <br/>
+	 <a href="#" onclick="togglePaths('true')">toggle paths</a>
+	</xsl:when>
+	<xsl:when test="$togglemode eq 'import'">
+	</xsl:when>
+	<xsl:otherwise>
+	 <xsl:if test="$includeconstructbodies eq 'true'">
+	  <br/>
+	  <a href="#" onclick="toggleHideNotes()">show/hide (toggle) notes</a> | <a href="#" onclick="toggleConstructbodies('true')">toggle all</a>
+     </xsl:if>  
+    </xsl:otherwise>
+   </xsl:choose>
+  </p>
+ </div>
+ <p id="p_t3dversion">T3D <xsl:value-of select="/project/@t3dversion"/>
+  <br/>Generated <xsl:value-of select="concat(substring-before(string(current-date()), '+'), ' - ', substring-before(string(current-time()), '.'))"/></p>
+</xsl:template>
+
+<xsl:template name="main_index">
+ <xsl:param name="modulename"/>  
+ <xsl:call-template name="index_modulelist"/>
+ <div id="div_index">
+  <xsl:call-template name="index_grouplist">
+   <xsl:with-param name="this" select="//group[$modulename eq modulename/text() or $modulename eq '_T3D_FullIndex_']"/>
+  </xsl:call-template>
+  <xsl:call-template name="index_elementlist">
+   <xsl:with-param name="this" select="//element[@type eq 'Module Parameter' and ($modulename eq modulename/text() or $modulename eq '_T3D_FullIndex_')]"/>
+   <xsl:with-param name="type" select="'Module Parameter'"/>
+  </xsl:call-template>
+  <xsl:call-template name="index_elementlist">
+   <xsl:with-param name="this" select="//element[@type eq 'Constant' and ($modulename eq modulename/text() or $modulename eq '_T3D_FullIndex_')]"/>
+   <xsl:with-param name="type" select="'Constant'"/>
+  </xsl:call-template>
+  <xsl:call-template name="index_elementlist">
+   <xsl:with-param name="this" select="//element[@type eq 'Type' and ($modulename eq modulename/text() or $modulename eq '_T3D_FullIndex_')]"/>
+   <xsl:with-param name="type" select="'Type'"/>
+  </xsl:call-template>
+  <xsl:call-template name="index_elementlist">
+   <xsl:with-param name="this" select="//element[@type eq 'Signature' and ($modulename eq modulename/text() or $modulename eq '_T3D_FullIndex_')]"/>
+   <xsl:with-param name="type" select="'Signature'"/>
+  </xsl:call-template>
+  <xsl:call-template name="index_elementlist">
+   <xsl:with-param name="this" select="//element[@type eq 'Template' and ($modulename eq modulename/text() or $modulename eq '_T3D_FullIndex_')]"/>
+   <xsl:with-param name="type" select="'Template'"/>
+  </xsl:call-template>
+  <xsl:call-template name="index_elementlist">
+   <xsl:with-param name="this" select="//element[@type eq 'Function' and ($modulename eq modulename/text() or $modulename eq '_T3D_FullIndex_')]"/>
+   <xsl:with-param name="type" select="'Function'"/>
+  </xsl:call-template>
+  <xsl:call-template name="index_elementlist">
+   <xsl:with-param name="this" select="//element[@type eq 'Altstep' and ($modulename eq modulename/text() or $modulename eq '_T3D_FullIndex_')]"/>
+   <xsl:with-param name="type" select="'Altstep'"/>
+  </xsl:call-template>
+  <xsl:call-template name="index_elementlist">
+   <xsl:with-param name="this" select="//element[@type eq 'Testcase' and ($modulename eq modulename/text() or $modulename eq '_T3D_FullIndex_')]"/>
+   <xsl:with-param name="type" select="'Testcase'"/>
+  </xsl:call-template>
+  <xsl:call-template name="index_elementlist">
+   <xsl:with-param name="this" select="//element[@type eq 'External Function' and ($modulename eq modulename/text() or $modulename eq '_T3D_FullIndex_')]"/>
+   <xsl:with-param name="type" select="'External Function'"/>
+  </xsl:call-template>
+  <xsl:call-template name="index_elementlist">
+   <xsl:with-param name="this" select="//element[@type eq 'External Constant' and ($modulename eq modulename/text() or $modulename eq '_T3D_FullIndex_')]"/>
+   <xsl:with-param name="type" select="'External Constant'"/>
+  </xsl:call-template>
+  
+ </div>
+</xsl:template>
+
+<xsl:template name="mp_index">
+ <xsl:param name="modulename"/>
+ <xsl:call-template name="index_modulelist">
+  <xsl:with-param name="prefix" select="'mp_'"/>
+ </xsl:call-template>
+ <div id="div_index">
+  <xsl:call-template name="index_grouplist">
+   <xsl:with-param name="this" select="//group[$modulename eq modulename/text() or $modulename eq '_T3D_FullIndex_']"/>
+  <xsl:with-param name="prefix" select="'mp_'"/>
+  </xsl:call-template>
+  <xsl:call-template name="index_elementlist">
+   <xsl:with-param name="this" select="//element[@type eq 'Module Parameter' and ($modulename eq modulename/text() or $modulename eq '_T3D_FullIndex_')]"/>
+   <xsl:with-param name="type" select="'Module Parameter'"/>
+  <xsl:with-param name="prefix" select="'mp_'"/>
+  </xsl:call-template>
+  <xsl:call-template name="index_elementlist">
+   <xsl:with-param name="this" select="//element[@type eq 'Testcase' and ($modulename eq modulename/text() or $modulename eq '_T3D_FullIndex_')]"/>
+   <xsl:with-param name="type" select="'Testcase'"/>
+  <xsl:with-param name="prefix" select="'mp_'"/>
+  </xsl:call-template>
+ </div>
+</xsl:template>
+
+<xsl:template name="index_modulelist">
+ <xsl:param name="prefix"/>
+ <div id="div_modules">
+ <p class="index_headline"><a href="{concat($prefix, 'index.html')}">Module Index</a>
+  <xsl:for-each select="//module">
+   <xsl:sort select="name/text()"/>
+   <br/><a class="padding_left_10px" href="{concat($prefix, name/text())}.html"><xsl:value-of select="name/text()"/></a>  
+  </xsl:for-each>
+ </p>
+ </div>
+</xsl:template>
+
+<xsl:template name="header">
+ <xsl:param name="this"/>
+ <xsl:param name="prefix"/>
+ <p id="p_header"><a href="{concat($prefix, 'index.html')}">Index</a><xsl:value-of select="' / '"/>
+ <xsl:if test="not($this/name/text() eq $this/modulename/text())"> 
+  <a href="{$prefix}{//module[name/text() eq $this/modulename/text()]/name/text()}.html"><xsl:value-of select="//module[name/text() eq $this/modulename/text()]/name/text()"/></a>
+ </xsl:if>
+ <xsl:if test="$this/path/path_group">
+    <xsl:call-template name="path">
+     <xsl:with-param name="this" select="$this/path"/>
+     <xsl:with-param name="prefix" select="$prefix"/>
+    </xsl:call-template>
+ </xsl:if>
+ 
+ <xsl:if test="not($this/name/text() eq $this/modulename/text())"><xsl:value-of select="' / '"/></xsl:if> <xsl:value-of select="$this/name/text()"/>
+ </p> 
+</xsl:template>
+
+<xsl:template name="element_withcomment">
+ <xsl:param name="this"/>
+ <div id="div_content">
+  <xsl:apply-templates select="comment"/>
+  <div id="div_element">
+   <xsl:apply-templates select="$this/behaviour"/>
+  </div>
+ </div>
+</xsl:template>
+
+<xsl:template name="path">
+ <xsl:param name="prefix"/>
+ <xsl:param name="this"/>
+  <xsl:for-each select="$this/path_group">
+   <xsl:call-template name="path_group">
+    <xsl:with-param name="this" select="."/>
+   <xsl:with-param name="prefix" select="$prefix"/>
+  </xsl:call-template>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template name="path_group">
+ <xsl:param name="prefix"/>
+ <xsl:param name="this"/>
+ <xsl:for-each select="$this/path_group">
+  <xsl:call-template name="path_group">
+   <xsl:with-param name="this" select="."/>
+   <xsl:with-param name="prefix" select="$prefix"/>
+  </xsl:call-template>
+ </xsl:for-each>
+ <xsl:value-of select="' / '"/>
+ <a href="{concat($prefix, @loc)}"><xsl:value-of select="@name"/></a>
+</xsl:template>
+
+
+<!-- comments -->
+
+<xsl:template match="comment">
+ <div id="div_comment">  
+ <xsl:if test="desc">
+  <p class="comment_headline"><span class="span_tagtype">Description:</span><span class="span_tagtypeOrig">@desc</span><br/>  
+   <xsl:apply-templates select="desc"/>
+  </p>
+ </xsl:if>  
+ <xsl:if test="author">
+  <p class="comment_headline"><span class="span_tagtype">Author(s):</span><span class="span_tagtypeOrig">@author</span><br/>  
+   <xsl:apply-templates select="author"/>
+  </p>
+ </xsl:if>
+ <xsl:if test="config">
+  <p class="comment_headline"><span class="span_tagtype">Config:</span><span class="span_tagtypeOrig">@config</span><br/>  
+   <xsl:apply-templates select="config"/>
+  </p>
+ </xsl:if>
+ <xsl:if test="exception">
+  <p class="comment_headline"><span class="span_tagtype">Exception(s):</span><span class="span_tagtypeOrig">@excepion</span><br/>  
+   <xsl:apply-templates select="exception"/>
+  </p>
+ </xsl:if>
+ <xsl:if test="member">
+  <p class="comment_headline"><span class="span_tagtype">Member(s):</span><span class="span_tagtypeOrig">@member</span><br/>  
+   <xsl:apply-templates select="member"/>
+  </p>
+ </xsl:if>
+ <xsl:if test="param">
+  <p class="comment_headline"><span class="span_tagtype">Parameter(s):</span><span class="span_tagtypeOrig">@param</span><br/>  
+   <xsl:apply-templates select="param"/>
+  </p>
+ </xsl:if>
+ <xsl:if test="purpose">
+  <p class="comment_headline"><span class="span_tagtype">Purpose:</span><span class="span_tagtypeOrig">@purpose</span><br/>  
+   <xsl:apply-templates select="purpose"/>
+  </p>
+ </xsl:if>
+ <xsl:if test="remark">
+  <p class="comment_headline"><span class="span_tagtype">Remark(s):</span><span class="span_tagtypeOrig">@remark</span><br/>  
+   <xsl:apply-templates select="remark"/>
+  </p>
+ </xsl:if>
+ <xsl:if test="return">
+  <p class="comment_headline"><span class="span_tagtype">Return:</span><span class="span_tagtypeOrig">@return</span><br/>  
+   <xsl:apply-templates select="return"/>
+  </p>
+ </xsl:if>
+ <xsl:if test="see">
+  <p class="comment_headline"><span class="span_tagtype">See:</span><span class="span_tagtypeOrig">@see</span><br/>  
+   <xsl:apply-templates select="see"/>
+  </p>
+ </xsl:if>
+ <xsl:if test="since">
+  <p class="comment_headline"><span class="span_tagtype">Since:</span><span class="span_tagtypeorig">@since</span><br/>  
+   <xsl:apply-templates select="since"/>
+  </p>
+ </xsl:if>
+ <xsl:if test="status">
+  <p class="comment_headline"><span class="span_tagtype">Status:</span><span class="span_tagtypeOrig">@status</span><br/>  
+   <xsl:apply-templates select="status"/>
+  </p>
+ </xsl:if>
+ <xsl:if test="url">
+  <p class="comment_headline"><span class="span_tagtype">Url(s):</span><span class="span_tagtypeOrig">@url</span><br/>  
+   <xsl:apply-templates select="url"/>
+  </p>
+ </xsl:if>
+ <xsl:if test="verdict">
+  <p class="comment_headline"><span class="span_tagtype">Verdict(s):</span><span class="span_tagtypeOrig">@verdict</span><br/>  
+   <xsl:apply-templates select="verdict"/>
+  </p>
+ </xsl:if>
+ <xsl:if test="version">
+  <p class="comment_headline"><span class="span_tagtype">Version:</span><span class="span_tagtypeOrig">@version</span><br/>  
+   <xsl:apply-templates select="version"/>
+  </p>
+ </xsl:if>
+ </div>
+</xsl:template>
+
+<xsl:template match="desc | author | return | remark | param | since | status | verdict | version | member | config | exception | purpose | since">
+ <xsl:apply-templates/>
+ <br/>
+</xsl:template>
+
+<xsl:template match="see | esee">
+ <xsl:variable name="text" select="normalize-space(text())" />
+ <xsl:variable name="modulename" select="''" />
+ 
+ <xsl:if test="self::esee">
+  <xsl:value-of select="'@see '"/>
+ </xsl:if>
+ <xsl:choose>
+  <xsl:when test="contains($text, '.')">  
+   <xsl:variable name="modulename" select="substring-before($text, '.')"/>
+   <xsl:variable name="elementname" select="substring-after($text, '.')"/>
+   <xsl:variable name="file" select="//element[name/text() eq $elementname and modulename/text() eq $modulename]"/>
+   <xsl:if test="$file">
+    <a href="{$file/location/text()}"><xsl:value-of select="$text"/></a>
+    <xsl:if test="self::see">
+     <br/>
+    </xsl:if>
+   </xsl:if>
+   <xsl:if test="not($file)">
+    <xsl:value-of select="$text"/>
+    <xsl:if test="self::see">
+     <br/>
+    </xsl:if>
+   </xsl:if>
+  </xsl:when>  
+  <xsl:otherwise>
+   <xsl:variable name="modulename" select="ancestor::module/name/text()"/>
+   <xsl:variable name="elementname" select="$text"/>
+   <xsl:variable name="file" select="//element[name/text() eq $elementname and modulename/text() eq $modulename]"/>
+   <xsl:if test="$file">
+    <a href="{$file/location/text()}"><xsl:value-of select="$text"/></a>
+    <xsl:if test="self::see">
+     <br/>
+    </xsl:if>
+   </xsl:if>
+   <xsl:if test="not($file)">
+    <xsl:value-of select="$text"/>
+    <xsl:if test="self::see">
+     <br/>
+    </xsl:if>
+   </xsl:if>
+  </xsl:otherwise> 
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="eurl">
+ <xsl:value-of select="' @url '"/><a href="{text()}"><xsl:value-of select="text()"/></a>
+ <xsl:value-of select="' '"/>
+</xsl:template>
+
+<xsl:template match="url">
+ <a href="{text()}"><xsl:value-of select="text()"/></a>
+</xsl:template>
+<!-- /comments -->
+<!-- behaviour -->
+
+<xsl:template match="behaviour">
+ <pre class="statement">
+  <xsl:apply-templates/>
+ </pre>
+</xsl:template>
+
+<xsl:template match="constructbody">
+ <span class="span_showhidenote"><a href="#" onclick="toggle('{@id}')">(toggle)</a> </span>
+ <span id="{@id}" class="span_constructbody"><xsl:apply-templates/></span>
+</xsl:template>
+
+<xsl:template match="keyword">
+ <span class="syntax"><xsl:value-of select="text()"/></span>
+</xsl:template>
+
+<xsl:template match="link">
+ <a href="{@loc}"><xsl:value-of select="replace(replace(text(), ' ', '&#160;'), '\t', '&#x9;')"/></a>
+</xsl:template>
+
+<!-- /behaviour -->
+
+<xsl:template name="mp_testcase_table">
+ <xsl:param name="this"/>
+ <xsl:param name="loc" select="$this/location/text()"/>
+    <table border="1">
+     <tr><th>Module Parameter</th><th class="td_path">Path</th></tr>
+     <xsl:if test="not(//mpview_TestcaseDef[@loc eq $loc])">
+      <tr><td>-</td><td>-</td></tr>
+     </xsl:if>
+     <xsl:for-each select="//mpview_TestcaseDef[@loc eq $loc]">
+      <tr><td>
+       <a href="{concat('mp_', ancestor::mpview_ModuleParDef/@loc)}"><xsl:value-of select="ancestor::mpview_ModuleParDef/@name"/></a>
+      </td>
+       <xsl:call-template name="mpview_path_testcase">
+        <xsl:with-param name="this" select="."/>
+        <xsl:with-param name="first" select="'true'"/>
+       </xsl:call-template>
+      </tr>
+     </xsl:for-each>
+    </table>
+</xsl:template>
+
+<xsl:template name="mpview_path_testcase">
+ <xsl:param name="this"/>
+ <xsl:param name="first"/> 
+ <xsl:choose>
+  <xsl:when test="$first eq 'true'">
+   <td class="td_path">
+    <xsl:value-of select="' &lt;&lt; '"/>
+    <xsl:if test="$this/parent::* and not($this/parent::element)">
+     <xsl:call-template name="mpview_path_testcase">
+      <xsl:with-param name="this" select="$this/parent::*"/>
+      <xsl:with-param name="first" select="'false'"/>
+     </xsl:call-template>
+    </xsl:if>
+    <xsl:value-of select="' &lt;&lt; '"/>
+    <a href="{$this/@loc}"><xsl:value-of select="$this/@name"/></a>
+   </td>
+  </xsl:when>
+  <xsl:when test="$this/parent::mpview_ModuleParDef">
+   <a href="{$this/@loc}"><xsl:value-of select="$this/@name"/></a>
+  </xsl:when>
+  <xsl:otherwise>
+   <xsl:if test="$this/parent::* and not($this/parent::element)">
+    <xsl:call-template name="mpview_path_testcase">
+     <xsl:with-param name="this" select="$this/parent::*"/>
+     <xsl:with-param name="first" select="'false'"/>
+    </xsl:call-template>
+   </xsl:if>
+   <xsl:value-of select="' &lt;&lt; '"/>
+   <a href="{$this/@loc}"><xsl:value-of select="$this/@name"/></a>
+  </xsl:otherwise>  
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="mpview_ModuleParDef">
+ <xsl:param name="loc" select="@loc"/>
+ <xsl:param name="name" select="//element[location/text() eq $loc]/name/text()"/>
+ <table border="1">
+  <tr>
+   <th>Testcase</th> <th class="td_path">Path</th>
+  </tr>
+  <xsl:if test="not(.//mpview_TestcaseDef)">
+   <tr><td>-</td><td class="td_path"></td></tr>
+  </xsl:if>
+  <xsl:for-each select=".//mpview_TestcaseDef">
+   <xsl:sort select="@name"/>
+   <tr>
+    <xsl:call-template name="mpview_path_modulepar">
+     <xsl:with-param name="this" select="."/>
+     <xsl:with-param name="first" select="'true'"/>
+    </xsl:call-template>
+   </tr>
+  </xsl:for-each>
+ </table>
+</xsl:template>
+
+<xsl:template name="mpview_path_modulepar">
+ <xsl:param name="this"/>
+ <xsl:param name="first"/> 
+ <xsl:choose>
+  <xsl:when test="$first eq 'true'">
+   <td>
+    <a href="{concat('mp_', $this/@loc)}"><xsl:value-of select="$this/@name"/></a>
+   </td>
+   <td class="td_path">
+    <xsl:if test="$this/parent::* and not($this/parent::element)">
+     <xsl:call-template name="mpview_path_modulepar">
+      <xsl:with-param name="this" select="$this/parent::*"/>
+      <xsl:with-param name="first" select="'false'"/>
+     </xsl:call-template>
+    </xsl:if>   
+   </td>
+  </xsl:when>
+  <xsl:otherwise>
+   <xsl:value-of select="' &gt;&gt; '"/>
+   <a href="{$this/@loc}"><xsl:value-of select="$this/@name"/></a>
+    <xsl:if test="$this/parent::* and not($this/parent::element)">
+    <xsl:call-template name="mpview_path_modulepar">
+     <xsl:with-param name="this" select="$this/parent::*"/>
+     <xsl:with-param name="first" select="'false'"/>
+    </xsl:call-template>
+   </xsl:if>
+  </xsl:otherwise>  
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="main_groupindex">
+ <xsl:param name="grouplocation"/>
+ <xsl:call-template name="index_modulelist"/>
+ <div id="div_index">
+  <xsl:call-template name="index_grouplist">
+   <xsl:with-param name="this" select="//group[.//path_group[@loc eq $grouplocation]]"/>
+  </xsl:call-template>
+  <xsl:call-template name="index_elementlist">
+   <xsl:with-param name="this" select="//element[@type eq 'Module Parameter' and .//path_group[@loc eq $grouplocation]]"/>
+   <xsl:with-param name="type" select="'Module Parameter'"/>
+  </xsl:call-template>
+  <xsl:call-template name="index_elementlist">
+   <xsl:with-param name="this" select="//element[@type eq 'Constant' and .//path_group[@loc eq $grouplocation]]"/>
+   <xsl:with-param name="type" select="'Constant'"/>
+  </xsl:call-template>
+  <xsl:call-template name="index_elementlist">
+   <xsl:with-param name="this" select="//element[@type eq 'Type' and .//path_group[@loc eq $grouplocation]]"/>
+   <xsl:with-param name="type" select="'Type'"/>
+  </xsl:call-template>
+  <xsl:call-template name="index_elementlist">
+   <xsl:with-param name="this" select="//element[@type eq 'Signature' and .//path_group[@loc eq $grouplocation]]"/>
+   <xsl:with-param name="type" select="'Signature'"/>
+  </xsl:call-template>
+  <xsl:call-template name="index_elementlist">
+   <xsl:with-param name="this" select="//element[@type eq 'Template' and .//path_group[@loc eq $grouplocation]]"/>
+   <xsl:with-param name="type" select="'Template'"/>
+  </xsl:call-template>
+  <xsl:call-template name="index_elementlist">
+   <xsl:with-param name="this" select="//element[@type eq 'Function' and .//path_group[@loc eq $grouplocation]]"/>
+   <xsl:with-param name="type" select="'Function'"/>
+  </xsl:call-template>
+  <xsl:call-template name="index_elementlist">
+   <xsl:with-param name="this" select="//element[@type eq 'Altstep' and .//path_group[@loc eq $grouplocation]]"/>
+   <xsl:with-param name="type" select="'Altstep'"/>
+  </xsl:call-template>
+  <xsl:call-template name="index_elementlist">
+   <xsl:with-param name="this" select="//element[@type eq 'Testcase' and .//path_group[@loc eq $grouplocation]]"/>
+   <xsl:with-param name="type" select="'Testcase'"/>
+  </xsl:call-template>
+  <xsl:call-template name="index_elementlist">
+   <xsl:with-param name="this" select="//element[@type eq 'External Function' and .//path_group[@loc eq $grouplocation]]"/>
+   <xsl:with-param name="type" select="'External Function'"/>
+  </xsl:call-template>
+  <xsl:call-template name="index_elementlist">
+   <xsl:with-param name="this" select="//element[@type eq 'External Constant' and .//path_group[@loc eq $grouplocation]]"/>
+   <xsl:with-param name="type" select="'External Constant'"/>
+  </xsl:call-template>
+ </div>
+</xsl:template>
+
+<xsl:template name="index_grouplist">
+ <xsl:param name="this"/>
+ <xsl:param name="prefix"/>
+  <p class="index_headline"><a href="#" onclick="toggle('span_groups')">Groups</a>
+   <span id="span_groups">
+    <xsl:if test="not($this)">
+     <br/><span class="padding_left_10px"><xsl:value-of select="'-'"/></span>
+    </xsl:if>
+    <xsl:for-each select="$this">
+     <xsl:sort select="name/text()"/>
+     <br/><a class="padding_left_10px" href="{concat($prefix, location/text())}"><xsl:value-of select="name/text()"/></a>
+    </xsl:for-each>
+   </span>
+  </p>
+</xsl:template>
+
+<xsl:template name="index_elementlist">
+ <xsl:param name="this"/>
+ <xsl:param name="type"/>
+ <xsl:param name="prefix"/>
+ <p class="index_headline"><a href="#" onclick="toggle('span_{lower-case($type)}s')"><xsl:value-of select="$type"/>s</a>
+ <span id="span_{lower-case($type)}s">
+  <xsl:if test="not($this)">
+   <br/><span class="padding_left_10px"><xsl:value-of select="'-'"/></span>
+  </xsl:if>
+  <xsl:for-each select="$this">
+  <xsl:sort select="name/text()"/>
+   <br/><a class="padding_left_10px" href="{concat($prefix, location/text())}"><xsl:value-of select="name/text()"/></a>
+  </xsl:for-each>
+ </span>
+ </p>
+</xsl:template>
+</xsl:stylesheet>
Index: /trunk/t3d/xslt/html_import.xsl
===================================================================
--- /trunk/t3d/xslt/html_import.xsl	(revision 7)
+++ /trunk/t3d/xslt/html_import.xsl	(revision 7)
@@ -0,0 +1,280 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="2.0">
+<xsl:output method="xhtml" indent="yes" name="html" doctype-public="-//W3C//DTD XHTML 1.1//EN" doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"/>
+
+<xsl:param name="folder"/>
+<xsl:param name="includeconstructbodies"/>
+<xsl:param name="hideconstructbodies"/>
+<xsl:param name="showOriginalT3DocTags"/>
+<!-- //TODO: add further parameters such as file names for scripts and such -->
+
+
+
+
+<xsl:template match="/">
+ <xsl:for-each select="//module">
+  <xsl:variable name="filename" select="concat('file:///', $folder, '/html/import_', @name, '.html')"/>
+  <xsl:value-of select="$filename"/>
+   <xsl:result-document href="{$filename}" format="html">   
+    <xsl:call-template name="import_module">
+     <xsl:with-param name="module" select="."/>
+    </xsl:call-template>
+  </xsl:result-document>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template name="import_module">
+<xsl:param name="module"/>
+<xsl:param name="modulename" select="$module/@name"/>
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+ <xsl:call-template name="html_head">
+  <xsl:with-param name="title" select="concat($modulename, ' - Import  View')"/>
+ </xsl:call-template>
+ <body>
+  <div id="div_views">
+	<p id="p_views">
+	 <a href="{concat($module/@name, '.html')}">Main View</a> <br/>
+	 <a href="{concat('mp_', $module/@name, '.html')}">Module Parameter/Testcase View</a> <br/>
+	 <a href="{concat('import_', $module/@name, '.html')}">Import  View</a> <br/>
+	 <br/>
+	 <a href="#" onclick="toggleImportDetails()">toggle import details</a>		
+	</p>
+  </div>
+  <p id="p_t3dversion">T3D <xsl:value-of select="/imports/@t3dversion"/><br/>Generated <xsl:value-of select="concat(substring-before(string(current-date()), '+'), ' - ', substring-before(string(current-time()), '.'))"/></p>
+  <div id="div_modules">
+   <p class="index_headline"><a href="import_index.html">Module Index</a>
+     <xsl:for-each select="//module">
+      <xsl:sort select="@name"/>
+      <br/><a class="padding_left_10px" href="{concat('import_', @name)}.html"><xsl:value-of select="@name"/></a>  
+     </xsl:for-each>
+   </p>
+  </div>
+  <xsl:call-template name="legend"/>
+  <p id="p_header"><a href="import_index.html">Index</a><xsl:value-of select="' / '"/><xsl:value-of select="$modulename"/> - Import  View</p> 
+  <div id="div_content">
+   <div id="div_import">
+   <table id="table_import">
+    <tr>
+     <th><span class="imports">imports</span></th><th>Modules</th><th><span class="importedby">imported by</span></th>
+    </tr>
+    <tr>
+     <td>
+      <xsl:for-each select="$module/import[not(@name = preceding-sibling::import/@name)]/@name">
+       <xsl:sort select="."/>
+       <xsl:call-template name="import">
+        <xsl:with-param name="module" select="$module"/>
+        <xsl:with-param name="importname" select="."/>
+       </xsl:call-template>
+      </xsl:for-each>      
+     <xsl:variable name="indirectimports" select="$module/import//import[not(@name = $module/import/@name) and not(@name = $module/@name)]"/>
+     <xsl:if test="$indirectimports">
+     <br/>Indirect dependencies:
+     </xsl:if>
+     <xsl:for-each select="$indirectimports[not(@name = preceding-sibling::*/@name)]/@name">
+      <xsl:sort select="."/>
+      <xsl:variable name="name" select="."/>
+      <br/>       
+      <xsl:choose>
+       <xsl:when test="//module[@name eq $name]">
+        <a class="padding_left_10px" href="{concat('import_', $name, '.html')}"><xsl:value-of select="$name"/></a>
+       </xsl:when>
+       <xsl:otherwise>
+        <span class="padding_left_10px"><xsl:value-of select="$name"/></span>
+       </xsl:otherwise>
+      </xsl:choose>
+     </xsl:for-each>
+     </td>
+     <td  id="table_import_modules">
+      <xsl:for-each select="//module">
+       <xsl:sort select="@name"/>
+       <p>
+        <xsl:call-template name="show_imports">
+         <xsl:with-param name="currentmodule" select="$module"/>   
+         <xsl:with-param name="module" select="."/>
+        </xsl:call-template>
+       </p>
+      </xsl:for-each>
+     </td>
+     <td>
+     <xsl:for-each select="//module">
+      <xsl:sort select="@name"/>
+      <xsl:if test="import[@name eq $module/@name]">
+       <a href="{concat('import_', @name, '.html')}"><xsl:value-of select="@name"/></a>
+        <xsl:call-template name="importby">
+         <xsl:with-param name="imports" select="./import[@name eq $module/@name]"/>
+        </xsl:call-template>
+      </xsl:if>
+     </xsl:for-each>
+     <xsl:variable name="indirectdependencies" select="//module[import//import[@name = $module/@name and not(@name = ancestor::module/import/@name)] and not(@name = $module/@name)]"/>
+     <xsl:if test="$indirectdependencies">
+     <br/>Indirect dependencies:
+     </xsl:if>
+     <xsl:for-each select="$indirectdependencies[not(@name = preceding-sibling::*/@name)]/@name">
+      <xsl:sort select="."/>
+      <xsl:variable name="name" select="."/>
+      <br/>       
+      <xsl:choose>
+       <xsl:when test="//module[@name eq $name]">
+        <a class="padding_left_10px" href="{concat('import_', $name, '.html')}"><xsl:value-of select="$name"/></a>
+       </xsl:when>
+       <xsl:otherwise>
+        <span class="padding_left_10px"><xsl:value-of select="$name"/></span>
+       </xsl:otherwise>
+      </xsl:choose>
+     </xsl:for-each>
+     </td>
+    </tr>
+   </table>
+  </div>
+  </div>
+ </body>
+</html>
+</xsl:template>
+
+<xsl:template name="import">
+ <xsl:param name="module"/>
+ <xsl:param name="importname"/> 
+ <xsl:if test="$module/import[@name eq $importname]">
+  <xsl:choose>
+   <xsl:when test="//module[@name = $importname]">
+    <a href="{concat('import_', ., '.html')}"><xsl:value-of select="concat(., @name)"/></a>
+   </xsl:when>
+   <xsl:otherwise>
+    <xsl:value-of select="concat(., @name)"/>
+   </xsl:otherwise>
+  </xsl:choose>
+  <table class="padding_left_10px">
+   <xsl:for-each select="$module/import[@name eq $importname]">
+     <tr>
+     <td>
+      <span class="span_importdetail">
+       <xsl:apply-templates select="import_behaviour"/><br/>
+      </span>
+     </td>
+    </tr>
+   </xsl:for-each>
+  </table>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="importby">
+ <xsl:param name="imports"/>
+ <xsl:if test="$imports">
+  <table class="padding_left_10px">
+   <xsl:for-each select="$imports">
+     <tr>
+     <td><span class="span_importdetail"><xsl:apply-templates select="import_behaviour"/></span></td>
+    </tr>
+   </xsl:for-each>
+  </table>
+ </xsl:if>
+</xsl:template>
+
+
+<xsl:template name="show_imports">
+ <xsl:param name="module"/>
+ <xsl:param name="currentmodule"/> 
+ <xsl:choose>
+  <xsl:when test="$currentmodule/@name eq $module/@name">
+   <xsl:call-template name="colored_module"> 
+    <xsl:with-param name="module" select="$module"/>
+    <xsl:with-param name="color" select="'selected'"/>
+   </xsl:call-template>
+  </xsl:when>  
+  <xsl:when test="$currentmodule/import[@name eq $module/@name]">
+   <xsl:call-template name="colored_module"> 
+    <xsl:with-param name="module" select="$module"/>
+    <xsl:with-param name="color" select="'imports'"/>
+   </xsl:call-template>
+  </xsl:when>
+  <xsl:when test="$currentmodule//import[@name eq $module/@name]">
+   <xsl:call-template name="colored_module"> 
+    <xsl:with-param name="module" select="$module"/>
+    <xsl:with-param name="color" select="'imports_ind'"/>
+   </xsl:call-template>
+  </xsl:when>
+  <xsl:when test="$module/import[@name eq $currentmodule/@name]">
+   <xsl:call-template name="colored_module"> 
+    <xsl:with-param name="module" select="$module"/>
+    <xsl:with-param name="color" select="'importedby'"/>
+   </xsl:call-template>
+  </xsl:when>
+  <xsl:when test="$module//import[@name eq $currentmodule/@name]">
+   <xsl:call-template name="colored_module"> 
+    <xsl:with-param name="module" select="$module"/>
+    <xsl:with-param name="color" select="'importedby_ind'"/>
+   </xsl:call-template>
+  </xsl:when>
+  <xsl:otherwise>
+   <xsl:call-template name="colored_module"> 
+    <xsl:with-param name="module" select="$module"/>
+    <xsl:with-param name="color" select="'normal'"/>
+   </xsl:call-template>
+  </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+<xsl:template name="colored_module">
+ <xsl:param name="module"/> 
+ <xsl:param name="color"/> 
+ <a href="{concat('import_', $module/@name, '.html')}" class="{$color}"><xsl:value-of select="$module/@name"/></a>
+</xsl:template>
+
+<xsl:template match="import_behaviour">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template name="html_head">
+<xsl:param name="title"/>
+ <head>
+  <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
+  <link rel="stylesheet" type="text/css" href="css/doc.css"/>
+   <xsl:choose>
+    <xsl:when test="$showOriginalT3DocTags eq 'true'">
+     <style type="text/css">
+       .span_tagtype{
+       	display:none;
+      }
+     </style>   
+    </xsl:when>
+    <xsl:otherwise>
+     <style type="text/css">
+      .span_tagtypeOrig{
+       	display:none;
+      }
+     </style>   
+    </xsl:otherwise>
+   </xsl:choose>
+  <script type="text/javascript" src="js/doc.js"></script>
+  <script type="text/javascript" src="js/index.js"></script>
+  <title><xsl:value-of select="$title"/></title>
+ </head>
+</xsl:template>
+
+<xsl:template match="link">
+ <xsl:variable name="loc" select="@loc" />
+ <a href="{@loc}"><xsl:value-of select="replace(replace(text(), ' ', '&#160;'), '\t', '&#x9;')"/></a> 
+</xsl:template>
+
+<xsl:template name="legend">
+  <div id="div_index">
+   <p>Legend:</p>
+    <p class="padding_left_10px">
+     <span class="imports">Selected module imports this module</span>
+     <br/>
+     <br/>
+     <span class="imports_ind">Selected module indirectly depends on this module</span>
+     <br/>
+     <br/>
+     <span class="importedby">Selected module is imported by this module</span>
+     <br/>
+     <br/>
+     <span class="importedby_ind">This module indirectly depends on the selected module</span>
+     <br/>
+     <br/>
+     <span class="selected">Selected module</span>    
+    </p>
+  </div>
+</xsl:template>
+
+</xsl:stylesheet>
Index: /trunk/t3q/.classpath
===================================================================
--- /trunk/t3q/.classpath	(revision 7)
+++ /trunk/t3q/.classpath	(revision 7)
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="lib" path="lib/org.eclipse.core.resources_3.4.0.v20080604-1400.jar"/>
+	<classpathentry kind="lib" path="lib/org.eclipse.core.runtime_3.4.0.v20080512.jar"/>
+	<classpathentry kind="lib" path="lib/org.eclipse.equinox.common_3.4.0.v20080421-2006.jar"/>
+	<classpathentry kind="lib" path="lib/com.yourkit.javaprofiler.controller_7.0.4.jar"/>
+	<classpathentry kind="lib" path="lib/org.eclipse.osgi_3.4.0.v20080605-1900.jar"/>
+	<classpathentry kind="lib" path="lib/stringtemplate.jar"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/de.ugoe.cs.swe.trex.core"/>
+	<classpathentry kind="lib" path="lib/de.ugoe.cs.swe.trex.antlr_2.7.6.jar"/>
+	<classpathentry kind="lib" path="lib/xpp3_min-1.1.4c.jar"/>
+	<classpathentry kind="lib" path="lib/xstream-1.3.1.jar"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/org.etsi.common"/>
+	<classpathentry kind="lib" path="lib/commons-cli-1.2-javadoc.jar"/>
+	<classpathentry kind="lib" path="lib/commons-cli-1.2-sources.jar"/>
+	<classpathentry kind="lib" path="lib/commons-cli-1.2.jar"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
Index: /trunk/t3q/.project
===================================================================
--- /trunk/t3q/.project	(revision 7)
+++ /trunk/t3q/.project	(revision 7)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>t3q</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
Index: /trunk/t3q/build.xml
===================================================================
--- /trunk/t3q/build.xml	(revision 7)
+++ /trunk/t3q/build.xml	(revision 7)
@@ -0,0 +1,52 @@
+<?xml version="1.0"?>
+<project name="test" default="compile" basedir=".">
+
+    <property name="src" value="src"/>
+    <property name="bin" value="bin"/>
+    <property name="lib" value="lib"/>
+    <property name="dist" value="dist"/>
+    <property name="antlib" value="antlib"/>
+    <property name="nsis" value="nsis"/>
+    <property name="cp" value="${lib}/com.yourkit.javaprofiler.controller_7.0.4.jar:${lib}/de.ugoe.cs.swe.trex.antlr_2.7.6.jar:${lib}/org.eclipse.core.resources_3.4.0.v20080604-1400.jar:${lib}/org.eclipse.core.runtime_3.4.0.v20080512.jar:${lib}/org.eclipse.equinox.common_3.4.0.v20080421-2006.jar:${lib}/org.eclipse.osgi_3.4.0.v20080605-1900.jar:${lib}/stringtemplate.jar:${lib}/xstream-1.3.1.jar:${lib}/xpp3_min-1.1.4c.jar:${lib}/commons-cli-1.2.jar:${lib}/org.etsi.common.jar:${lib}/de.ugoe.cs.swe.trex.core_0.6.0.201003090301.jar"/>
+
+    <taskdef name="nsis" classname="net.sf.nsisant.Task">
+        <classpath location="${antlib}/nsisant-1.2.jar"/>
+    </taskdef>
+	
+	<target name="init">
+        <mkdir dir="${bin}"/>
+    </target>
+
+   	<target name="compile" depends="init">
+        <javac srcdir="${src}" destdir="${bin}" classpath="${cp}"/>
+    </target>
+
+    <target name="clean" description="Removes previous build">
+      <delete includeEmptyDirs="true">
+        <fileset dir="${bin}"/>
+      </delete>
+    </target>
+    
+    <target name="make-dist" depends="compile" description="Creates an T3Q distribution directory">
+        <echo>Building T3Q Distribution in ${dist}...</echo>
+        <delete includeEmptyDirs="true">
+            <fileset dir="${dist}"/>
+        </delete>
+        <jar destfile="${lib}/t3q.jar" basedir="${bin}/"/> 
+        <mkdir dir="${dist}"/>
+        <mkdir dir="${dist}/lib"/>
+		<copy file="t3q" tofile="${dist}/t3q"/>
+		<copy file="t3q.bat" tofile="${dist}/t3q.bat"/> 
+        <copy todir="${dist}/lib">
+        	<fileset dir="${lib}"/>
+        </copy>
+    </target>
+	
+    <target name="nsis" depends="make-dist" description="Creates an NSIS Installer from the dist directory">
+        <nsis script="${nsis}/t3q.nsi" verbosity="4" out="${nsis}/build.log" noconfig="yes">
+            <define name="VERSION" value="2.1"/>
+            <scriptcmd cmd="AutoCloseWindow true"/>
+        </nsis>
+    </target>
+	
+</project>
Index: /trunk/t3q/lib/LICENSE.txt
===================================================================
--- /trunk/t3q/lib/LICENSE.txt	(revision 7)
+++ /trunk/t3q/lib/LICENSE.txt	(revision 7)
@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
Index: /trunk/t3q/lib/NOTICE.txt
===================================================================
--- /trunk/t3q/lib/NOTICE.txt	(revision 7)
+++ /trunk/t3q/lib/NOTICE.txt	(revision 7)
@@ -0,0 +1,5 @@
+Apache Commons CLI
+Copyright 2001-2009 The Apache Software Foundation
+
+This product includes software developed by
+The Apache Software Foundation (http://www.apache.org/).
Index: /trunk/t3q/lib/RELEASE-NOTES.txt
===================================================================
--- /trunk/t3q/lib/RELEASE-NOTES.txt	(revision 7)
+++ /trunk/t3q/lib/RELEASE-NOTES.txt	(revision 7)
@@ -0,0 +1,73 @@
+$Id: RELEASE-NOTES.txt 695235 2008-09-14 15:26:10Z ebourg $
+
+            Commons CLI Package
+                Version 1.2
+               Release Notes
+
+
+INTRODUCTION:
+
+This document contains the release notes for this version of the Commons CLI
+package. Commons CLI provides a simple API for working with the command line
+arguments and options.
+
+Commons CLI 1.2 is a bugfix release. The following notable changes were made:
+
+ * A major regression introduced in CLI 1.1 that prevented the usage of repeated options has been fixed.
+ * Several parser issues have been fixed, especially with the PosixParser.
+ * HelpFormatter now wraps the lines properly
+ * The ordering of the option in the help message can now be defined.
+ * Various API enhancements (improved exceptions, serializable classes)
+
+Commons CLI 1.2 is binary compatible with the previous versions, except for
+the OptionValidator class that is no longer public.
+
+More information can be found on the project site at http://commons.apache.org/cli
+
+
+NEW FEATURES:
+
+  * The method getOptionProperties() in the CommandLine class was added
+    to retrieve easily the key/value pairs specified with options like
+    -Dkey1=value1 -Dkey2=value2.
+
+  * GnuParser now supports long options with an '=' sign
+    (ie. --foo=bar and -foo=bar) (CLI-157)
+
+  * The ordering of options can be defined in help messages. (CLI-155)
+
+
+BUG FIXES:
+
+  * The number of arguments defined for an option specifies the arguments
+    per occurrence of the option and not for all occurrences. (CLI-137)
+
+  * PosixParser no longer ignores unrecognized short options. (CLI-164)
+
+  * PosixParser no longer stops the bursting process of a token if stopAtNonOption
+    is enabled and a non option character is encountered. (CLI-163)
+
+  * PosixParser no longer keeps processing the tokens after an unrecognized
+    long option when stopAtNonOption is enabled. (CLI-165)
+
+  * Required options are properly checked if an Options instance is used twice
+    to parse a command line. (CLI-156)
+
+  * The line wrapping in HelpFormatter now works properly. (CLI-151)
+
+
+CHANGES:
+
+  * The message of MissingOptionException has been improved. (CLI-149)
+
+  * The exceptions have been enhanced with methods to retrieve easily
+    the related options. (CLI-86)
+
+  * Option.toString() now reports arguments properly. (CLI-141)
+
+  * The Parser class has been changed to be more easily extendable. (CLI-142)
+
+  * The following classes are now serializable: Option, OptionGroup,
+    CommandLine and Options. (CLI-140)
+
+  * OptionValidator is no longer public, its methods were all private.
Index: /trunk/t3q/lib/xpp3-license.txt
===================================================================
--- /trunk/t3q/lib/xpp3-license.txt	(revision 7)
+++ /trunk/t3q/lib/xpp3-license.txt	(revision 7)
@@ -0,0 +1,46 @@
+Indiana University Extreme! Lab Software License
+
+Version 1.1.1
+
+Copyright (c) 2002 Extreme! Lab, Indiana University. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright notice,
+   this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in
+   the documentation and/or other materials provided with the distribution.
+
+3. The end-user documentation included with the redistribution, if any,
+   must include the following acknowledgment:
+
+  "This product includes software developed by the Indiana University
+  Extreme! Lab (http://www.extreme.indiana.edu/)."
+
+Alternately, this acknowledgment may appear in the software itself,
+if and wherever such third-party acknowledgments normally appear.
+
+4. The names "Indiana Univeristy" and "Indiana Univeristy Extreme! Lab"
+must not be used to endorse or promote products derived from this
+software without prior written permission. For written permission,
+please contact http://www.extreme.indiana.edu/.
+
+5. Products derived from this software may not use "Indiana Univeristy"
+name nor may "Indiana Univeristy" appear in their name, without prior
+written permission of the Indiana University.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE AUTHORS, COPYRIGHT HOLDERS OR ITS CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Index: /trunk/t3q/lib/xstream-license.txt
===================================================================
--- /trunk/t3q/lib/xstream-license.txt	(revision 7)
+++ /trunk/t3q/lib/xstream-license.txt	(revision 7)
@@ -0,0 +1,28 @@
+(BSD Style License)
+
+Copyright (c) 2003-2006, Joe Walnes
+Copyright (c) 2006-2007, XStream Committers
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+Redistributions of source code must retain the above copyright notice, this list of
+conditions and the following disclaimer. Redistributions in binary form must reproduce
+the above copyright notice, this list of conditions and the following disclaimer in
+the documentation and/or other materials provided with the distribution.
+
+Neither the name of XStream nor the names of its contributors may be used to endorse
+or promote products derived from this software without specific prior written
+permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
+WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
Index: /trunk/t3q/nsis/EnvVarUpdate.nsh
===================================================================
--- /trunk/t3q/nsis/EnvVarUpdate.nsh	(revision 7)
+++ /trunk/t3q/nsis/EnvVarUpdate.nsh	(revision 7)
@@ -0,0 +1,327 @@
+/**
+ *  EnvVarUpdate.nsh
+ *    : Environmental Variables: append, prepend, and remove entries
+ *
+ *     WARNING: If you use StrFunc.nsh header then include it before this file
+ *              with all required definitions. This is to avoid conflicts
+ *
+ *  Usage:
+ *    ${EnvVarUpdate} "ResultVar" "EnvVarName" "Action" "RegLoc" "PathString"
+ *
+ *  Credits:
+ *  Version 1.0 
+ *  * Cal Turney (turnec2)
+ *  * Amir Szekely (KiCHiK) and e-circ for developing the forerunners of this
+ *    function: AddToPath, un.RemoveFromPath, AddToEnvVar, un.RemoveFromEnvVar,
+ *    WriteEnvStr, and un.DeleteEnvStr
+ *  * Diego Pedroso (deguix) for StrTok
+ *  * Kevin English (kenglish_hi) for StrContains
+ *  * Hendri Adriaens (Smile2Me), Diego Pedroso (deguix), and Dan Fuhry  
+ *    (dandaman32) for StrReplace
+ *
+ *  Version 1.1 (compatibility with StrFunc.nsh)
+ *  * techtonik
+ *
+ *  http://nsis.sourceforge.net/Environmental_Variables:_append%2C_prepend%2C_and_remove_entries
+ *
+ */
+
+
+!ifndef ENVVARUPDATE_FUNCTION
+!define ENVVARUPDATE_FUNCTION
+!verbose push
+!verbose 3
+!include "LogicLib.nsh"
+!include "WinMessages.NSH"
+!include "StrFunc.nsh"
+
+; ---- Fix for conflict if StrFunc.nsh is already includes in main file -----------------------
+!macro _IncludeStrFunction StrFuncName
+  !ifndef ${StrFuncName}_INCLUDED
+    ${${StrFuncName}}
+  !endif
+  !ifndef Un${StrFuncName}_INCLUDED
+    ${Un${StrFuncName}}
+  !endif
+  !define un.${StrFuncName} "${Un${StrFuncName}}"
+!macroend
+
+!insertmacro _IncludeStrFunction StrTok
+!insertmacro _IncludeStrFunction StrStr
+!insertmacro _IncludeStrFunction StrRep
+
+; ---------------------------------- Macro Definitions ----------------------------------------
+!macro _EnvVarUpdateConstructor ResultVar EnvVarName Action Regloc PathString
+  Push "${EnvVarName}"
+  Push "${Action}"
+  Push "${RegLoc}"
+  Push "${PathString}"
+    Call EnvVarUpdate
+  Pop "${ResultVar}"
+!macroend
+!define EnvVarUpdate '!insertmacro "_EnvVarUpdateConstructor"'
+ 
+!macro _unEnvVarUpdateConstructor ResultVar EnvVarName Action Regloc PathString
+  Push "${EnvVarName}"
+  Push "${Action}"
+  Push "${RegLoc}"
+  Push "${PathString}"
+    Call un.EnvVarUpdate
+  Pop "${ResultVar}"
+!macroend
+!define un.EnvVarUpdate '!insertmacro "_unEnvVarUpdateConstructor"'
+; ---------------------------------- Macro Definitions end-------------------------------------
+ 
+;----------------------------------- EnvVarUpdate start----------------------------------------
+!define hklm_all_users     'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"'
+!define hkcu_current_user  'HKCU "Environment"'
+ 
+!macro EnvVarUpdate UN
+ 
+Function ${UN}EnvVarUpdate
+ 
+  Push $0
+  Exch 4
+  Exch $1
+  Exch 3
+  Exch $2
+  Exch 2
+  Exch $3
+  Exch
+  Exch $4
+  Push $5
+  Push $6
+  Push $7
+  Push $8
+  Push $9
+  Push $R0
+ 
+  /* After this point:
+  -------------------------
+     $0 = ResultVar     (returned)
+     $1 = EnvVarName    (input)
+     $2 = Action        (input)
+     $3 = RegLoc        (input)
+     $4 = PathString    (input)
+     $5 = Orig EnvVar   (read from registry)
+     $6 = Len of $0     (temp)
+     $7 = tempstr1      (temp)
+     $8 = Entry counter (temp)
+     $9 = tempstr2      (temp)
+     $R0 = tempChar     (temp)  */
+ 
+  ; Step 1:  Read contents of EnvVarName from RegLoc
+  ;
+  ; Check for empty EnvVarName
+  ${If} $1 == ""
+    SetErrors
+    DetailPrint "ERROR: EnvVarName is blank"
+    Goto EnvVarUpdate_Restore_Vars
+  ${EndIf}
+ 
+  ; Check for valid Action
+  ${If}    $2 != "A"
+  ${AndIf} $2 != "P"
+  ${AndIf} $2 != "R"
+    SetErrors
+    DetailPrint "ERROR: Invalid Action - must be A, P, or R"
+    Goto EnvVarUpdate_Restore_Vars
+  ${EndIf}
+ 
+  ${If} $3 == HKLM
+    ReadRegStr $5 ${hklm_all_users} $1     ; Get EnvVarName from all users into $5
+  ${ElseIf} $3 == HKCU
+    ReadRegStr $5 ${hkcu_current_user} $1  ; Read EnvVarName from current user into $5
+  ${Else}
+    SetErrors
+    DetailPrint 'ERROR: Action is [$3] but must be "HKLM" or HKCU"'
+    Goto EnvVarUpdate_Restore_Vars
+  ${EndIf}
+ 
+  ; Check for empty PathString
+  ${If} $4 == ""
+    SetErrors
+    DetailPrint "ERROR: PathString is blank"
+    Goto EnvVarUpdate_Restore_Vars
+  ${EndIf}
+ 
+  ; Make sure we've got some work to do
+  ${If} $5 == ""
+  ${AndIf} $2 == "R"
+    SetErrors
+    DetailPrint "$1 is empty - Nothing to remove"
+    Goto EnvVarUpdate_Restore_Vars
+  ${EndIf}
+ 
+  ; Step 2: Scrub EnvVar
+  ;
+  StrCpy $0 $5                             ; Copy the contents to $0
+  ; Remove spaces around semicolons (NOTE: spaces before the 1st entry or
+  ; after the last one are not removed here but instead in Step 3)
+  ${If} $0 != ""                           ; If EnvVar is not empty ...
+    ${Do}
+      ${${UN}StrStr} $7 $0 " ;"
+      ${If} $7 == ""
+        ${ExitDo}
+      ${EndIf}
+      ${${UN}StrRep} $0  $0 " ;" ";"         ; Remove '<space>;'
+    ${Loop}
+    ${Do}
+      ${${UN}StrStr} $7 $0 "; "
+      ${If} $7 == ""
+        ${ExitDo}
+      ${EndIf}
+      ${${UN}StrRep} $0  $0 "; " ";"         ; Remove ';<space>'
+    ${Loop}
+    ${Do}
+      ${${UN}StrStr} $7 $0 ";;" 
+      ${If} $7 == ""
+        ${ExitDo}
+      ${EndIf}
+      ${${UN}StrRep} $0  $0 ";;" ";"
+    ${Loop}
+ 
+    ; Remove a leading or trailing semicolon from EnvVar
+    StrCpy  $7  $0 1 0
+    ${If} $7 == ";"
+      StrCpy $0  $0 "" 1                   ; Change ';<EnvVar>' to '<EnvVar>'
+    ${EndIf}
+    StrLen $6 $0
+    IntOp $6 $6 - 1
+    StrCpy $7  $0 1 $6
+    ${If} $7 == ";"
+     StrCpy $0  $0 $6                      ; Change ';<EnvVar>' to '<EnvVar>'
+    ${EndIf}
+    ; DetailPrint "Scrubbed $1: [$0]"      ; Uncomment to debug
+  ${EndIf}
+ 
+  /* Step 3. Remove all instances of the target path/string (even if "A" or "P")
+     $6 = bool flag (1 = found and removed PathString)
+     $7 = a string (e.g. path) delimited by semicolon(s)
+     $8 = entry counter starting at 0
+     $9 = copy of $0
+     $R0 = tempChar      */
+ 
+  ${If} $5 != ""                           ; If EnvVar is not empty ...
+    StrCpy $9 $0
+    StrCpy $0 ""
+    StrCpy $8 0
+    StrCpy $6 0
+ 
+    ${Do}
+      ${${UN}StrTok} $7 $9 ";" $8 "0"      ; $7 = next entry, $8 = entry counter
+ 
+      ${If} $7 == ""                       ; If we've run out of entries,
+        ${ExitDo}                          ;    were done
+      ${EndIf}                             ;
+ 
+      ; Remove leading and trailing spaces from this entry (critical step for Action=Remove)
+      ${Do}
+        StrCpy $R0  $7 1
+        ${If} $R0 != " "
+          ${ExitDo}
+        ${EndIf}
+        StrCpy $7   $7 "" 1                ;  Remove leading space
+      ${Loop}
+      ${Do}
+        StrCpy $R0  $7 1 -1
+        ${If} $R0 != " "
+          ${ExitDo}
+        ${EndIf}
+        StrCpy $7   $7 -1                  ;  Remove trailing space
+      ${Loop}
+      ${If} $7 == $4                       ; If string matches, remove it by not appending it
+        StrCpy $6 1                        ; Set 'found' flag
+      ${ElseIf} $7 != $4                   ; If string does NOT match
+      ${AndIf}  $0 == ""                   ;    and the 1st string being added to $0,
+        StrCpy $0 $7                       ;    copy it to $0 without a prepended semicolon
+      ${ElseIf} $7 != $4                   ; If string does NOT match
+      ${AndIf}  $0 != ""                   ;    and this is NOT the 1st string to be added to $0,
+        StrCpy $0 $0;$7                    ;    append path to $0 with a prepended semicolon
+      ${EndIf}                             ;
+ 
+      IntOp $8 $8 + 1                      ; Bump counter
+    ${Loop}                                ; Check for duplicates until we run out of paths
+  ${EndIf}
+ 
+  ; Step 4:  Perform the requested Action
+  ;
+  ${If} $2 != "R"                          ; If Append or Prepend
+    ${If} $6 == 1                          ; And if we found the target
+      DetailPrint "Target is already present in $1. It will be removed and"
+    ${EndIf}
+    ${If} $0 == ""                         ; If EnvVar is (now) empty
+      StrCpy $0 $4                         ;   just copy PathString to EnvVar
+      ${If} $6 == 0                        ; If found flag is either 0
+      ${OrIf} $6 == ""                     ; or blank (if EnvVarName is empty)
+        DetailPrint "$1 was empty and has been updated with the target"
+      ${EndIf}
+    ${ElseIf} $2 == "A"                    ;  If Append (and EnvVar is not empty),
+      StrCpy $0 $0;$4                      ;     append PathString
+      ${If} $6 == 1
+        DetailPrint "appended to $1"
+      ${Else}
+        DetailPrint "Target was appended to $1"
+      ${EndIf}
+    ${Else}                                ;  If Prepend (and EnvVar is not empty),
+      StrCpy $0 $4;$0                      ;     prepend PathString
+      ${If} $6 == 1
+        DetailPrint "prepended to $1"
+      ${Else}
+        DetailPrint "Target was prepended to $1"
+      ${EndIf}
+    ${EndIf}
+  ${Else}                                  ; If Action = Remove
+    ${If} $6 == 1                          ;   and we found the target
+      DetailPrint "Target was found and removed from $1"
+    ${Else}
+      DetailPrint "Target was NOT found in $1 (nothing to remove)"
+    ${EndIf}
+    ${If} $0 == ""
+      DetailPrint "$1 is now empty"
+    ${EndIf}
+  ${EndIf}
+ 
+  ; Step 5:  Update the registry at RegLoc with the updated EnvVar and announce the change
+  ;
+  ClearErrors
+  ${If} $3  == HKLM
+    WriteRegExpandStr ${hklm_all_users} $1 $0     ; Write it in all users section
+  ${ElseIf} $3 == HKCU
+    WriteRegExpandStr ${hkcu_current_user} $1 $0  ; Write it to current user section
+  ${EndIf}
+ 
+  IfErrors 0 +4
+    MessageBox MB_OK|MB_ICONEXCLAMATION "Could not write updated $1 to $3"
+    DetailPrint "Could not write updated $1 to $3"
+    Goto EnvVarUpdate_Restore_Vars
+ 
+  ; "Export" our change
+  SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
+ 
+  EnvVarUpdate_Restore_Vars:
+  ;
+  ; Restore the user's variables and return ResultVar
+  Pop $R0
+  Pop $9
+  Pop $8
+  Pop $7
+  Pop $6
+  Pop $5
+  Pop $4
+  Pop $3
+  Pop $2
+  Pop $1
+  Push $0  ; Push my $0 (ResultVar)
+  Exch
+  Pop $0   ; Restore his $0
+ 
+FunctionEnd
+ 
+!macroend   ; EnvVarUpdate UN
+!insertmacro EnvVarUpdate ""
+!insertmacro EnvVarUpdate "un."
+;----------------------------------- EnvVarUpdate end----------------------------------------
+ 
+!verbose pop
+!endif
Index: /trunk/t3q/nsis/WriteEnvStr.nsh
===================================================================
--- /trunk/t3q/nsis/WriteEnvStr.nsh	(revision 7)
+++ /trunk/t3q/nsis/WriteEnvStr.nsh	(revision 7)
@@ -0,0 +1,148 @@
+!ifndef _WriteEnvStr_nsh
+!define _WriteEnvStr_nsh
+ 
+!include WinMessages.nsh
+ 
+!ifndef WriteEnvStr_RegKey
+  !ifdef ALL_USERS
+    !define WriteEnvStr_RegKey \
+       'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"'
+  !else
+    !define WriteEnvStr_RegKey 'HKCU "Environment"'
+  !endif
+!endif
+ 
+#
+# WriteEnvStr - Writes an environment variable
+# Note: Win9x systems requires reboot
+#
+# Example:
+#  Push "HOMEDIR"           # name
+#  Push "C:\New Home Dir\"  # value
+#  Call WriteEnvStr
+#
+Function WriteEnvStr
+  Exch $1 ; $1 has environment variable value
+  Exch
+  Exch $0 ; $0 has environment variable name
+  Push $2
+ 
+  Call IsNT
+  Pop $2
+  StrCmp $2 1 WriteEnvStr_NT
+    ; Not on NT
+    StrCpy $2 $WINDIR 2 ; Copy drive of windows (c:)
+    FileOpen $2 "$2\autoexec.bat" a
+    FileSeek $2 0 END
+    FileWrite $2 "$\r$\nSET $0=$1$\r$\n"
+    FileClose $2
+    SetRebootFlag true
+    Goto WriteEnvStr_done
+ 
+  WriteEnvStr_NT:
+      WriteRegExpandStr ${WriteEnvStr_RegKey} $0 $1
+      SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} \
+        0 "STR:Environment" /TIMEOUT=5000
+ 
+  WriteEnvStr_done:
+    Pop $2
+    Pop $0
+    Pop $1
+FunctionEnd
+ 
+#
+# un.DeleteEnvStr - Removes an environment variable
+# Note: Win9x systems requires reboot
+#
+# Example:
+#  Push "HOMEDIR"           # name
+#  Call un.DeleteEnvStr
+#
+Function un.DeleteEnvStr
+  Exch $0 ; $0 now has the name of the variable
+  Push $1
+  Push $2
+  Push $3
+  Push $4
+  Push $5
+ 
+  Call un.IsNT
+  Pop $1
+  StrCmp $1 1 DeleteEnvStr_NT
+    ; Not on NT
+    StrCpy $1 $WINDIR 2
+    FileOpen $1 "$1\autoexec.bat" r
+    GetTempFileName $4
+    FileOpen $2 $4 w
+    StrCpy $0 "SET $0="
+    SetRebootFlag true
+ 
+    DeleteEnvStr_dosLoop:
+      FileRead $1 $3
+      StrLen $5 $0
+      StrCpy $5 $3 $5
+      StrCmp $5 $0 DeleteEnvStr_dosLoop
+      StrCmp $5 "" DeleteEnvStr_dosLoopEnd
+      FileWrite $2 $3
+      Goto DeleteEnvStr_dosLoop
+ 
+    DeleteEnvStr_dosLoopEnd:
+      FileClose $2
+      FileClose $1
+      StrCpy $1 $WINDIR 2
+      Delete "$1\autoexec.bat"
+      CopyFiles /SILENT $4 "$1\autoexec.bat"
+      Delete $4
+      Goto DeleteEnvStr_done
+ 
+  DeleteEnvStr_NT:
+    DeleteRegValue ${WriteEnvStr_RegKey} $0
+    SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} \
+      0 "STR:Environment" /TIMEOUT=5000
+ 
+  DeleteEnvStr_done:
+    Pop $5
+    Pop $4
+    Pop $3
+    Pop $2
+    Pop $1
+    Pop $0
+FunctionEnd
+ 
+!ifndef IsNT_KiCHiK
+!define IsNT_KiCHiK
+ 
+#
+# [un.]IsNT - Pushes 1 if running on NT, 0 if not
+#
+# Example:
+#   Call IsNT
+#   Pop $0
+#   StrCmp $0 1 +3
+#     MessageBox MB_OK "Not running on NT!"
+#     Goto +2
+#     MessageBox MB_OK "Running on NT!"
+#
+!macro IsNT UN
+Function ${UN}IsNT
+  Push $0
+  ReadRegStr $0 HKLM \
+    "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
+  StrCmp $0 "" 0 IsNT_yes
+  ; we are not NT.
+  Pop $0
+  Push 0
+  Return
+ 
+  IsNT_yes:
+    ; NT!!!
+    Pop $0
+    Push 1
+FunctionEnd
+!macroend
+!insertmacro IsNT ""
+!insertmacro IsNT "un."
+ 
+!endif ; IsNT_KiCHiK
+ 
+!endif ; _WriteEnvStr_nsh
Index: /trunk/t3q/nsis/t3q.nsi
===================================================================
--- /trunk/t3q/nsis/t3q.nsi	(revision 7)
+++ /trunk/t3q/nsis/t3q.nsi	(revision 7)
@@ -0,0 +1,190 @@
+; T3Q Installer
+;-----------------------------------------------------------------------------------------------------------------------------
+
+!define PRODUCT_NAME "T3Q"
+!define AppName "T3Q"
+!define AppVersion "1.0"
+!define ShortName "T3Q"
+!define Vendor "Software Engineering for Distributed Systems Group, University of G�ttingen"
+!define JRE_VERSION "1.6"
+!define JRE_URL "http://javadl.sun.com/webapps/download/AutoDL?BundleId=26223"
+!define ALL_USERS
+
+LangString ConfirmUninstall ${LANG_ENGLISH} "All existing \
+files and folders under the $(^Name) installation directory \
+'$INSTDIR' will be removed.$\r$\nThis includes any files and folders \
+that have since been added after the installation of \
+$(^Name).$\r$\n$\r$\nAre you sure you wish to continue?"
+
+!include "MUI2.nsh"
+!include "StrFunc.nsh"
+!include "EnvVarUpdate.nsh"
+!include "WriteEnvStr.nsh"
+
+Name "T3Q"
+OutFile "t3q-install-32bit.exe"
+
+InstallDir $PROGRAMFILES\ETSI\T3Q
+InstallDirRegKey HKLM "Software\ETSI\T3Q" "Install_Dir"
+
+RequestExecutionLevel admin
+
+!define MUI_ABORTWARNING
+
+!insertmacro MUI_PAGE_COMPONENTS
+!insertmacro MUI_PAGE_DIRECTORY
+!insertmacro MUI_PAGE_INSTFILES
+!insertmacro MUI_UNPAGE_CONFIRM
+!insertmacro MUI_UNPAGE_INSTFILES
+
+!insertmacro MUI_LANGUAGE "English"
+
+Section ""
+  Call DetectJRE
+SectionEnd
+
+;-----------------------------------------------------------------------------------------------------------------------------
+; The stuff to install
+Section "T3Q (required)"
+  SectionIn RO
+  SetOutPath $INSTDIR
+  
+  File "..\dist\t3q.bat"
+  File "..\doc\t3q-documentation.pdf"
+  SetOutPath $INSTDIR\lib
+  File /r "..\dist\lib\*.jar"
+  SetOutPath $INSTDIR
+  
+;  CreateDirectory $APPDATA\T3Q
+  
+  WriteRegStr HKLM SOFTWARE\ETSI\T3Q "Install_Dir" "$INSTDIR"
+  
+  ${EnvVarUpdate} $0 "T3Q_HOME" "A" "HKLM" $INSTDIR
+  ${EnvVarUpdate} $0 "PATH" "A" "HKLM" $INSTDIR
+  
+  ReadRegStr $2 HKLM "SOFTWARE\JavaSoft\Java Development Kit\1.6" "JavaHome"
+  StrCmp $2 "" 0 registerJavaHome
+  ReadRegStr $2 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment\1.6" "JavaHome"
+  StrCmp $2 "" 0 registerJavaHome
+registerJavaHome:
+  Push JAVA_HOME
+  Push $2
+  Call WriteEnvStr
+
+  ; Write the uninstall keys for Windows
+  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${AppName}" "DisplayName" "${AppName}"
+  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${AppName}" "UninstallString" '"$INSTDIR\uninstall.exe"'
+  WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${AppName}" "NoModify" 1
+  WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${AppName}" "NoRepair" 1
+  WriteUninstaller "uninstall.exe"
+SectionEnd
+
+Section "T3Q Sample Files"
+  SetOutPath $INSTDIR\samples
+  
+  File /r /x ".svn" /x ".project" "..\..\t3q-examples\*.*"
+SectionEnd
+
+;-----------------------------------------------------------------------------------------------------------------------------
+; Start Menu Section
+Section "Start Menu Shortcuts"
+  CreateDirectory "$SMPROGRAMS\${AppName}"
+  CreateShortCut "$SMPROGRAMS\${AppName}\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
+  CreateShortCut "$SMPROGRAMS\${AppName}\T3Q Documentation.lnk" "$INSTDIR\t3q-documentation.pdf" 
+
+  SetOutPath $INSTDIR\samples
+  CreateShortCut "$SMPROGRAMS\${AppName}\Samples Folder.lnk" "$INSTDIR\samples" 
+;  CreateShortCut "$SMPROGRAMS\${AppName}\T3Q Configuration Directory.lnk" "$APPDATA\T3Q\"
+  CreateShortCut "$SMPROGRAMS\${AppName}\Samples Folder (Command-Line).lnk" "$WINDIR\system32\cmd.exe"
+SectionEnd
+
+;-----------------------------------------------------------------------------------------------------------------------------
+; Uninstaller
+Section "Uninstall"
+  ; Remove registry keys
+  DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${AppName}"
+  DeleteRegKey HKLM SOFTWARE\ETSI\${AppName}
+
+  MessageBox MB_OKCANCEL|MB_ICONINFORMATION $(ConfirmUninstall) IDOK +2
+  Abort
+  RMDir /r $INSTDIR
+
+  ; Remove shortcuts, if any
+  Delete "$SMPROGRAMS\${AppName}\*.*"
+
+  ; Remove directories used
+  RMDir "$SMPROGRAMS\${AppName}"
+  RMDir "$INSTDIR"
+  RMDir "$PROGRAMFILES\ETSI"
+
+  ; Remove Environment Variables
+  ${un.EnvVarUpdate} $0 "PATH" "R" "HKLM" $INSTDIR
+  Push T3Q_HOME
+  Call un.DeleteEnvStr
+  Push T3Q_HOME
+  Call un.DeleteEnvStr
+SectionEnd
+
+;-----------------------------------------------------------------------------------------------------------------------------
+Function GetJRE
+        MessageBox MB_OK "${PRODUCT_NAME} uses Java ${JRE_VERSION}, it will now \
+                         be downloaded and installed"
+ 
+        StrCpy $2 "$TEMP\Java Runtime Environment.exe"
+        nsisdl::download /TIMEOUT=30000 ${JRE_URL} $2
+        Pop $R0 ;Get the return value
+                StrCmp $R0 "success" +3
+                MessageBox MB_OK "Download failed: $R0"
+                Quit
+        ExecWait $2
+        Delete $2
+FunctionEnd
+ 
+;-----------------------------------------------------------------------------------------------------------------------------
+Function DetectJRE
+  ReadRegStr $2 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment" \
+             "CurrentVersion"
+  StrCmp $2 ${JRE_VERSION} done
+ 
+  Call GetJRE
+ 
+  done:
+FunctionEnd
+
+;-----------------------------------------------------------------------------------------------------------------------------
+Function .onInstSuccess
+  MessageBox MB_OK "You have successfully installed ${PRODUCT_NAME}. You can now use 't3q' on the command-line!"
+FunctionEnd
+ 
+;-----------------------------------------------------------------------------------------------------------------------------
+;Function un.onUninstSuccess
+;  MessageBox MB_OK "You have successfully uninstalled ${PRODUCT_NAME}."
+;FunctionEnd
+
+;-----------------------------------------------------------------------------------------------------------------------------
+Function .onInit
+  ReadRegStr $R0 HKLM \
+  "Software\Microsoft\Windows\CurrentVersion\Uninstall\${AppName}" \
+  "UninstallString"
+  StrCmp $R0 "" done
+ 
+  MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION \
+  "${AppName} is already installed. $\n$\nClick `OK` to remove the \
+  previous version or `Cancel` to cancel this upgrade." \
+  IDOK uninst
+  Abort
+ 
+;Run the uninstaller
+uninst:
+  ClearErrors
+  ExecWait '$R0 _?=$INSTDIR' ;Do not copy the uninstaller to a temp file
+ 
+  IfErrors no_remove_uninstaller
+    ;You can either use Delete /REBOOTOK in the uninstaller or add some code
+    ;here to remove the uninstaller. Use a registry key to check
+    ;whether the user has chosen to uninstall. If you are using an uninstaller
+    ;components page, make sure all sections are uninstalled.
+  no_remove_uninstaller:
+ 
+done:
+FunctionEnd
Index: /trunk/t3q/src/org/etsi/t3q/T3Q.java
===================================================================
--- /trunk/t3q/src/org/etsi/t3q/T3Q.java	(revision 7)
+++ /trunk/t3q/src/org/etsi/t3q/T3Q.java	(revision 7)
@@ -0,0 +1,693 @@
+package org.etsi.t3q;
+
+import java.io.File;
+
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.List;
+
+import org.apache.commons.cli.CommandLine;
+import org.apache.commons.cli.CommandLineParser;
+import org.apache.commons.cli.GnuParser;
+import org.apache.commons.cli.HelpFormatter;
+import org.apache.commons.cli.Option;
+import org.apache.commons.cli.ParseException;
+import org.etsi.t3q.config.QualityCheckProfile;
+import org.etsi.t3q.config.T3QConfig;
+import org.etsi.t3q.config.T3QOptionsHandler;
+import org.etsi.t3q.exceptions.TTCN3BehaviorException;
+import org.etsi.t3q.exceptions.TTCN3ParserException;
+import org.etsi.t3q.visitor.T3QVisitor;
+import org.etsi.common.InputInterface;
+import org.etsi.common.MiscTools;
+import org.etsi.common.configuration.ConfigTools;
+import org.etsi.common.exceptions.TerminationException;
+import org.etsi.common.logging.LoggingInterface.LogLevel;
+import org.etsi.common.logging.LoggingInterface.MessageClass;
+
+import antlr.MismatchedTokenException;
+import antlr.RecognitionException;
+import antlr.TokenStreamException;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.LocationAST;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.TTCN3Analyzer;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.TTCN3AnalyzerFlyweightFactory;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.TTCN3Parser;
+import de.ugoe.cs.swe.trex.core.formatter.TTCN3Formatter;
+
+public class T3Q {
+
+	private static String versionNumber = "v1.0.2";
+	//set during automated server builds
+	private static String buildStamp = "---BUILD_STAMP---";
+	public static QualityCheckProfile activeProfile = null;
+	private String configurationClassName = T3QConfig.class.getName();
+	private String configurationProfileClassName = QualityCheckProfile.class.getName();
+	private String configurationFilename;
+	private String selectedProfileName = null;
+	private static LogLevel logLevel = LogLevel.INFORMATION;
+	
+	private HashMap<String, String> argsMap = new HashMap<String, String>();
+	private ArrayList<String> inputPaths = new ArrayList<String>();
+	private String destinationPath = null;
+	
+	private HashMap<String, Integer> linesOfCodeMap = new HashMap<String, Integer>();
+	private int totalLoc = 0;
+
+	private boolean generateNewConfiguration = false;
+	
+	private boolean formattingEnabled = false;
+	
+
+	//TODO: statistics shall be ideally based on XSLT, meaning the output shall be transformed into XML 
+	//TODO: also add exception checking for the profiles 
+	public T3Q() {
+	}
+
+	// --------------------------------------------------------------------------
+
+	public void showHelp() {
+		System.out.println("\nHelp:");
+		// TODO: update help
+		// TODO: transfer to t3d as well
+		// System.out.println("  t3q[.bat] [options] (path | filename)+");
+		// System.out.println("");
+		// System.out.println("  Options (specify in any order): ");
+		// System.out.println("    --help - prints this screen");
+		// System.out
+		// .println("    --profile [profilename] - allows manual profile selection, overriding the selected default profile");
+		// // System.out.println("    --output [path] ");
+		// System.out.println("");
+
+		HelpFormatter formatter = new HelpFormatter();
+		formatter.setOptionComparator(new Comparator<Option>() {
+			
+			@Override
+			public int compare(Option o1, Option o2) {
+				if (o1.getId() > o2.getId()) {
+					return 1;
+				} else {
+					return -1;
+				}
+			}
+		});
+//		formatter.setWidth(120);
+		formatter.setSyntaxPrefix("  Usage: ");
+		formatter.printHelp("t3q [options] (filename | path)+", "  Options: (in any order, config is required)",
+				new T3QOptionsHandler().getOptions(), "");
+		System.out.println("");
+	}
+
+	// --------------------------------------------------------------------------
+	private void showDebugInfo(String[] args) {
+		if (getLogLevel().equals(LogLevel.DEBUG)) {
+			System.out.println("==================ARGS:===================");
+			for (int a = 0; a < args.length; a++) {
+				System.out.println("   " + args[a]);
+			}
+			System.out.println("==================PROPERTIES:=============");
+			for(Object key : System.getProperties().keySet()) {
+				System.out.println("   "+key.toString() + " : "+System.getProperty(key.toString()));
+			}
+			
+			System.out.println("==========================================");
+		}
+	}
+
+	// --------------------------------------------------------------------------
+//TODO: Revise and reorganize for reusability
+	public void run(String[] args) {
+		System.out.println("T3Q " + getVersionNumber());
+		System.out.println("Build " + getBuildStamp());
+		System.out.println("  TTCN-3 version supported: "
+				+ TTCN3Parser.getSupportedVersion());
+		System.out.println("==========================================");
+		try {
+			if (handleCommandLineArguments(args) == false) {
+				return;
+			}
+			showDebugInfo(args);
+			if (selectedProfileName != null) {
+				handleConfig(selectedProfileName);
+			} else {
+				handleConfig(null);
+			}
+		} catch (TerminationException e) {
+			// TODO: handle exception
+			System.out.println("ERRORING OUT!");
+		}
+		
+		TTCN3Parser.disableStatementBlockCompatibilityMode();
+		TTCN3Parser.enableStatementBlockCompatibilityMode();
+
+		List<String> ttcn3Resources = new InputInterface(T3Q.activeProfile.getResourceExtensionsRegExp(), T3Q.activeProfile.getProjectExtension(),
+				T3Q.activeProfile.isSettingRecursiveProcessing()).getInputFromParameterList(inputPaths);
+		ttcn3Resources = InputInterface.filterAbsoluteDuplicates(ttcn3Resources); 
+		
+		
+		if (ttcn3Resources.isEmpty()) {
+			// Terminate
+			System.out.println("No ttcn3 files found!");
+			showHelp();
+			return;
+		}
+
+		long startTime = System.currentTimeMillis();
+		TTCN3Analyzer analyzer = null;
+
+		try {
+			System.out.println("Parsing files...");
+			for (int i = 0; i < ttcn3Resources.size(); i++) {
+				String resourcePath = ttcn3Resources.get(i);
+				analyzeFile(resourcePath);
+				TTCN3AnalyzerFlyweightFactory analyzerFactory = TTCN3AnalyzerFlyweightFactory
+						.getInstance();
+				analyzer = analyzerFactory.getTTCN3Analyzer(ttcn3Resources
+						.get(i));
+				if (analyzer.getExceptions().size() > 0) {
+					String exceptionMessage = "Error while parsing file "
+						+ analyzer.getFilename(); 
+					//TODO: adapt to T3D as well
+					String tree = "";
+					tree = LocationAST.dumpTree((LocationAST)analyzer.getParser().getAST(),1,tree);
+					if (getLogLevel().equals(LogLevel.DEBUG)) {
+						exceptionMessage+="\n" +
+								"Parse-tree trace:\n" +
+								tree;
+					}
+					if (T3Q.activeProfile.isSettingAbortOnError()) {
+						throw new TTCN3ParserException(exceptionMessage);
+					} else {
+						try {
+							throw new TTCN3ParserException(exceptionMessage);
+						} catch (TTCN3ParserException e) {
+							System.err.println(e.getLocalizedMessage());
+							for (int i1 = 0; i1 < analyzer.getExceptions()
+									.size(); i1++) {
+								System.err.println("Line "
+										+ analyzer.getExceptions().get(i1)
+												.getLine()
+										+ ": "
+										+ analyzer.getExceptions().get(i1)
+												.getMessage());
+							}
+							// e.printStackTrace();
+						}
+					}
+				}
+			}
+			long endTime = System.currentTimeMillis();
+			long elapsed = endTime - startTime;
+			double elapsedMinutes = ((double) elapsed) / 1000.0 / 60.0;
+			System.out.println("Done parsing in " + elapsed + "ms ("
+					+ MiscTools.doubleToString(elapsedMinutes) + " minutes).");
+
+			if (T3Q.activeProfile.isStatShowLOC()) {
+				System.out.println("Total lines of code parsed: " + totalLoc);
+			}
+
+			TTCN3AnalyzerFlyweightFactory analyzerFactory = TTCN3AnalyzerFlyweightFactory
+					.getInstance();
+
+			System.out.println("Postprocessing...");
+			startTime = System.currentTimeMillis();
+			analyzerFactory.postProcess();
+			endTime = System.currentTimeMillis();
+			elapsed = endTime - startTime;
+			elapsedMinutes = ((double) elapsed) / 1000.0 / 60.0;
+			System.out.println("Done processing in " + elapsed + "ms ("
+					+ MiscTools.doubleToString(elapsedMinutes) + " minutes).");
+			startTime = System.currentTimeMillis();
+
+			System.out.println("==========================================");
+			//TODO: up to here mostly identical, make reusable
+			
+			//TODO: core functionality, encapsulate and extract
+			for (int i = 0; i < ttcn3Resources.size(); i++) {
+				analyzer = analyzerFactory.getTTCN3Analyzer(ttcn3Resources
+						.get(i));
+				System.out.println("Analyzing: " + analyzer.getFilename());
+				T3QVisitor visitor = new T3QVisitor();
+				visitor.setFilename(analyzer.getFilename());
+				visitor.acceptDFS((LocationAST) analyzer.getParser().getAST());
+			}
+			endTime = System.currentTimeMillis();
+			elapsed = endTime - startTime;
+			elapsedMinutes = ((double) elapsed) / 1000.0 / 60.0;
+			System.out.println("Quality checks finished in " + elapsed + "ms ("
+					+ MiscTools.doubleToString(elapsedMinutes) + " minutes).");
+
+			//TODO: custom functionality
+			analyzer = handleFormatter(ttcn3Resources, analyzer,
+					analyzerFactory);
+			if (T3Q.activeProfile.isStatShowLOC()) {
+				System.out
+						.println("Total lines of code processed: " + totalLoc);
+			}
+			
+			if (T3Q.activeProfile.isStatShowSummary()) {
+				System.out.println("Brief statistics summary of occurences in message classes:");
+				for (MessageClass m : MessageClass.values()) {
+					System.out.println("\t" + m.getDescription() + " : "
+							+ m.getOccurenceCount());
+				}
+			}
+			
+		} catch (TTCN3BehaviorException e) {
+			System.err.println(e.getLocalizedMessage());
+		} catch (TTCN3ParserException e) {
+			// Default setting where processing is terminated in the event of a
+			// parsing error
+			System.err.println(e.getLocalizedMessage());
+			for (int i = 0; i < analyzer.getExceptions().size(); i++) {
+				System.err.println("Line "
+						+ analyzer.getExceptions().get(i).getLine() + ": "
+						+ analyzer.getExceptions().get(i).getMessage());
+			}
+			// TODO: Isolate different steps and implement a recovery mechanism:
+
+		}
+
+	}
+
+	
+	//TODO: copy back output handling tricks from T3D
+	private TTCN3Analyzer handleFormatter(List<String> ttcn3Resources,
+			TTCN3Analyzer analyzer,
+			TTCN3AnalyzerFlyweightFactory analyzerFactory) {
+		long startTime;
+		long endTime;
+		long elapsed;
+		double elapsedMinutes;
+		if (this.isFormattingEnabled()) {
+			// TODO: consider ways to avoid reparsing (performing the comment
+			// collection during the first parse)
+			System.out.println("==========================================");
+			System.out.println("Formatting Code...");
+			startTime = System.currentTimeMillis();
+
+			TTCN3Formatter formatter = new TTCN3Formatter();
+
+			for (int i = 0; i < ttcn3Resources.size(); i++) {
+				analyzer = analyzerFactory.getTTCN3Analyzer(ttcn3Resources
+						.get(i));
+				System.out.println("  Formatting file: "
+						+ analyzer.getFilename());
+				try {
+
+					String resourcePath = ttcn3Resources.get(i);
+
+					String source = MiscTools.readFile(resourcePath);
+
+					String formatted = formatter.formatTTCN3Source(source,
+							T3Q.activeProfile.getFormattingParameters());
+
+					// calculate the target path for the current resource
+
+					// TODO: look into it and fix it -> is it not fixed now?
+					// reason is: absolute paths are difficult to handle
+					// String subPath = resourcePath;
+//					String subPath = "/" + new File(resourcePath).getName(); 
+					
+					String canonicalResourcePath = new File(resourcePath).getCanonicalPath();
+					String canonicalWorkingPath = new File(".").getCanonicalPath();
+										
+					String destinationSubPath = canonicalResourcePath;
+					
+					//TODO: make this subtraction optional and document the feature
+					//CF: Manuel's remark and my answer - it introduces a dependency on the working path which may not be easily understood and has at least be documented properly
+					if (canonicalResourcePath.startsWith(canonicalWorkingPath)){
+						destinationSubPath = canonicalResourcePath.substring(canonicalWorkingPath.length());
+					}
+
+					if (destinationSubPath.substring(0,3).endsWith(":\\")){
+						destinationSubPath=destinationSubPath.substring(2);
+					}
+					
+					String outputPathArg = new File(getDestinationPath()).getPath(); // also
+																		// strips
+																		// the
+																		// slash
+																		// if
+																		// present
+					String outputPath = outputPathArg + destinationSubPath;
+
+					
+					
+//					System.out.println("****************************");
+//					System.out.println("ABSOLUTE: \t\t"+canonicalResourcePath);
+//					System.out.println("WORKING: \t\t"+canonicalWorkingPath);
+//					System.out.println("ResourcePath: \t\t"+resourcePath);
+//					System.out.println("SubPath: \t\t"+destinationSubPath);
+//					System.out.println("OutputPath: \t\t"+outputPath);
+//					System.out.println("****************************");
+//					System.out.println(formatted);
+//					System.out.println(outputPath);
+					MiscTools.writeFile(outputPath, formatted);
+					System.out.println("File \""+outputPath+"\" written successfully!");
+
+				} catch (RecognitionException e1) {
+					System.err.println("Recognition exception:");
+					System.err.println(e1.getLocalizedMessage());
+				} catch (TokenStreamException e) {
+					System.err.println("Token stream exception:");
+					e.printStackTrace();
+				} catch (Exception e) {
+					System.err.println("Exception:");
+					e.printStackTrace();
+				}
+
+			}
+			endTime = System.currentTimeMillis();
+			elapsed = endTime - startTime;
+			elapsedMinutes = ((double) elapsed) / 1000.0 / 60.0;
+			System.out.println("Code formatting finished in " + elapsed
+					+ "ms (" + MiscTools.doubleToString(elapsedMinutes) + " minutes).");
+
+		}
+		return analyzer;
+	}
+	//TODO: DUPLICATED IN T3D
+	private boolean handleCommandLineArguments(String[] args) throws TerminationException {
+		//parseCommandLineArguments(args);
+		CommandLine commandLine = parseCommandLineArguments(args);
+		if (commandLine == null) {
+			return false;
+		}
+		String arguments[] = evaluateCommandLineOptions(commandLine);
+
+		if (commandLine.hasOption("help")) {
+			showHelp();
+			return false;
+		}
+
+		if (commandLine.hasOption("config") && arguments.length < 1) {
+			System.out.println("ERROR: Missing input location(s)");
+			showHelp();
+			return false;
+		}
+
+		for (String arg : arguments) {
+			//TODO: add validity checks
+			inputPaths.add(arg);
+		}
+		
+		return true;
+	}
+
+	// --------------------------------------------------------------------------
+	//TODO: DUPLICATED IN T3D
+	private CommandLine parseCommandLineArguments(String[] args) {
+		CommandLineParser parser = new GnuParser();
+		T3QOptionsHandler optionsHandler = new T3QOptionsHandler();
+		CommandLine commandLine = null;
+		try {
+			commandLine = parser.parse(optionsHandler.getOptions(), args);
+		} catch (ParseException e) {
+			System.out.println("ERROR: " + e.getMessage() );
+			showHelp();
+		}
+		return commandLine;
+	}
+	
+	// --------------------------------------------------------------------------
+	//TODO: DUPLICATED MOSTLY IN T3D
+	private String[] evaluateCommandLineOptions(CommandLine commandLine) throws TerminationException {
+		if (commandLine.hasOption("generate-config")) {
+			this.setConfigurationFilename(commandLine.getOptionValue("generate-config"));
+			this.setGenerateNewConfiguration(true);
+		} else if (commandLine.hasOption("config")) {
+			this.setConfigurationFilename(commandLine.getOptionValue("config"));
+		} else {
+			System.out.println("ERROR: No configuration file selected!");
+			showHelp();
+			throw new TerminationException("");
+		}
+		
+		if (commandLine.hasOption("profile")) {
+			this.setSelectedProfileName(commandLine.getOptionValue("profile"));
+		}
+		if (commandLine.hasOption("format")){
+			this.setFormattingEnabled(true);
+		}
+		if (commandLine.hasOption("verbosity")){
+			this.selectLogLevel(commandLine.getOptionValue("verbosity"));
+		}
+		if (commandLine.hasOption("output-path")){
+			this.setDestinationPath(commandLine.getOptionValue("output-path"));
+		}
+		return commandLine.getArgs();
+	}
+	
+	// --------------------------------------------------------------------------
+
+	//TODO: THIS SHALL BE DEPRECATED NOW 
+//	private void parseCommandLineArguments(String[] args) {
+//		String key = "";
+//		String value = "";
+//		//targetPath = "";
+//
+//		boolean lastKey = false;
+//		for (int i = 0; i < args.length; i++) {
+//			if (args[i].startsWith("--")) {
+//				key = args[i].replaceAll("--", "").toLowerCase();
+//
+//				if (lastKey) {
+//					argsMap.put(key, "true");
+//					key = null;
+//					value = null;
+//					lastKey = false;
+//				}
+//
+//				lastKey = true;
+//			} else {
+//				value = args[i];
+//				if ((key != null) && (argsMap.get(key) == null)
+//						&& (key.length() > 0)) {
+//					argsMap.put(key, value);
+//					key = null;
+//					value = null;
+//				} else {
+//					inputPaths.add(value);
+//				}
+//				lastKey = false;
+//			}
+//		}
+//
+//		if (key != null) {
+//			if ((argsMap.get(key) == null) && (key.length() > 0)) {
+//				argsMap.put(key, "true");
+//			}
+//		}
+//	}
+ 
+	// --------------------------------------------------------------------------
+	//TODO: DUPLICATED MOSTLY IN T3D
+	private void handleConfig(String specifiedProfile) throws TerminationException {
+		ConfigTools configTools = new ConfigTools(configurationClassName, configurationProfileClassName);
+		configTools.setToolVersion(getVersionNumber());
+		
+		try {
+			if (isGenerateNewConfiguration()) {
+				configTools.initializeNewDefaultConfig(getConfigurationFilename());
+				System.exit(0);
+			} else {
+				configTools.loadConfig(getConfigurationFilename());
+				activeProfile = (QualityCheckProfile) configTools.selectProfile(specifiedProfile);
+				if (this.getDestinationPath()==null) {
+					setDestinationPath(T3Q.activeProfile.getPathFormattedOutputPath());
+				}
+			}
+		} catch (InstantiationException e) {
+			throw new TerminationException("ERROR: Instantiation problems encountered while loading configuration profile. "+e.getMessage());
+		} catch (IllegalAccessException e) {
+			throw new TerminationException("ERROR: Instantiation problems encountered while loading configuration profile. "+e.getMessage());
+		} catch (ClassNotFoundException e) {
+			throw new TerminationException("ERROR: Instantiation problems encountered while loading configuration profile. "+e.getMessage());
+		}
+		
+		if (!isProfileVersionValid()) {
+			System.out.println("\nERROR: Selected profile \"" + activeProfile.getProfileName()
+					+ "\" has a mismatching or no version (required: \""+getVersionNumber()+"\").\n" +
+							"  Consider upgrading the profile by transfering the relevant parts to an auto-generated profile or selecting a different profile.\n");
+			throw new TerminationException("");
+		}
+	}
+	//TODO: DUPLICATED IN T3D
+	private boolean isProfileVersionValid() {
+		if (activeProfile.getProfileVersion() != null && activeProfile.getProfileVersion().equals(getVersionNumber())){
+			return true;
+		} else {
+			return false;
+		}
+	}
+	//TODO: DUPLICATED IN T3D
+	private void selectLogLevel(String logLevel) throws TerminationException{
+		boolean selected = false;
+		String possibleValues ="";
+		for (LogLevel l : LogLevel.values()){
+			if (l.toString().equals(logLevel)){
+				setLogLevel(l);
+				selected = true;
+				System.out.println("Selected log level \""+logLevel+"\"");
+			}
+			if (!l.toString().equals("FIXME") && !l.toString().equals("DEBUG"))
+			possibleValues+=l.toString()+", ";
+		}
+		if (!selected){
+			System.out.println("\nERROR: No valid log level provided! Possible values are (in ascending inclusive order): "+ possibleValues.substring(0,possibleValues.length()-2)+".");
+			throw new TerminationException("");
+		}
+		
+	}
+	
+
+//	// --------------------------------------------------------------------------
+//	//TODO: should be obsolete now?
+//	List<String> findTTCN3Resources(String directory) {
+//		List<String> files = new LinkedList<String>();
+//
+//		File f = new File(directory);
+//
+//		File[] fileNames = f.listFiles(new FileFilter() {
+//			public boolean accept(File pathname) {
+//				if (pathname.getPath().endsWith(".ttcn3")
+//						|| pathname.getPath().endsWith(".ttcn")
+//						|| pathname.getPath().endsWith(".3mp"))
+//					return true;
+//				return false;
+//			}
+//		});
+//
+//		for (int i = 0; i < fileNames.length; i++) {
+//			files.add(fileNames[i].getPath());
+//		}
+//
+//		File[] directories = f.listFiles(new FileFilter() {
+//			public boolean accept(File pathname) {
+//				if (pathname.isDirectory())
+//					return true;
+//				return false;
+//			}
+//		});
+//
+//		if (T3Q.activeProfile.isSettingRecursiveProcessing()) {
+//			for (int i = 0; i < directories.length; i++) {
+//				files.addAll(findTTCN3Resources(directories[i].getPath()));
+//			}
+//		}
+//
+//		return files;
+//	}
+
+	// --------------------------------------------------------------------------
+	//TODO: DUPLICATE IN T3D
+	private TTCN3Analyzer analyzeFile(String filename) {
+		TTCN3AnalyzerFlyweightFactory analyzerFactory = TTCN3AnalyzerFlyweightFactory
+				.getInstance();
+		analyzerFactory.setStandaloneUsage(true);
+		String code = MiscTools.readFile(filename);
+		
+		int loc = MiscTools.getLOC(filename);
+		linesOfCodeMap.put(filename, loc);
+		totalLoc += loc;
+
+		System.out.println("  Parsing file: " + filename + " (LOC: "
+				+ linesOfCodeMap.get(filename) + ") ...");
+		long startTime = System.currentTimeMillis();
+
+		TTCN3Analyzer analyzer = analyzerFactory.getTTCN3Analyzer(filename,
+				code);
+		try {
+			analyzer.analyze();
+		} catch (MismatchedTokenException e) {
+			e.printStackTrace();
+		} catch (RecognitionException e) {
+			e.printStackTrace();
+		} catch (TokenStreamException e) {
+			e.printStackTrace();
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		long endTime = System.currentTimeMillis();
+		long elapsed = endTime - startTime;
+		double elapsedMinutes = ((double) elapsed) / 1000.0 / 60.0;
+
+		System.out.println("    ...done in " + elapsed + "ms ("
+				+ MiscTools.doubleToString(elapsedMinutes) + " minutes).");
+
+		return analyzer;
+	}
+
+	// --------------------------------------------------------------------------
+	//TODO: DUPLICATED IN T3D
+	public static void setVersionNumber(String versionNumber) {
+		T3Q.versionNumber = versionNumber;
+	}
+	//TODO: DUPLICATED IN T3D
+	public static String getVersionNumber() {
+		return versionNumber;
+	}
+
+	public static void main(String[] args) {
+		T3Q tool = new T3Q();
+		tool.run(args);
+	}
+	//TODO: DUPLICATED IN T3D
+	public void setConfigurationFilename(String configurationFilename) {
+		this.configurationFilename = configurationFilename;
+	}
+	//TODO: DUPLICATED IN T3D
+	public String getConfigurationFilename() {
+		return configurationFilename;
+	}
+	//TODO: DUPLICATED IN T3D
+	public static void setLogLevel(LogLevel logLevel) {
+		T3Q.logLevel = logLevel;
+	}
+	//TODO: DUPLICATED IN T3D
+	public static LogLevel getLogLevel() {
+		return logLevel;
+	}
+	//TODO: DUPLICATED IN T3D
+	public void setSelectedProfileName(String selectedProfileName) {
+		this.selectedProfileName = selectedProfileName;
+	}
+	//TODO: DUPLICATED IN T3D
+	public String getSelectedProfileName() {
+		return selectedProfileName;
+	}
+
+	public void setFormattingEnabled(boolean formattingEnabled) {
+		this.formattingEnabled = formattingEnabled;
+	}
+	
+	public boolean isFormattingEnabled() {
+		return formattingEnabled;
+	}
+
+	public void setGenerateNewConfiguration(boolean generateNewConfiguration) {
+		this.generateNewConfiguration = generateNewConfiguration;
+	}
+
+	public boolean isGenerateNewConfiguration() {
+		return generateNewConfiguration;
+	}
+
+	public void setDestinationPath(String destinationPath) {
+		this.destinationPath = destinationPath;
+	}
+
+	public String getDestinationPath() {
+		return destinationPath;
+	}
+
+	public static void setBuildStamp(String buildStamp) {
+		T3Q.buildStamp = buildStamp;
+	}
+
+	public static String getBuildStamp() {
+		return buildStamp;
+	}
+
+}
Index: /trunk/t3q/src/org/etsi/t3q/T3QMT.java
===================================================================
--- /trunk/t3q/src/org/etsi/t3q/T3QMT.java	(revision 7)
+++ /trunk/t3q/src/org/etsi/t3q/T3QMT.java	(revision 7)
@@ -0,0 +1,539 @@
+package org.etsi.t3q;
+
+import java.io.File;
+import java.io.FileFilter;
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Stack;
+
+import org.etsi.t3q.config.T3QConfig;
+import org.etsi.t3q.exceptions.TTCN3BehaviorException;
+import org.etsi.t3q.exceptions.TTCN3ParserException;
+import org.etsi.t3q.visitor.T3QVisitor;
+import org.etsi.common.MiscTools;
+import org.etsi.common.configuration.ConfigTools;
+import org.etsi.common.configuration.ConfigurationProfile;
+import org.etsi.common.configuration.ToolConfiguration;
+
+import antlr.MismatchedTokenException;
+import antlr.RecognitionException;
+import antlr.TokenStreamException;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.LocationAST;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.TTCN3Analyzer;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.TTCN3AnalyzerFlyweightFactory;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.TTCN3FormatterTreeParser;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.TTCN3Parser;
+import de.ugoe.cs.swe.trex.core.formatter.TTCN3Formatter;
+import de.ugoe.cs.swe.trex.core.formatter.TTCN3FormatterParameters;
+
+public class T3QMT {
+
+	//TODO: a largely deprecated multithreaded version of T3Q. 
+	//TODO: transfer the relevant concepts to the current version of T3Q
+	
+	private static String versionNumber = "v0.1.1";
+	public static ToolConfiguration config = null;
+	public static ConfigurationProfile activeProfile = null;
+	private HashMap<String, String> argsMap = new HashMap<String, String>();
+	private String targetPath = null;
+	private HashMap<String, Integer> linesOfCodeMap = new HashMap<String, Integer>();
+	private int totalLoc = 0;
+
+	//private String outputPathArg = null;
+
+	public T3QMT() {
+	}
+
+	// --------------------------------------------------------------------------
+
+	public void showHelp() {
+		System.out.println("Help:");
+		System.out.println("  t3q[.cmd/.sh] [options] path");
+		System.out.println("");
+		System.out.println("  Options (specify in any order): ");
+		System.out.println("    --help ");
+		System.out.println("    --profile [profilename] ");
+		//System.out.println("    --output [path] ");
+		System.out.println("");
+	}
+
+	// --------------------------------------------------------------------------
+
+	public void run(String[] args) {
+		Runtime runtime = Runtime.getRuntime();
+		int maxThreads = runtime.availableProcessors();
+		System.out.println("T3Q " + versionNumber);
+		System.out.println("  TTCN-3 version supported: " + TTCN3Parser.getSupportedVersion());
+		System.out.println("  Number of processors: " + maxThreads);
+		System.out.println("==========================================");
+        System.out.println();
+
+		
+		if (handleCommandLineArguments(args) == false)
+			return;
+
+		if (argsMap.get("profile") != null) {
+			loadConfig(argsMap.get("profile"));
+		} else {
+			loadConfig(null);
+		}
+
+		File path = new File(targetPath);
+		if (!path.isDirectory()) {
+			System.out
+					.println("Error: specified argument is *not* a directory!");
+			return;
+		}
+		
+		if (T3QMT.activeProfile.isSettingRecursiveProcessing()){
+			System.out.println("Collecting ttcn3 files recursively in \""
+					+ targetPath + "\" ...");
+		} else {
+			System.out.println("Collecting ttcn3 files non-recursively in \""
+					+ targetPath + "\" ...");
+		}
+		List<String> ttcn3Resources = findTTCN3Resources(targetPath);
+
+		long startTime = System.currentTimeMillis();
+
+		try {
+			System.out.println("Parsing files...");
+			TTCN3AnalyzerFlyweightFactory
+			.getInstance();
+			final Stack<Thread> threadStack = new Stack<Thread>();
+			
+			for (int j = 0; j < ttcn3Resources.size(); j++) {
+				final int i = j;
+				final String resourcePath = ttcn3Resources.get(i);
+								
+				Thread analysisThread = new Thread(new Runnable() {
+
+					@Override
+					public void run() {
+						TTCN3AnalyzerFlyweightFactory analyzerFactory = TTCN3AnalyzerFlyweightFactory
+						.getInstance();
+
+						analyzeFile(resourcePath);
+						TTCN3Analyzer analyzer = analyzerFactory.getTTCN3Analyzer(resourcePath);
+
+						if (analyzer.getExceptions().size() > 0){
+							
+							try {
+								throw new TTCN3ParserException("Error while parsing file "
+										+ analyzer.getFilename());
+							} catch (TTCN3ParserException e) {
+								System.err.println(e.getLocalizedMessage());
+								for (int i1 = 0; i1 < analyzer.getExceptions().size(); i1++) {
+									System.err.println("Line "
+											+ analyzer.getExceptions().get(i1).getLine() + ": "
+											+ analyzer.getExceptions().get(i1).getMessage());
+								}
+							}
+						}
+					}
+				});
+				threadStack.push(analysisThread);
+			}
+			TTCN3Analyzer analyzer = null;
+
+			Runnable parserRunnable = new Runnable() {
+					@Override
+					public void run() {
+						while (!threadStack.isEmpty()) {
+							Thread analysisThread = threadStack.pop();
+							analysisThread.start();
+							try {
+								analysisThread.join();
+							} catch (InterruptedException e) {
+								e.printStackTrace();
+							}
+						}
+					}
+			};
+			
+			ArrayList<Thread> parserThreadList = new ArrayList<Thread>();
+			for (int i=0; i < maxThreads; i++) {
+				Thread parserThread = new Thread(parserRunnable);
+				parserThreadList.add(parserThread);
+				parserThread.start();
+			}
+
+			for (int i=0; i < maxThreads; i++) {
+				try {
+					parserThreadList.get(i).join();
+				} catch (InterruptedException e) {
+					e.printStackTrace();
+				}
+			}			
+			
+			long endTime = System.currentTimeMillis();
+			long elapsed = endTime - startTime;
+			double elapsedMinutes = ((double) elapsed) / 1000.0 / 60.0;
+			System.out.println("done parsing in " + elapsed + "ms ("
+					+ doubleToString2(elapsedMinutes) + " minutes).");
+			
+			if (T3QMT.activeProfile.isStatShowLOC()){
+				System.out.println("Total lines of code parsed: " + totalLoc);
+			}
+			
+			TTCN3AnalyzerFlyweightFactory analyzerFactory = TTCN3AnalyzerFlyweightFactory
+					.getInstance();
+
+			System.out.println("Postprocessing...");
+			startTime = System.currentTimeMillis();
+			analyzerFactory.postProcess();
+			endTime = System.currentTimeMillis();
+			elapsed = endTime - startTime;
+			elapsedMinutes = ((double) elapsed) / 1000.0 / 60.0;
+			System.out.println("Done processing in " + elapsed + "ms ("
+					+ doubleToString2(elapsedMinutes) + " minutes).");
+			startTime = System.currentTimeMillis();
+			
+			System.out.println("==========================================");
+			for (int i = 0; i < ttcn3Resources.size(); i++) {
+				analyzer = analyzerFactory.getTTCN3Analyzer(ttcn3Resources
+						.get(i));
+				
+				T3QVisitor visitor = new T3QVisitor();
+				System.out.println("Analyzing: " + analyzer.getFilename());
+				visitor.setFilename(analyzer.getFilename());
+				visitor.acceptDFS((LocationAST) analyzer.getParser().getAST());
+
+			}
+			endTime = System.currentTimeMillis();
+			elapsed = endTime - startTime;
+			elapsedMinutes = ((double) elapsed) / 1000.0 / 60.0;
+			System.out.println("Quality checks finished in " + elapsed + "ms ("
+					+ doubleToString2(elapsedMinutes) + " minutes).");
+
+			analyzer = handleFormatter(ttcn3Resources, analyzer,
+					analyzerFactory);
+			if (T3QMT.activeProfile.isStatShowLOC()){
+				System.out.println("Total lines of code processed: " + totalLoc);
+			}
+
+		} catch (TTCN3BehaviorException e) {
+			System.err.println(e.getLocalizedMessage());
+		}
+//		} catch (TTCN3ParserException e) {
+//  			//Default setting where processing is terminated in the event of a parsing error
+//			System.err.println(e.getLocalizedMessage());
+//			for (int i = 0; i < analyzer.getExceptions().size(); i++) {
+//				System.err.println("Line "
+//						+ analyzer.getExceptions().get(i).getLine() + ": "
+//						+ analyzer.getExceptions().get(i).getMessage());
+//			}
+//			//TODO: Isolate different steps and implement a recovery mechanism:
+//
+//		}
+
+	}
+
+	private TTCN3Analyzer handleFormatter(List<String> ttcn3Resources,
+			TTCN3Analyzer analyzer,
+			TTCN3AnalyzerFlyweightFactory analyzerFactory) {
+		long startTime;
+		long endTime;
+		long elapsed;
+		double elapsedMinutes;
+		if (false) {
+			//TODO: consider ways to avoid reparsing (performing the comment collection during the first parse)
+			System.out
+					.println("==========================================");
+			System.out.println("Formatting Code...");
+			startTime = System.currentTimeMillis();
+
+			TTCN3Formatter formatter = new TTCN3Formatter();
+
+			for (int i = 0; i < ttcn3Resources.size(); i++) {
+				analyzer = analyzerFactory.getTTCN3Analyzer(ttcn3Resources
+						.get(i));
+				System.out.println("  Formatting file: "
+						+ analyzer.getFilename());
+//				try {
+
+					String resourcePath = ttcn3Resources.get(i);
+					
+					String source = MiscTools.readFile(resourcePath);
+					
+//					String formatted = formatter.formatTTCN3Source(source, T3QMT.activeProfile
+//							.getFormattingParameters());
+					
+					//TODO: consider a separate output handler 
+					//calculate the target path for the current resource
+					String inputPath = new File(targetPath).getPath(); //strips the slash at the end
+					String subPath = resourcePath.substring(inputPath.length()); 
+//					String outputPathArg = T3QMT.activeProfile.getPathFormattedOutputPath();
+//					String outputPath = outputPathArg + subPath;
+					
+//					System.out.println("****************************");
+//					System.out.println("InputPath: "+inputPath);
+//					System.out.println("ResourcePath: "+resourcePath);
+//					System.out.println("SubPath: "+subPath);
+//					System.out.println("OutputPath: "+outputPath);
+//					System.out.println("****************************");
+					
+//					MiscTools.writeFile(outputPath, formatted);
+
+//				} catch (RecognitionException e1) {
+//					System.err.println("Recognition exception:");
+//					System.err.println(e1.getLocalizedMessage());
+//				} catch (TokenStreamException e) {
+//					System.err.println("Token stream exception:");
+//					e.printStackTrace();
+//				} catch (Exception e) {
+//					System.err.println("Exception:");
+//					e.printStackTrace();
+//				}
+
+			}
+			endTime = System.currentTimeMillis();
+			elapsed = endTime - startTime;
+			elapsedMinutes = ((double) elapsed) / 1000.0 / 60.0;
+			System.out.println("Code formatting finished in " + elapsed
+					+ "ms (" + doubleToString2(elapsedMinutes)
+					+ " minutes).");
+
+		}
+		return analyzer;
+	}
+
+	private boolean handleCommandLineArguments(String[] args) {
+		if (args.length < 1) {
+			System.out.println("Error: too few command line arguments...");
+			System.out.println("");
+			showHelp();
+			return false;
+		}
+		parseCommandLineArguments(args);
+		if (argsMap.get("help") != null) {
+			showHelp();
+			return false;
+		}
+
+		return true;
+	}
+
+	// --------------------------------------------------------------------------
+
+	private void parseCommandLineArguments(String[] args) {
+		String key = "";
+		String value = "";
+		targetPath = "";
+
+		boolean lastKey = false;
+		for (int i = 0; i < args.length; i++) {
+			if (args[i].startsWith("--")) {
+				key = args[i].replaceAll("--", "").toLowerCase();
+
+				if (lastKey) {
+					argsMap.put(key, "true");
+					key = null;
+					value = null;
+					lastKey = false;
+				}
+
+				lastKey = true;
+			} else {
+				value = args[i];
+				if ((key != null) && (argsMap.get(key) == null)
+						&& (key.length() > 0)) {
+					argsMap.put(key, value);
+					key = null;
+					value = null;
+				} else {
+					targetPath += value + " ";
+				}
+				lastKey = false;
+			}
+		}
+
+		if (key != null) {
+			if ((argsMap.get(key) == null) && (key.length() > 0)) {
+				argsMap.put(key, "true");
+			}
+		}
+		targetPath = targetPath.trim();
+	}
+
+	// --------------------------------------------------------------------------
+
+	private void loadConfig(String specifiedProfile) {
+		boolean newConfiguration = false;
+		System.out.println("Loading configuration ...");
+		String configFile = null;
+//		String configFile = ConfigTools.findConfig();
+		if (configFile != null) {
+			System.out.println("  Loading XML Configuration: " + configFile);
+//			config = ConfigTools.readConfig(configFile);
+		} else {
+//			System.out
+//					.println("  No existing configuration. Creating new default configuration: "
+//							+ ConfigTools.getDefaultConfigurationFilePath());
+			config = new T3QConfig();
+//			ConfigurationProfile qcProfile = new ConfigurationProfile();
+//			qcProfile.setProfileName("exampleProfile");
+//			config.setDefaultConfigurationProfile("all");
+//			if (config.getConfigurationProfiles() == null) {
+//				ArrayList<ConfigurationProfile> qcProfiles = new ArrayList<ConfigurationProfile>();
+//				config.setConfigurationProfiles(qcProfiles);
+//			}
+//			config.getConfigurationProfiles().add(qcProfile);
+////			ConfigTools.writeConfig(config, ConfigTools
+////					.getDefaultConfigurationFilePath());
+//			newConfiguration = true;
+		}
+//		ConfigurationProfile allEnabledProfile = new ConfigurationProfile();
+//		allEnabledProfile.setProfileName("all");
+//		config.getConfigurationProfiles().add(allEnabledProfile);
+
+		if (newConfiguration) {
+			System.out.println("  Auto-selecting 'all' profile.");
+//			activeProfile = allEnabledProfile;
+		} else {
+			if (specifiedProfile != null)
+				activateProfile(specifiedProfile);
+			if (activeProfile == null) {
+				if (specifiedProfile != null) {
+					System.out
+							.println("  Profile '"
+									+ specifiedProfile
+									+ "' not found in configuration. Trying default profile '"
+									+ config.getDefaultConfigurationProfile()
+									+ "'.");
+				} else {
+					System.out
+							.println("  No Profile specified. Trying default profile '"
+									+ config.getDefaultConfigurationProfile()
+									+ "'.");
+				}
+				specifiedProfile = config.getDefaultConfigurationProfile();
+				activateProfile(specifiedProfile);
+
+			}
+			if (activeProfile == null) {
+				System.out
+						.println("  Profile '"
+								+ specifiedProfile
+								+ "' not found in configuration. Auto-selecting 'all' profile.");
+//				activeProfile = allEnabledProfile;
+			}
+		}
+	}
+
+	// --------------------------------------------------------------------------
+
+	private void activateProfile(String specifiedProfile) {
+		for (int i = 0; i < config.getConfigurationProfiles().size(); i++) {
+			ConfigurationProfile qualityProfile = config
+					.getConfigurationProfiles().get(i);
+			if (qualityProfile.getProfileName().toLowerCase().equals(
+					specifiedProfile.toLowerCase())) {
+				System.out.println("  Selecting '" + specifiedProfile
+						+ "' profile.");
+				activeProfile = qualityProfile;
+			}
+		}
+	}
+
+	// --------------------------------------------------------------------------
+
+	List<String> findTTCN3Resources(String directory) {
+		List<String> files = new LinkedList<String>();
+
+		File f = new File(directory);
+
+		File[] fileNames = f.listFiles(new FileFilter() {
+			public boolean accept(File pathname) {
+				if (pathname.getPath().endsWith(".ttcn3")
+						|| pathname.getPath().endsWith(".ttcn")
+						|| pathname.getPath().endsWith(".3mp"))
+					return true;
+				return false;
+			}
+		});
+
+		for (int i = 0; i < fileNames.length; i++) {
+			files.add(fileNames[i].getPath());
+		}
+
+		File[] directories = f.listFiles(new FileFilter() {
+			public boolean accept(File pathname) {
+				if (pathname.isDirectory())
+					return true;
+				return false;
+			}
+		});
+
+		if (T3QMT.activeProfile.isSettingRecursiveProcessing()){
+			for (int i = 0; i < directories.length; i++) {
+				files.addAll(findTTCN3Resources(directories[i].getPath()));
+			}
+		}
+
+		return files;
+	}
+
+	// --------------------------------------------------------------------------
+
+	private TTCN3Analyzer analyzeFile(String filename) {
+		TTCN3AnalyzerFlyweightFactory analyzerFactory = TTCN3AnalyzerFlyweightFactory
+				.getInstance();
+		analyzerFactory.setStandaloneUsage(true);
+		String code = MiscTools.readFile(filename);
+
+		int index = 0;
+		int loc = 0;
+		while (index != -1) {
+			if (index == 0)
+				index = code.indexOf("\n", index);
+			else
+				index = code.indexOf("\n", index+1);
+			loc++;
+		}
+		linesOfCodeMap.put(filename, loc);
+		totalLoc += loc;		
+
+		System.out.println("  Parsing file: " + filename + " (LOC: " + linesOfCodeMap.get(filename) + ") ...");
+		long startTime = System.currentTimeMillis();
+		
+		TTCN3Analyzer analyzer = analyzerFactory.getTTCN3Analyzer(filename,
+				code);
+		try {
+			analyzer.analyze();
+		} catch (MismatchedTokenException e) {
+			e.printStackTrace();
+		} catch (RecognitionException e) {
+			e.printStackTrace();
+		} catch (TokenStreamException e) {
+			e.printStackTrace();
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		long endTime = System.currentTimeMillis();
+		long elapsed = endTime-startTime;
+		double elapsedMinutes = ((double) elapsed) / 1000.0 / 60.0;
+		
+		System.out.println("    ...done " + filename + " in " + elapsed + "ms (" + doubleToString2(elapsedMinutes) + " minutes).");
+		
+		return analyzer;
+	}
+
+	// --------------------------------------------------------------------------
+	public static String doubleToString2(double d) {
+		DecimalFormat fmt = new DecimalFormat("0.00");
+		String string = fmt.format(d);
+		return string;
+	}
+
+	// --------------------------------------------------------------------------
+
+	public static void main(String[] args) {
+		T3QMT tool = new T3QMT();
+		tool.run(args);
+	}
+
+}
Index: /trunk/t3q/src/org/etsi/t3q/config/NamingConventionsConfig.java
===================================================================
--- /trunk/t3q/src/org/etsi/t3q/config/NamingConventionsConfig.java	(revision 7)
+++ /trunk/t3q/src/org/etsi/t3q/config/NamingConventionsConfig.java	(revision 7)
@@ -0,0 +1,268 @@
+package org.etsi.t3q.config;
+
+public class NamingConventionsConfig {
+
+	private String moduleRegExp = "[A-Z].*";
+	private String groupRegExp = "[a-z].*";
+	private String dataTypeRegExp = "[A-Z].*";
+	private String messageTemplateRegExp = "m_[a-z].*";
+	private String messageTemplateWithWildcardsRegExp = "mw_[a-z].*";
+	private String derivedMessageTemplateRegExp = "md_[a-z].*";
+	private String derivedMessageTemplateWithWildcardsRegExp = "mdw_[a-z].*";
+	private String stf160sendTemplateRegExp = "cs_[a-z].*";
+	private String stf160receiveTemplateRegExp = "cr_[a-z].*";
+	private String derivedStf160sendTemplateRegExp = "dcs_[a-z].*";
+	private String derivedStf160receiveTemplateRegExp = "dcr_[a-z].*";
+	private String signatureTemplateRegExp = "s_[a-z].*";
+	private String portInstanceRegExp = "[a-z].*";
+	private String componentInstanceRegExp = "[a-z].*";
+	private String constantRegExp = "c_[a-z].*";
+	private String localConstantRegExp = "cl_[a-z].*";
+	private String extConstantRegExp = "cx_[a-z].*";
+	private String functionRegExp = "f_[a-z].*";
+	private String extFunctionRegExp = "fx_[a-z].*";
+	private String altstepRegExp = "a_[a-z].*";
+	private String testcaseRegExp = "TC_.*";
+	private String variableRegExp = "v_[a-z].*";
+	private String componentVariableRegExp = "vc_[a-z].*";
+	private String timerRegExp = "t_[a-z].*";
+	private String componentTimerRegExp = "tc_[a-z].*";
+	private String moduleParameterRegExp = "[A-Z][A-Z_1-9]*";
+	private String formalParameterRegExp = "p_[a-z].*";
+	private String enumeratedValueRegExp = "e_[a-z].*";
+
+	public String getModuleRegExp() {
+		return moduleRegExp;
+	}
+
+	public void setModuleRegExp(String moduleRegExp) {
+		this.moduleRegExp = moduleRegExp;
+	}
+
+	public String getGroupRegExp() {
+		return groupRegExp;
+	}
+
+	public void setGroupRegExp(String groupRegExp) {
+		this.groupRegExp = groupRegExp;
+	}
+
+	public String getDataTypeRegExp() {
+		return dataTypeRegExp;
+	}
+
+	public void setDataTypeRegExp(String dataTypeRegExp) {
+		this.dataTypeRegExp = dataTypeRegExp;
+	}
+
+	public String getMessageTemplateRegExp() {
+		return messageTemplateRegExp;
+	}
+
+	public void setMessageTemplateRegExp(String messageTemplateRegExp) {
+		this.messageTemplateRegExp = messageTemplateRegExp;
+	}
+
+	public String getMessageTemplateWithWildcardsRegExp() {
+		return messageTemplateWithWildcardsRegExp;
+	}
+
+	public void setMessageTemplateWithWildcardsRegExp(
+			String messageTemplateWithWildcardsRegExp) {
+		this.messageTemplateWithWildcardsRegExp = messageTemplateWithWildcardsRegExp;
+	}
+
+	public String getSignatureTemplateRegExp() {
+		return signatureTemplateRegExp;
+	}
+
+	public void setSignatureTemplateRegExp(String signatureTemplateRegExp) {
+		this.signatureTemplateRegExp = signatureTemplateRegExp;
+	}
+
+	public String getPortInstanceRegExp() {
+		return portInstanceRegExp;
+	}
+
+	public void setPortInstanceRegExp(String portInstanceRegExp) {
+		this.portInstanceRegExp = portInstanceRegExp;
+	}
+
+	public String getComponentInstanceRegExp() {
+		return componentInstanceRegExp;
+	}
+
+	public void setComponentInstanceRegExp(String componentInstanceRegExp) {
+		this.componentInstanceRegExp = componentInstanceRegExp;
+	}
+
+	public String getConstantRegExp() {
+		return constantRegExp;
+	}
+
+	public void setConstantRegExp(String constantRegExp) {
+		this.constantRegExp = constantRegExp;
+	}
+
+	public String getExtConstantRegExp() {
+		return extConstantRegExp;
+	}
+
+	public void setExtConstantRegExp(String extConstantRegExp) {
+		this.extConstantRegExp = extConstantRegExp;
+	}
+
+	public String getAltstepRegExp() {
+		return altstepRegExp;
+	}
+
+	public void setAltstepRegExp(String altstepRegExp) {
+		this.altstepRegExp = altstepRegExp;
+	}
+
+	public String getTestcaseRegExp() {
+		return testcaseRegExp;
+	}
+
+	public void setTestcaseRegExp(String testcaseRegExp) {
+		this.testcaseRegExp = testcaseRegExp;
+	}
+
+	public String getVariableRegExp() {
+		return variableRegExp;
+	}
+
+	public void setVariableRegExp(String variableRegExp) {
+		this.variableRegExp = variableRegExp;
+	}
+
+	public String getComponentVariableRegExp() {
+		return componentVariableRegExp;
+	}
+
+	public void setComponentVariableRegExp(String componentVariableRegExp) {
+		this.componentVariableRegExp = componentVariableRegExp;
+	}
+
+	public String getTimerRegExp() {
+		return timerRegExp;
+	}
+
+	public void setTimerRegExp(String timerRegExp) {
+		this.timerRegExp = timerRegExp;
+	}
+
+	public String getComponentTimerRegExp() {
+		return componentTimerRegExp;
+	}
+
+	public void setComponentTimerRegExp(String componentTimerRegExp) {
+		this.componentTimerRegExp = componentTimerRegExp;
+	}
+
+	public String getModuleParameterRegExp() {
+		return moduleParameterRegExp;
+	}
+
+	public void setModuleParameterRegExp(String moduleParameterRegExp) {
+		this.moduleParameterRegExp = moduleParameterRegExp;
+	}
+
+	public String getFormalParameterRegExp() {
+		return formalParameterRegExp;
+	}
+
+	public void setFormalParameterRegExp(String formalParameterRegExp) {
+		this.formalParameterRegExp = formalParameterRegExp;
+	}
+
+	public String getEnumeratedValueRegExp() {
+		return enumeratedValueRegExp;
+	}
+
+	public void setEnumeratedValueRegExp(String enumeratedValueRegExp) {
+		this.enumeratedValueRegExp = enumeratedValueRegExp;
+	}
+
+	public void setFunctionRegExp(String functionRegExp) {
+		this.functionRegExp = functionRegExp;
+	}
+
+	public void setFunctionsRegExp(String functionRegExp) {
+		this.functionRegExp = functionRegExp;
+	}
+
+	public String getFunctionRegExp() {
+		return functionRegExp;
+	}
+
+	public void setExtFunctionRegExp(String extFunctionRegExp) {
+		this.extFunctionRegExp = extFunctionRegExp;
+	}
+
+	public String getExtFunctionRegExp() {
+		return extFunctionRegExp;
+	}
+
+	public void setLocalConstantRegExp(String localConstantRegExp) {
+		this.localConstantRegExp = localConstantRegExp;
+	}
+
+	public String getLocalConstantRegExp() {
+		return localConstantRegExp;
+	}
+
+	public void setDerivedMessageTemplateRegExp(
+			String derivedMessageTemplateRegExp) {
+		this.derivedMessageTemplateRegExp = derivedMessageTemplateRegExp;
+	}
+
+	public String getDerivedMessageTemplateRegExp() {
+		return derivedMessageTemplateRegExp;
+	}
+
+	public void setDerivedMeessageTeemplateWithWildcardsRegExp(
+			String derivedMessageTemplateWithWildcardsRegExp) {
+		this.derivedMessageTemplateWithWildcardsRegExp = derivedMessageTemplateWithWildcardsRegExp;
+	}
+
+	public String getDerivedMessageTemplateWithWildcardsRegExp() {
+		return derivedMessageTemplateWithWildcardsRegExp;
+	}
+
+	public void setStf160sendTemplateRegExp(String stf160sendTemplateRegExp) {
+		this.stf160sendTemplateRegExp = stf160sendTemplateRegExp;
+	}
+
+	public String getStf160sendTemplateRegExp() {
+		return stf160sendTemplateRegExp;
+	}
+
+	public void setStf160receiveTemplateRegExp(
+			String stf160receiveTemplateRegExp) {
+		this.stf160receiveTemplateRegExp = stf160receiveTemplateRegExp;
+	}
+
+	public String getStf160receiveTemplateRegExp() {
+		return stf160receiveTemplateRegExp;
+	}
+
+	public void setDerivedStf160sendTemplateRegExp(
+			String derivedStf160sendTemplateRegExp) {
+		this.derivedStf160sendTemplateRegExp = derivedStf160sendTemplateRegExp;
+	}
+
+	public String getDerivedStf160sendTemplateRegExp() {
+		return derivedStf160sendTemplateRegExp;
+	}
+
+	public void setDerivedStf160receiveTemplateRegExp(
+			String derivedStf160receiveTemplateRegExp) {
+		this.derivedStf160receiveTemplateRegExp = derivedStf160receiveTemplateRegExp;
+	}
+
+	public String getDerivedStf160receiveTemplateRegExp() {
+		return derivedStf160receiveTemplateRegExp;
+	}
+
+}
Index: /trunk/t3q/src/org/etsi/t3q/config/QualityCheckProfile.java
===================================================================
--- /trunk/t3q/src/org/etsi/t3q/config/QualityCheckProfile.java	(revision 7)
+++ /trunk/t3q/src/org/etsi/t3q/config/QualityCheckProfile.java	(revision 7)
@@ -0,0 +1,539 @@
+package org.etsi.t3q.config;
+
+
+import org.etsi.common.configuration.ConfigurationProfile;
+
+import de.ugoe.cs.swe.trex.core.formatter.TTCN3FormatterParameters;
+
+public class QualityCheckProfile extends ConfigurationProfile {
+	private boolean featureListImportedModuleNames = false;
+	private boolean featureListImportedModuleFileNames = false;
+	private boolean featureListImportingModuleNames = false;
+	private boolean featureListImportingModuleFileNames = false;
+
+	private boolean checkLogItemFormat = true;
+	private boolean checkLogStatementFormat = true;
+	private boolean processSubsequentLogStatementsAsOne = true;
+	private String logFormatRegExp = "[\\*]{3}\\s([fta]_[a-zA-Z0-9]+?):\\s(INFO|WARNING|ERROR|PASS|FAIL|INCONC|TIMEOUT):\\s.*?[\\*]{3}";
+
+	private boolean checkExternalFunctionInvocationPrecededByLogStatement = true;
+	private boolean checkInconcOrFailSetVerdictPrecededByLog = true;
+	private boolean checkNoLabelsOrGotoStatements = true;
+	private boolean checkNoNestedAltStatements = true;
+	private int maximumAllowedNestingDepth = 0;
+	private boolean checkNoPermutationKeyword = true;
+	private boolean checkNoAnyTypeKeyword = true;
+	private boolean checkNoModifiedTemplateOfModifiedTemplate = true;
+
+	private boolean checkNoAllKeywordInPortDefinitions = true;
+	private boolean checkImportsComeFirst = true;
+	private boolean checkLocalDefinitionsComeFirst = true;
+	private String[] localDefinitionTypes = {"VarInstance", "ConstDef", "TimerInstance", "PortInstance"};
+	private boolean checkTypeDefOrderInGroup = true;
+	private boolean checkPortMessageGrouping = true;
+
+	private boolean checkNoDuplicatedModuleDefinitionIdentifiers = true;
+	private boolean checkZeroReferencedModuleDefinitions = true;
+	private String zeroReferencedModuleDefinitionsExcludedRegExp = "";
+	private boolean checkNoInlineTemplates = true;
+	private boolean checkNoOverSpecificRunsOnClauses = true;
+	boolean recursionInCheckNoOverSpecificRunsOnClauses = true;
+	private boolean checkNoUnusedImports = true;
+	private boolean checkNoUnusedFormalParameters = true;
+	private boolean checkNoUnusedLocalDefinitions = true;
+	private boolean checkNoLiterals = true;
+
+	
+	private boolean checkTypesAndValuesModuleContainmentCheck = true;
+	private boolean checkTemplatesModuleContainmentCheck = true;
+	private boolean checkFunctionsModuleContainmentCheck = true;
+	private boolean checkFunctionsModuleContainmentCheckAllowExtFunction = true;
+	private boolean checkTestcasesModuleContainmentCheck = true;
+	private boolean checkModuleParamsModuleContainmentCheck = true;
+	private boolean checkInterfaceModuleContainmentCheck = true;
+	private boolean checkTestSystemModuleContainmentCheck = true;
+	private boolean checkTestControlModuleContainmentCheck = true;
+
+	private boolean checkTypesAndValuesModuleImportsLibNames = true;
+	private String typesAndValuesImportsLibNamesRegExp = ".*?LibCommon.*";
+	private String typesAndValuesImportsLibNamesExcludedRegExp = "(.*?LibCommon.*)";
+	private boolean checkTestcasesModuleImportsLibCommon_Sync = true;
+
+	private boolean checkModuleSize = true;
+	private int maximumAllowedModuleSizeInBytes = 10000;
+
+	private boolean checkNoTabs = true;
+	
+	private boolean checkNamingConventions = true;
+	private NamingConventionsConfig namingConventionsConfig = new NamingConventionsConfig();
+
+//	private boolean featureCodeFormatting = false;
+	private String pathFormattedOutputPath = "FORMATTED";
+	private TTCN3FormatterParameters formattingParameters = new TTCN3FormatterParameters();
+
+	public String getLogFormatRegExp() {
+		return logFormatRegExp;
+	}
+
+	public void setLogFormatRegExp(String logFormatRegExp) {
+		this.logFormatRegExp = logFormatRegExp;
+	}
+
+	public boolean isCheckExternalFunctionInvocationPrecededByLogStatement() {
+		return checkExternalFunctionInvocationPrecededByLogStatement;
+	}
+
+	public void setCheckExternalFunctionInvocationPrecededByLogStatement(
+			boolean checkExternalFunctionInvocationPrecededByLogStatement) {
+		this.checkExternalFunctionInvocationPrecededByLogStatement = checkExternalFunctionInvocationPrecededByLogStatement;
+	}
+
+	public boolean isCheckInconcOrFailSetVerdictPrecededByLog() {
+		return checkInconcOrFailSetVerdictPrecededByLog;
+	}
+
+	public void setCheckInconcOrFailSetVerdictPrecededByLog(
+			boolean checkInconcOrFailSetVerdictPrecededByLog) {
+		this.checkInconcOrFailSetVerdictPrecededByLog = checkInconcOrFailSetVerdictPrecededByLog;
+	}
+
+	public boolean isCheckNoLabelsOrGotoStatements() {
+		return checkNoLabelsOrGotoStatements;
+	}
+
+	public void setCheckNoLabelsOrGotoStatements(
+			boolean checkNoLabelsOrGotoStatements) {
+		this.checkNoLabelsOrGotoStatements = checkNoLabelsOrGotoStatements;
+	}
+
+	public boolean isCheckNoNestedAltStatements() {
+		return checkNoNestedAltStatements;
+	}
+
+	public void setCheckNoNestedAltStatements(boolean checkNoNestedAltStatements) {
+		this.checkNoNestedAltStatements = checkNoNestedAltStatements;
+	}
+
+	public boolean isCheckNoPermutationKeyword() {
+		return checkNoPermutationKeyword;
+	}
+
+	public void setCheckNoPermutationKeyword(boolean checkNoPermutationKeyword) {
+		this.checkNoPermutationKeyword = checkNoPermutationKeyword;
+	}
+
+	public boolean isCheckNoAnyTypeKeyword() {
+		return checkNoAnyTypeKeyword;
+	}
+
+	public void setCheckNoAnyTypeKeyword(boolean checkNoAnyTypeKeyword) {
+		this.checkNoAnyTypeKeyword = checkNoAnyTypeKeyword;
+	}
+
+	public boolean isCheckNoModifiedTemplateOfModifiedTemplate() {
+		return checkNoModifiedTemplateOfModifiedTemplate;
+	}
+
+	public void setCheckNoModifiedTemplateOfModifiedTemplate(
+			boolean checkNoModifiedTemplateOfModifiedTemplate) {
+		this.checkNoModifiedTemplateOfModifiedTemplate = checkNoModifiedTemplateOfModifiedTemplate;
+	}
+
+	public boolean isCheckTypesAndValuesModuleContainmentCheck() {
+		return checkTypesAndValuesModuleContainmentCheck;
+	}
+
+	public void setCheckTypesAndValuesModuleContainmentCheck(
+			boolean checkTypesAndValuesModuleContainmentCheck) {
+		this.checkTypesAndValuesModuleContainmentCheck = checkTypesAndValuesModuleContainmentCheck;
+	}
+
+	public boolean isCheckTypesAndValuesModuleImportsLibNames() {
+		return checkTypesAndValuesModuleImportsLibNames;
+	}
+
+	public void setCheckTypesAndValuesModuleImportsLibCommon(
+			boolean checkTypesAndValuesModuleImportsLib) {
+		this.checkTypesAndValuesModuleImportsLibNames = checkTypesAndValuesModuleImportsLib;
+	}
+
+	public boolean isCheckLogItemFormat() {
+		return checkLogItemFormat;
+	}
+
+	public void setCheckLogItemFormat(boolean checkLogItemFormat) {
+		this.checkLogItemFormat = checkLogItemFormat;
+	}
+
+//	public void setFeatureCodeFormatting(boolean featureCodeFormatting) {
+//		this.featureCodeFormatting = featureCodeFormatting;
+//	}
+//
+//	public boolean isFeatureCodeFormatting() {
+//		return featureCodeFormatting;
+//	}
+
+	public void setFormattingParameters(
+			TTCN3FormatterParameters formattingParameters) {
+		this.formattingParameters = formattingParameters;
+	}
+
+	public TTCN3FormatterParameters getFormattingParameters() {
+		return formattingParameters;
+	}
+
+	public void setPathFormattedOutputPath(String pathFormattedOutputPath) {
+		this.pathFormattedOutputPath = pathFormattedOutputPath;
+	}
+
+	public String getPathFormattedOutputPath() {
+		return pathFormattedOutputPath;
+	}
+
+	public void setCheckNoAllKeywordInPortDefinitions(
+			boolean checkNoAllKeywordInPortDefinitions) {
+		this.checkNoAllKeywordInPortDefinitions = checkNoAllKeywordInPortDefinitions;
+	}
+
+	public boolean isCheckNoAllKeywordInPortDefinitions() {
+		return checkNoAllKeywordInPortDefinitions;
+	}
+
+	public void setCheckImportsComeFirst(boolean checkImportsComeFirst) {
+		this.checkImportsComeFirst = checkImportsComeFirst;
+	}
+
+	public boolean isCheckImportsComeFirst() {
+		return checkImportsComeFirst;
+	}
+
+	public void setCheckLocalDefinitionsComeFirst(boolean checkLocalDefinitionsComeFirst) {
+		this.checkLocalDefinitionsComeFirst = checkLocalDefinitionsComeFirst;
+	}
+
+	public boolean isCheckLocalDefinitionsComeFirst() {
+		return checkLocalDefinitionsComeFirst;
+	}
+
+	public void setCheckTypeDefOrderInGroup(boolean checkTypeDefOrderInGroup) {
+		this.checkTypeDefOrderInGroup = checkTypeDefOrderInGroup;
+	}
+
+	public boolean isCheckTypeDefOrderInGroup() {
+		return checkTypeDefOrderInGroup;
+	}
+
+	public void setCheckPortMessageGrouping(boolean checkPortMessageGrouping) {
+		this.checkPortMessageGrouping = checkPortMessageGrouping;
+	}
+
+	public boolean isCheckPortMessageGrouping() {
+		return checkPortMessageGrouping;
+	}
+
+	public void setCheckTemplatesModuleContainmentCheck(
+			boolean checkTemplatesModuleContainmentCheck) {
+		this.checkTemplatesModuleContainmentCheck = checkTemplatesModuleContainmentCheck;
+	}
+
+	public boolean isCheckTemplatesModuleContainmentCheck() {
+		return checkTemplatesModuleContainmentCheck;
+	}
+
+	public void setCheckFunctionsModuleContainmentCheck(
+			boolean checkFunctionsModuleContainmentCheck) {
+		this.checkFunctionsModuleContainmentCheck = checkFunctionsModuleContainmentCheck;
+	}
+
+	public boolean isCheckFunctionsModuleContainmentCheck() {
+		return checkFunctionsModuleContainmentCheck;
+	}
+
+	public void setCheckTestcasesModuleContainmentCheck(
+			boolean checkTestcasesModuleContainmentCheck) {
+		this.checkTestcasesModuleContainmentCheck = checkTestcasesModuleContainmentCheck;
+	}
+
+	public boolean isCheckTestcasesModuleContainmentCheck() {
+		return checkTestcasesModuleContainmentCheck;
+	}
+
+	public void setCheckModuleParamsModuleContainmentCheck(
+			boolean checkModuleParamsModuleContainmentCheck) {
+		this.checkModuleParamsModuleContainmentCheck = checkModuleParamsModuleContainmentCheck;
+	}
+
+	public boolean isCheckModuleParamsModuleContainmentCheck() {
+		return checkModuleParamsModuleContainmentCheck;
+	}
+
+	public void setCheckInterfaceModuleContainmentCheck(
+			boolean checkInterfaceModuleContainmentCheck) {
+		this.checkInterfaceModuleContainmentCheck = checkInterfaceModuleContainmentCheck;
+	}
+
+	public boolean isCheckInterfaceModuleContainmentCheck() {
+		return checkInterfaceModuleContainmentCheck;
+	}
+
+	public void setCheckTestSystemModuleContainmentCheck(
+			boolean checkTestSystemModuleContainmentCheck) {
+		this.checkTestSystemModuleContainmentCheck = checkTestSystemModuleContainmentCheck;
+	}
+
+	public boolean isCheckTestSystemModuleContainmentCheck() {
+		return checkTestSystemModuleContainmentCheck;
+	}
+
+	public void setCheckTestControlModuleContainmentCheck(
+			boolean checkTestControlModuleContainmentCheck) {
+		this.checkTestControlModuleContainmentCheck = checkTestControlModuleContainmentCheck;
+	}
+
+	public boolean isCheckTestControlModuleContainmentCheck() {
+		return checkTestControlModuleContainmentCheck;
+	}
+
+	public void setCheckTestcasesModuleImportsLibCommon_Sync(
+			boolean checkTestcasesModuleImportsLibCommon_Sync) {
+		this.checkTestcasesModuleImportsLibCommon_Sync = checkTestcasesModuleImportsLibCommon_Sync;
+	}
+
+	public boolean isCheckTestcasesModuleImportsLibCommon_Sync() {
+		return checkTestcasesModuleImportsLibCommon_Sync;
+	}
+
+	public void setCheckNamingConventions(boolean checkNamingConventions) {
+		this.checkNamingConventions = checkNamingConventions;
+	}
+
+	public boolean isCheckNamingConventions() {
+		return checkNamingConventions;
+	}
+
+	public void setNamingConventionsConfig(
+			NamingConventionsConfig namingConventionsConfig) {
+		this.namingConventionsConfig = namingConventionsConfig;
+	}
+
+	public NamingConventionsConfig getNamingConventionsConfig() {
+		return namingConventionsConfig;
+	}
+
+	public void setCheckModuleSize(boolean checkModuleSize) {
+		this.checkModuleSize = checkModuleSize;
+	}
+
+	public boolean isCheckModuleSize() {
+		return checkModuleSize;
+	}
+
+	public void setMaximumAllowedModuleSizeInBytes(
+			int maximumAllowedModuleSizeInBytes) {
+		this.maximumAllowedModuleSizeInBytes = maximumAllowedModuleSizeInBytes;
+	}
+
+	public int getMaximumAllowedModuleSizeInBytes() {
+		return maximumAllowedModuleSizeInBytes;
+	}
+
+//	public void setProjectFileExtension(String projectFileExtension) {
+//		this.projectFileExtension = projectFileExtension;
+//	}
+//
+//	public String getProjectFileExtension() {
+//		return projectFileExtension;
+//	}
+
+	public void setCheckNoDuplicatedModuleDefinitionIdentifiers(
+			boolean checkNoDuplicatedModuleDefinitionIdentifiers) {
+		this.checkNoDuplicatedModuleDefinitionIdentifiers = checkNoDuplicatedModuleDefinitionIdentifiers;
+	}
+
+	public boolean isCheckNoDuplicatedModuleDefinitionIdentifiers() {
+		return checkNoDuplicatedModuleDefinitionIdentifiers;
+	}
+
+	public void setCheckZeroReferencedModuleDefinitions(
+			boolean checkZeroReferencedModuleDefinitions) {
+		this.checkZeroReferencedModuleDefinitions = checkZeroReferencedModuleDefinitions;
+	}
+
+	public boolean isCheckZeroReferencedModuleDefinitions() {
+		return checkZeroReferencedModuleDefinitions;
+	}
+
+	public void setTypesAndValuesImportsNamesRegExp(String typesAndValuesImportsLibNamesRegExp) {
+		this.typesAndValuesImportsLibNamesRegExp = typesAndValuesImportsLibNamesRegExp;
+	}
+
+	public String getTypesAndValuesImportsLibNamesRegExp() {
+		return typesAndValuesImportsLibNamesRegExp;
+	}
+
+	public void setTypesAndValuesImportsLibNamesExcludedRegExp(
+			String typesAndValuesImportsLibNamesExcludedRegExp) {
+		this.typesAndValuesImportsLibNamesExcludedRegExp = typesAndValuesImportsLibNamesExcludedRegExp;
+	}
+
+	public String getTypesAndValuesImportsLibNamesExcludedRegExp() {
+		return typesAndValuesImportsLibNamesExcludedRegExp;
+	}
+
+	public void setCheckNoTabs(boolean checkNoTabs) {
+		this.checkNoTabs = checkNoTabs;
+	}
+
+	public boolean isCheckNoTabs() {
+		return checkNoTabs;
+	}
+
+
+	public void setCheckLogStatementFormat(boolean checkLogStatementFormat) {
+		this.checkLogStatementFormat = checkLogStatementFormat;
+	}
+
+	public boolean isCheckLogStatementFormat() {
+		return checkLogStatementFormat;
+	}
+
+	public void setProcessSubsequentLogStatementsAsOne(
+			boolean processSubsequentLogStatementsAsOne) {
+		this.processSubsequentLogStatementsAsOne = processSubsequentLogStatementsAsOne;
+	}
+
+	public boolean isProcessSubsequentLogStatementsAsOne() {
+		return processSubsequentLogStatementsAsOne;
+	}
+
+	public void setCheckFunctionsModuleContainmentCheckAllowExtFunction(
+			boolean checkFunctionsModuleContainmentCheckAllowExtFunction) {
+		this.checkFunctionsModuleContainmentCheckAllowExtFunction = checkFunctionsModuleContainmentCheckAllowExtFunction;
+	}
+
+	public boolean isCheckFunctionsModuleContainmentCheckAllowExtFunction() {
+		return checkFunctionsModuleContainmentCheckAllowExtFunction;
+	}
+
+	public void setMaximumAllowedNestingDepth(int maximumAllowedNestingDepth) {
+		this.maximumAllowedNestingDepth = maximumAllowedNestingDepth;
+	}
+
+	public int getMaximumAllowedNestingDepth() {
+		return maximumAllowedNestingDepth;
+	}
+
+	public void setZeroReferencedModuleDefinitionsExcludedRegExp(
+			String zeroReferencedModuleDefinitionsExcludedRegExp) {
+		this.zeroReferencedModuleDefinitionsExcludedRegExp = zeroReferencedModuleDefinitionsExcludedRegExp;
+	}
+
+	public String getZeroReferencedModuleDefinitionsExcludedRegExp() {
+		return zeroReferencedModuleDefinitionsExcludedRegExp;
+	}
+
+	public void setCheckNoInlineTemplates(boolean checkNoInlineTemplates) {
+		this.checkNoInlineTemplates = checkNoInlineTemplates;
+	}
+
+	public boolean isCheckNoInlineTemplates() {
+		return checkNoInlineTemplates;
+	}
+
+	public void setCheckNoOverSpecificRunsOnClauses(
+			boolean checkNoOverSpecificRunsOnClauses) {
+		this.checkNoOverSpecificRunsOnClauses = checkNoOverSpecificRunsOnClauses;
+	}
+
+	public boolean isCheckNoOverSpecificRunsOnClauses() {
+		return checkNoOverSpecificRunsOnClauses;
+	}
+
+	public void setCheckNoUnusedImports(boolean checkNoUnusedImports) {
+		this.checkNoUnusedImports = checkNoUnusedImports;
+	}
+
+	public boolean isCheckNoUnusedImports() {
+		return checkNoUnusedImports;
+	}
+
+	public void setCheckNoUnusedFormalParameters(
+			boolean checkNoUnusedFormalParameters) {
+		this.checkNoUnusedFormalParameters = checkNoUnusedFormalParameters;
+	}
+
+	public boolean isCheckNoUnusedFormalParameters() {
+		return checkNoUnusedFormalParameters;
+	}
+
+	public void setCheckNoLiterals(boolean checkNoLiterals) {
+		this.checkNoLiterals = checkNoLiterals;
+	}
+
+	public boolean isCheckNoLiterals() {
+		return checkNoLiterals;
+	}
+
+	public void setLocalDefinitionTypes(String[] localDefinitionTypes) {
+		this.localDefinitionTypes = localDefinitionTypes;
+	}
+
+	public String[] getLocalDefinitionTypes() {
+		return localDefinitionTypes;
+	}
+
+	public void setFeatureListImportedModuleNames(
+			boolean featureListImportedModuleNames) {
+		this.featureListImportedModuleNames = featureListImportedModuleNames;
+	}
+
+	public boolean isFeatureListImportedModuleNames() {
+		return featureListImportedModuleNames;
+	}
+
+	public void setFeatureListImportedModuleFileNames(
+			boolean featureListImportedModuleFileNames) {
+		this.featureListImportedModuleFileNames = featureListImportedModuleFileNames;
+	}
+
+	public boolean isFeatureListImportedModuleFileNames() {
+		return featureListImportedModuleFileNames;
+	}
+
+	public void setFeatureListImportingModuleNames(
+			boolean featureListImportingModuleNames) {
+		this.featureListImportingModuleNames = featureListImportingModuleNames;
+	}
+
+	public boolean isFeatureListImportingModuleNames() {
+		return featureListImportingModuleNames;
+	}
+
+	public void setFeatureListImportingModuleFileNames(
+			boolean featureListImportingModuleFileNames) {
+		this.featureListImportingModuleFileNames = featureListImportingModuleFileNames;
+	}
+
+	public boolean isFeatureListImportingModuleFileNames() {
+		return featureListImportingModuleFileNames;
+	}
+
+	public void setCheckNoUnusedLocalDefinitions(
+			boolean checkNoUnusedLocalDefinitions) {
+		this.checkNoUnusedLocalDefinitions = checkNoUnusedLocalDefinitions;
+	}
+
+	public boolean isCheckNoUnusedLocalDefinitions() {
+		return checkNoUnusedLocalDefinitions;
+	}
+
+	public void setRecursionInCheckNoOverSpecificRunsOnClauses(boolean recursionInCheckNoOverSpecificRunsOnClauses) {
+		this.recursionInCheckNoOverSpecificRunsOnClauses = recursionInCheckNoOverSpecificRunsOnClauses;
+	}
+
+	public boolean isRecursionInCheckNoOverSpecificRunsOnClauses() {
+		return recursionInCheckNoOverSpecificRunsOnClauses;
+	}
+
+
+}
Index: /trunk/t3q/src/org/etsi/t3q/config/T3QConfig.java
===================================================================
--- /trunk/t3q/src/org/etsi/t3q/config/T3QConfig.java	(revision 7)
+++ /trunk/t3q/src/org/etsi/t3q/config/T3QConfig.java	(revision 7)
@@ -0,0 +1,6 @@
+package org.etsi.t3q.config;
+
+import org.etsi.common.configuration.ToolConfiguration;
+
+public class T3QConfig extends ToolConfiguration {
+}
Index: /trunk/t3q/src/org/etsi/t3q/config/T3QOptionsHandler.java
===================================================================
--- /trunk/t3q/src/org/etsi/t3q/config/T3QOptionsHandler.java	(revision 7)
+++ /trunk/t3q/src/org/etsi/t3q/config/T3QOptionsHandler.java	(revision 7)
@@ -0,0 +1,19 @@
+package org.etsi.t3q.config;
+
+import org.etsi.common.configuration.OptionWithID;
+import org.etsi.common.configuration.OptionsHandler;
+
+
+public class T3QOptionsHandler extends OptionsHandler {
+
+	public T3QOptionsHandler() {
+		super();
+		this.initializeCustomOptions();
+	}
+
+	private void initializeCustomOptions() {
+		OptionWithID optionWithID;
+		optionWithID = new OptionWithID(21, "format", "Apply code formatting\n");
+		getOptions().addOption(optionWithID);
+	}
+}
Index: /trunk/t3q/src/org/etsi/t3q/exceptions/TTCN3BehaviorException.java
===================================================================
--- /trunk/t3q/src/org/etsi/t3q/exceptions/TTCN3BehaviorException.java	(revision 7)
+++ /trunk/t3q/src/org/etsi/t3q/exceptions/TTCN3BehaviorException.java	(revision 7)
@@ -0,0 +1,11 @@
+package org.etsi.t3q.exceptions;
+
+public class TTCN3BehaviorException extends Exception {
+
+	private static final long serialVersionUID = 3801467473799856594L;
+
+	public TTCN3BehaviorException(String message) {
+		super("TTCN3 Behavior Exception: " + message);
+	}
+
+}
Index: /trunk/t3q/src/org/etsi/t3q/exceptions/TTCN3ParserException.java
===================================================================
--- /trunk/t3q/src/org/etsi/t3q/exceptions/TTCN3ParserException.java	(revision 7)
+++ /trunk/t3q/src/org/etsi/t3q/exceptions/TTCN3ParserException.java	(revision 7)
@@ -0,0 +1,11 @@
+package org.etsi.t3q.exceptions;
+
+public class TTCN3ParserException extends Exception {
+
+	private static final long serialVersionUID = -207414866662976520L;
+
+	public TTCN3ParserException(String message) {
+		super("TTCN-3 Parser Exception: " + message); //TODO: add tree dump
+	}
+
+}
Index: /trunk/t3q/src/org/etsi/t3q/visitor/AbstractModuleContentsChecker.java
===================================================================
--- /trunk/t3q/src/org/etsi/t3q/visitor/AbstractModuleContentsChecker.java	(revision 7)
+++ /trunk/t3q/src/org/etsi/t3q/visitor/AbstractModuleContentsChecker.java	(revision 7)
@@ -0,0 +1,45 @@
+package org.etsi.t3q.visitor;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.TTCN3ParserTokenTypes;
+
+public abstract class AbstractModuleContentsChecker {
+
+	private HashMap<String, ArrayList<Integer>> permissibleModuleContentsMap;
+
+	public AbstractModuleContentsChecker() {
+		this.permissibleModuleContentsMap = new HashMap<String, ArrayList<Integer>>();
+	}
+
+	protected void addPermissibleListForModuleID(String moduleIDSubstring,
+			ArrayList<Integer> permissibleTypesList) {
+		this.permissibleModuleContentsMap.put(moduleIDSubstring,
+				permissibleTypesList);
+	}
+	
+	public boolean typePermittedInRestrictedModule(String moduleRestriction, Integer type){
+		boolean permitted = false;
+		if (this.permissibleModuleContentsMap.get(moduleRestriction).contains(type) || (type == TTCN3ParserTokenTypes.ImportDef)){
+			permitted = true;
+		}
+		return permitted;
+	}
+	
+	public String checkModuleIDForRestrictions(String moduleID){
+		String moduleRestriction = null;
+		Iterator<String> moduleRestrictionIterator = this.permissibleModuleContentsMap.keySet().iterator();
+		while (moduleRestrictionIterator.hasNext()){
+			String moduleRestrictionEntry = moduleRestrictionIterator.next();
+			if (moduleID.contains(moduleRestrictionEntry)){
+				if (moduleRestriction!=null){
+					//TODO: throw a warning that multiple restrictions are used
+				}
+				moduleRestriction = moduleRestrictionEntry;
+			}
+		}
+		return moduleRestriction;
+	}
+}
Index: /trunk/t3q/src/org/etsi/t3q/visitor/AbstractVisitor.java
===================================================================
--- /trunk/t3q/src/org/etsi/t3q/visitor/AbstractVisitor.java	(revision 7)
+++ /trunk/t3q/src/org/etsi/t3q/visitor/AbstractVisitor.java	(revision 7)
@@ -0,0 +1,3388 @@
+//This class has been generated automatically. Do not modify it by hand!
+package org.etsi.t3q.visitor;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.Queue;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.LocationAST;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.TTCN3ParserTokenTypes;
+//import de.ugoe.cs.swe.t3simexec.exceptions.TTCN3BehaviorException;
+import org.etsi.t3q.exceptions.TTCN3BehaviorException;
+
+public abstract class AbstractVisitor {
+
+    public int visitedNodeCount;
+
+    public ContinueStatus visitAddExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAddressRefList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAliveKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAliveOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAllAltstepsWithExcept(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAllCompsAllPortsSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAllConnectionsSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAllConstsWithExcept(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAllFunctionsWithExcept(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAllGroupsWithExcept(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAllModuleParWithExcept(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAllPortsSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAllSignaturesWithExcept(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAllTemplsWithExcept(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAllTestcasesWithExcept(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAllTypesWithExcept(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAllWithExcepts(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAltstepInstance(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAltstepLocalDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAltstepLocalDefList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAltstepRef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAltstepRefList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAndExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAnyTypeKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAllRef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBitAndExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBitNotExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBitOrExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBitXorExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBreakStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCaseKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCheckPortOpsPresent(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCompenentIdentifierOrLiteral(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitComponentIdentifierOrLiteral(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitComponentReferenceOrLiteral(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitConstRefList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitContinueStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDefaultKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDerivedRefWithParList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitEqualExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExceptAltstepSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExceptConstSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExceptElement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExceptFunctionSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExceptGroupRefList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExceptGroupSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExceptModuleParSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExceptSignatureSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExceptSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExceptTemplateSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExceptTestcaseSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExceptTypeDefSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExceptsDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExtendsKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFloatDotNotation(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFloatENotation(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFromClausePresent(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFullGroupIdentifier(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFullGroupIdentifierWithExcept(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFunctionRefList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitGroupRefList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitGroupRefListWithExcept(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitImportAltstepSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitImportModuleParSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitKillKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitKillTCStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitKilledStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitLogItem(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitModuleDefinitionList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitModuleParRefList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMulExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNestedEnumDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNestedRecordDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNestedRecordOfDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNestedSetDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNestedSetOfDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNestedTypeDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNestedUnionDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNotExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOmitValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortRedirectSymbol(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortRedirectWithValueAndParam(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRedirectPresent(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRedirectWithParamSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRedirectWithValueAndParamSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRelExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRepeatStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRestrictedTemplate(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSelectCase(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSelectCaseBody(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSelectCaseConstruct(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSelectKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitShiftExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSignatureRefList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSingleConnectionSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSingleOrMultiConnectionSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSingleTimerInstance(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTempVarList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTemplateRefList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTemplateRestriction(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTestcaseRefList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTimerList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTypeRefList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitUnaryExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNameForm(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNumberForm(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNameAndNumberForm(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitVariationKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDefinitiveIdentifier(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDefinitiveNumberForm(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitXorExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDefinitiveNameAndNumberForm(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitActivateOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAddOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAddressKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAddressRef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAddressValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAllKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAllOrSignatureList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAllOrTypeList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAllPort(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAllowedValues(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAltConstruct(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAltGuardChar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAltGuardElement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAltGuardElements(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAltGuardList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAltKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAltstepDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAltstepKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAnd4b(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAnd(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAnyKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAnyOrOmit(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAnyValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitArrayBounds(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitArrayDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitArrayDefRange(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitArrayElementConstExpressionList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitArrayElementExpressionList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitArrayElementSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitArrayElementSpecList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitArrayExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitArrayOrBitRef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitArrayValueOrAttrib(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAssignment(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAssignmentChar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAssignmentList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAttribKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAttribQualifier(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAttribSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBaseTemplate(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBasicStatements(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBeginChar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBehaviourStatements(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBinOrMatch(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBitOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBitStringKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBitStringMatch(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBitStringValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBooleanExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBooleanKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBooleanValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCallBodyGuard(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCallBodyOps(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCallBodyStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCallBodyStatementList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCallParameters(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCallStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCallTimerValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCatchOpParameter(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCatchStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCell(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCharKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCharStringKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCharStringMatch(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCharStringPattern(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCharStringValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCharStringValueId(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCheckParameter(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCheckStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitClearStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitColon(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitComma(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCommunicationStatements(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitComplement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitComponentDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitComponentDefList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitComponentElementDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitComponentId(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitComponentIdentifier(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitComponentRef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitComponentType(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitComponentRefAssignment(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCompoundConstExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCompoundExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitConditionalConstruct(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitConfigSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitConfigurationOps(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitConfigurationStatements(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitConnectStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitConstDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitConstList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitConstantExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitControlStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitControlStatementOrDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitControlStatementOrDefList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCreateOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCstring(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDash(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDeactivateStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDefIndentClose(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDefIndentOpen(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDefKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDefOrFieldRef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDefOrFieldRefList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDerivedDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDerivedRegWithParList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDirection(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDisconnectStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDisplayKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDoWhileStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDoneStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDot(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDoubleColon(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitElseClause(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitElseIfClause(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitElseIfClauses(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitElseStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitEncodeKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitEndChar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitEnumDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitEnumeratedValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitEnumeration(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitEnumerationList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitEqual(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitError(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExceptionSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExceptionTypeList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExtConstDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExtFunctionDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExtendedFieldReference(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExtensionKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitExtraMatchingAttributes(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFactor(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFail(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFalse(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFieldConstExpressionList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFieldConstExpressionSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFieldExpressionList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFieldExpressionSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFieldReference(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFieldSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFieldSpecList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFieldValueOrAttrib(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFinal(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFloatKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFloatValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitForStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFormalPortPar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFormalTemplatePar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFormalTimerPar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFormalTypePar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFormalValuePar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFromClause(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFunctionActualParAssignment(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFriendKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFriendModuleDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFunctionActualPar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFunctionActualParList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFunctionBody(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFunctionDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFunctionLocalDefOrInst(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFunctionLocalDefOrInstList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFunctionStatementList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFunctionFormalPar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFunctionInstance(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFunctionLocalDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFunctionLocalInst(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFunctionRef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFunctionStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitGetCallStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitGetLocalVerdict(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitGetReplyStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitGlobalModuleId(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitGotoStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitGroup(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitGroupDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitGuardOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitGuardStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitHexOrMatch(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitHexStringKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitHexStringMatch(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitHexStringValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitHaltStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitIdentifier(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitIfPresentMatch(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitImportAllSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitImportConstSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitImportDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitImportElement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitImportFromSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitImportFunctionSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitImportGroupSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitImportNamedAltSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitImportSignatureSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitImportSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitImportTemplateSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitImportTestcaseSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitImportTypeDefSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitInLineTemplate(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitInOutParKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitInParKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitInconc(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitInfinity(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitInitial(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitIntegerKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitIntegerValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitInterleavedAction(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitInterleavedConstruct(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitInterleavedGuard(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitInterleavedGuardElement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitInterleavedGuardList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitKilledKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitLParen(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitLabelStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitLanguageSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitLengthMatch(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitLessorequal(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitLessthan(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitLogStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitLoopConstruct(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitLowerBound(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMTCOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMapStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMatchOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMatchingSymbol(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMessageAttribs(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMessageList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMinus(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMixedAttribs(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMixedList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMod(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitModifiesKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitModuleControlBody(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitModuleControlPart(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitModuleDefinition(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitModuleDefinitionsList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitModuleDefinitionsPart(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitModuleId(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitModulePar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitModuleParDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitModuleParList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMoreorequal(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMorethan(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMultiWithAttrib(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMultiplyOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMultitypedModuleParList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNamedAltActualPar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNamedAltActualParList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNamedAltDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNamedAltFormalPar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNamedAltFormalParList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNamedAltInstance(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNamedAltList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNamedAltRef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNamedAltRefList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNamedKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNamedValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNamedValueList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNoBlockKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNone(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNot4b(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNot(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNotUsedOrExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNotUsedSymbol(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNotequals(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNowaitKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNull(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNumber(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOctOrMatch(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOctetStringKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOctetStringMatch(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOctetStringValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOmitKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOpCall(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOpValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOptionalKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOr4b(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOr(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOutParKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOverrideKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitParRef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitParaAssignmentList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitParaSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPass(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPermutationMatch(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPlane(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPlus(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPort(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortCallBody(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortCallOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortCatchOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortCheckOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortClearOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortDefAttribs(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortDefBody(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortElement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortGetCallOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortGetReplyOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortInstance(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortOrAll(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortOrAny(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortRaiseOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortReceiveOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortRedirect(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortRedirectWithParam(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortRef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortReplyOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortSendOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortStartOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortStopOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortTriggerOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortType(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPredefinedType(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPredefinedValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPrimary(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitProcOrType(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitProcOrTypeList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitProcedureAttribs(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitProcedureList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitProduct(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPortHaltOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPrivateKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPublicKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitQuadruple(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitQuestionMark(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRParen(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRaiseStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRange(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRangeDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRangeOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitReadTimerOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitReceiveParameter(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitReceiveStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRecordDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRecordOfDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRecordRef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRecursiveKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitReferencedType(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitReferencedValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRelOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRem(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitReplyStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitReturnStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitReturnType(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRow(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRunningOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRunningTimerOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRunsOnSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSUTAction(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSUTStatements(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSelfOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSemiColon(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSendParameter(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSendStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSenderSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSetDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSetLocalVerdict(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSetOfDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitShiftOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSignature(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSignatureDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSignatureFormalPar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSignatureFormalParList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSignatureList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSimpleExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSimpleExpressions(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSingleConstDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSingleExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSingleQuote(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSingleTempVarInstance(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSingleValueOrAttrib(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSingleVarInstance(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSingleValueSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSingleWithAttrib(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSlash(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSquareClose(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSquareOpen(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStartStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStartTCStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStartTimerStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStatementBlock(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStep(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStopStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStopTCStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStopTimerStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStringAnyOrOmit(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStringAnyValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStringLength(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStringMatchOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStringOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStructDefBody(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStructDefFormalPar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStructDefFormalParList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStructFieldDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStructFieldRef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStructOfDefBody(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitStructuredTypeDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSubExpression(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSubTypeDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSubTypeSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSubsetMatch(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSupersetMatch(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSystemOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSystemSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTTCN3File(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTTCN3Module(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTTCN3ModuleId(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTemplateActualPar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTemplateActualParList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTemplateBody(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTemplateDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTemplateFormalPar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTemplateFormalParList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTemplateInstanceAssignment(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTemplateInstance(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTemplateKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTemplateOps(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTemplateRef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTemplateRefWithParList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTerm(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTestcaseActualParAssignment(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTestcaseActualPar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTestcaseActualParList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTestcaseDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTestcaseInstance(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTestcaseRef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTimeoutKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTimeoutStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTimerInstance(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTimerKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTimerOps(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTimerRef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTimerRefOrAll(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTimerRefOrAny(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTimerStatements(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTimerValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitToClause(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTriggerStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTrue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitType(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTypeActualPar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTypeActualParList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTypeDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTypeDefIdentifier(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTypeList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTypeReference(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitUnaryOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitUnderscore(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitUnionDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitUnionDefBody(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitUnionFieldDef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitUniversalChar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitUniversalCharString(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitUniversalKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitUnmapStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitUpperBound(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitValueList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitValueMatchSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitValueOrAttribList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitValueOrRange(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitValueParOrTypePar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitValueReference(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitValueSpec(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitValueofOp(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitVarInitialValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitVarInstance(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitVarList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitVariableAssignment(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitVariableEntry(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitVariableList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitVariableRef(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitVerdictOps(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitVerdictStatements(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitVerdictTypeKeyword(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitVerdictTypeValue(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitVisibility(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitWhileStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitWithAttribList(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitWithStatement(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitXor4b(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitXor(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBSTRING(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBSTRINGMATCH(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDOT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFLOATVALUE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitHSTRING(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitHSTRINGMATCH(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOSTRING(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOSTRINGMATCH(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRANGEOP(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitACTION(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitACTIVATE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitADDRESS(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitALIVE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitALL(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitALT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitALTSTEP(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAND(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAND4B(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitANY(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitANYTYPE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBITSTRING(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBOOLEAN(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBREAK(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCALL(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCASE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCATCH(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCHAR(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCHARSTRING(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCHECK(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCLEAR(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCOMPLEMENT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCOMPONENT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCONNECT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCONST(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCONTINUE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCONTROL(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCREATE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDEACTIVATE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDEFAULT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDISCONNECT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDISPLAY(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDO(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDONE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitELSE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitENCODE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitENUMERATED(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitERROR(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitEXCEPT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitEXCEPTION(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitEXECUTE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitEXTENDS(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitEXTENSION(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitEXTERNAL(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFAIL(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFALSE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFLOAT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFOR(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFROM(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFUNCTION(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitFRIEND(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitGETCALL(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitGETREPLY(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitGETVERDICT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitGOTO(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitGROUP(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitHALT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitHEXSTRING(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitIF(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitIFPRESENT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitIMPORT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitIN(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitINCONC(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitINFINITY(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitINOUT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitINTEGER(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitINTERLEAVE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitKILL(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitKILLED(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitLABEL(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitLANGUAGE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitLENGTH(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitLOG(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMAP(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMATCH(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMESSAGE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMIXED(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMOD(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMODIFIES(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMODULE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMODULEPAR(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMTC(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNOBLOCK(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNONE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNOT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNOT4B(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNOWAIT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNULL(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOBJID(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOCTETSTRING(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOF(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOMIT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitON(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOPTIONAL(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOR(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOR4B(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOUT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOVERRIDE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPARAM(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPASS(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPATTERN(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPERMUTATION(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPORT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPRESENT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPRIVATE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPROCEDURE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPUBLIC(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRAISE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitREAD(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRECEIVE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRECORD(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRECURSIVE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitREM(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitREPEAT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitREPLY(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRETURN(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRUNNING(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRUNS(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSELECT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSELF(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSEND(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSENDER(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSET(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSETVERDICT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSIGNATURE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSTART(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSTOP(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSUBSET(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSUPERSET(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSYSTEM(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTEMPLATE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTESTCASE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTIMEOUT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTIMER(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTO(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTRIGGER(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTRUE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitTYPE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitUNION(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitUNIVERSAL(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitUNMAP(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitVALUE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitVAR(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitVARIANT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitVERDICTTYPE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitWHILE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitWITH(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitXOR(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitXOR4B(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitWS(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSL_COMMENT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitML_COMMENT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitIDENTIFIER(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitASSIGNMENTCHAR(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPORTREDIRECTSYMBOL(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBEGINCHAR(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCSTRING(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSTRING(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNUMBER(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitEXPONENT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSEMICOLON(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCOMMA(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDOUBLECOLON(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitCOLON(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitUNDERSCORE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitENDCHAR(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSQUAREOPEN(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSQUARECLOSE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitLPAREN(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitRPAREN(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitLESSTHAN(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMORETHAN(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNOTEQUALS(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMOREOREQUAL(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitLESSOREQUAL(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitEQUAL(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPLUS(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitMINUS(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSTAR(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSLASH(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSINGLEQUOTE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDOUBLEQUOTE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitQUESTIONMARK(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSHIFTLEFT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSHIFTRIGHT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitROTATELEFT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitROTATERIGHT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSTRINGANYVALUE(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSTRINGANYOROMIT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitQUOTESYMBOL(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSTRINGOP(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitZero(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNonzeronum(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNonzeronumber(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitDecimalnumber(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitNum(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitBIN(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitHEX(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOCT(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitChar(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitGeneralTextCharacter(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitAlphanumeric(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitLetter(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitUppercaseLetter(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitLowercaseLetter(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSpecial(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOtherSpecial(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitOtherCharacter(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitSpace(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+    public ContinueStatus visitPreProcessorMacro(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
+
+    public ContinueStatus visit(LocationAST node) throws TTCN3BehaviorException {
+        visitedNodeCount++;
+        ContinueStatus continueStatus;
+        switch(node.getType()) {
+            case TTCN3ParserTokenTypes.AddExpression:
+                            continueStatus=visitAddExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AddressRefList:
+                            continueStatus=visitAddressRefList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AliveKeyword:
+                            continueStatus=visitAliveKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AliveOp:
+                            continueStatus=visitAliveOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AllAltstepsWithExcept:
+                            continueStatus=visitAllAltstepsWithExcept(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AllCompsAllPortsSpec:
+                            continueStatus=visitAllCompsAllPortsSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AllConnectionsSpec:
+                            continueStatus=visitAllConnectionsSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AllConstsWithExcept:
+                            continueStatus=visitAllConstsWithExcept(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AllFunctionsWithExcept:
+                            continueStatus=visitAllFunctionsWithExcept(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AllGroupsWithExcept:
+                            continueStatus=visitAllGroupsWithExcept(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AllModuleParWithExcept:
+                            continueStatus=visitAllModuleParWithExcept(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AllPortsSpec:
+                            continueStatus=visitAllPortsSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AllSignaturesWithExcept:
+                            continueStatus=visitAllSignaturesWithExcept(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AllTemplsWithExcept:
+                            continueStatus=visitAllTemplsWithExcept(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AllTestcasesWithExcept:
+                            continueStatus=visitAllTestcasesWithExcept(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AllTypesWithExcept:
+                            continueStatus=visitAllTypesWithExcept(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AllWithExcepts:
+                            continueStatus=visitAllWithExcepts(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AltstepInstance:
+                            continueStatus=visitAltstepInstance(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AltstepLocalDef:
+                            continueStatus=visitAltstepLocalDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AltstepLocalDefList:
+                            continueStatus=visitAltstepLocalDefList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AltstepRef:
+                            continueStatus=visitAltstepRef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AltstepRefList:
+                            continueStatus=visitAltstepRefList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AndExpression:
+                            continueStatus=visitAndExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AnyTypeKeyword:
+                            continueStatus=visitAnyTypeKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AllRef:
+                            continueStatus=visitAllRef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BitAndExpression:
+                            continueStatus=visitBitAndExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BitNotExpression:
+                            continueStatus=visitBitNotExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BitOrExpression:
+                            continueStatus=visitBitOrExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BitXorExpression:
+                            continueStatus=visitBitXorExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BreakStatement:
+                            continueStatus=visitBreakStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CaseKeyword:
+                            continueStatus=visitCaseKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CheckPortOpsPresent:
+                            continueStatus=visitCheckPortOpsPresent(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CompenentIdentifierOrLiteral:
+                            continueStatus=visitCompenentIdentifierOrLiteral(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ComponentIdentifierOrLiteral:
+                            continueStatus=visitComponentIdentifierOrLiteral(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ComponentReferenceOrLiteral:
+                            continueStatus=visitComponentReferenceOrLiteral(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ConstRefList:
+                            continueStatus=visitConstRefList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ContinueStatement:
+                            continueStatus=visitContinueStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DefaultKeyword:
+                            continueStatus=visitDefaultKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DerivedRefWithParList:
+                            continueStatus=visitDerivedRefWithParList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.EqualExpression:
+                            continueStatus=visitEqualExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExceptAltstepSpec:
+                            continueStatus=visitExceptAltstepSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExceptConstSpec:
+                            continueStatus=visitExceptConstSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExceptElement:
+                            continueStatus=visitExceptElement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExceptFunctionSpec:
+                            continueStatus=visitExceptFunctionSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExceptGroupRefList:
+                            continueStatus=visitExceptGroupRefList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExceptGroupSpec:
+                            continueStatus=visitExceptGroupSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExceptModuleParSpec:
+                            continueStatus=visitExceptModuleParSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExceptSignatureSpec:
+                            continueStatus=visitExceptSignatureSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExceptSpec:
+                            continueStatus=visitExceptSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExceptTemplateSpec:
+                            continueStatus=visitExceptTemplateSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExceptTestcaseSpec:
+                            continueStatus=visitExceptTestcaseSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExceptTypeDefSpec:
+                            continueStatus=visitExceptTypeDefSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExceptsDef:
+                            continueStatus=visitExceptsDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExtendsKeyword:
+                            continueStatus=visitExtendsKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FloatDotNotation:
+                            continueStatus=visitFloatDotNotation(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FloatENotation:
+                            continueStatus=visitFloatENotation(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FromClausePresent:
+                            continueStatus=visitFromClausePresent(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FullGroupIdentifier:
+                            continueStatus=visitFullGroupIdentifier(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FullGroupIdentifierWithExcept:
+                            continueStatus=visitFullGroupIdentifierWithExcept(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FunctionRefList:
+                            continueStatus=visitFunctionRefList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.GroupRefList:
+                            continueStatus=visitGroupRefList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.GroupRefListWithExcept:
+                            continueStatus=visitGroupRefListWithExcept(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ImportAltstepSpec:
+                            continueStatus=visitImportAltstepSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ImportModuleParSpec:
+                            continueStatus=visitImportModuleParSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.KillKeyword:
+                            continueStatus=visitKillKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.KillTCStatement:
+                            continueStatus=visitKillTCStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.KilledStatement:
+                            continueStatus=visitKilledStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.LogItem:
+                            continueStatus=visitLogItem(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ModuleDefinitionList:
+                            continueStatus=visitModuleDefinitionList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ModuleParRefList:
+                            continueStatus=visitModuleParRefList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MulExpression:
+                            continueStatus=visitMulExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NestedEnumDef:
+                            continueStatus=visitNestedEnumDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NestedRecordDef:
+                            continueStatus=visitNestedRecordDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NestedRecordOfDef:
+                            continueStatus=visitNestedRecordOfDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NestedSetDef:
+                            continueStatus=visitNestedSetDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NestedSetOfDef:
+                            continueStatus=visitNestedSetOfDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NestedTypeDef:
+                            continueStatus=visitNestedTypeDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NestedUnionDef:
+                            continueStatus=visitNestedUnionDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NotExpression:
+                            continueStatus=visitNotExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OmitValue:
+                            continueStatus=visitOmitValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortRedirectSymbol:
+                            continueStatus=visitPortRedirectSymbol(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortRedirectWithValueAndParam:
+                            continueStatus=visitPortRedirectWithValueAndParam(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RedirectPresent:
+                            continueStatus=visitRedirectPresent(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RedirectWithParamSpec:
+                            continueStatus=visitRedirectWithParamSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RedirectWithValueAndParamSpec:
+                            continueStatus=visitRedirectWithValueAndParamSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RelExpression:
+                            continueStatus=visitRelExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RepeatStatement:
+                            continueStatus=visitRepeatStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RestrictedTemplate:
+                            continueStatus=visitRestrictedTemplate(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SelectCase:
+                            continueStatus=visitSelectCase(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SelectCaseBody:
+                            continueStatus=visitSelectCaseBody(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SelectCaseConstruct:
+                            continueStatus=visitSelectCaseConstruct(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SelectKeyword:
+                            continueStatus=visitSelectKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ShiftExpression:
+                            continueStatus=visitShiftExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SignatureRefList:
+                            continueStatus=visitSignatureRefList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SingleConnectionSpec:
+                            continueStatus=visitSingleConnectionSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SingleOrMultiConnectionSpec:
+                            continueStatus=visitSingleOrMultiConnectionSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SingleTimerInstance:
+                            continueStatus=visitSingleTimerInstance(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TempVarList:
+                            continueStatus=visitTempVarList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TemplateRefList:
+                            continueStatus=visitTemplateRefList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TemplateRestriction:
+                            continueStatus=visitTemplateRestriction(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TestcaseRefList:
+                            continueStatus=visitTestcaseRefList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TimerList:
+                            continueStatus=visitTimerList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TypeRefList:
+                            continueStatus=visitTypeRefList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.UnaryExpression:
+                            continueStatus=visitUnaryExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NameForm:
+                            continueStatus=visitNameForm(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NumberForm:
+                            continueStatus=visitNumberForm(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NameAndNumberForm:
+                            continueStatus=visitNameAndNumberForm(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.VariationKeyword:
+                            continueStatus=visitVariationKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DefinitiveIdentifier:
+                            continueStatus=visitDefinitiveIdentifier(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DefinitiveNumberForm:
+                            continueStatus=visitDefinitiveNumberForm(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.XorExpression:
+                            continueStatus=visitXorExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DefinitiveNameAndNumberForm:
+                            continueStatus=visitDefinitiveNameAndNumberForm(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ActivateOp:
+                            continueStatus=visitActivateOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AddOp:
+                            continueStatus=visitAddOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AddressKeyword:
+                            continueStatus=visitAddressKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AddressRef:
+                            continueStatus=visitAddressRef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AddressValue:
+                            continueStatus=visitAddressValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AllKeyword:
+                            continueStatus=visitAllKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AllOrSignatureList:
+                            continueStatus=visitAllOrSignatureList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AllOrTypeList:
+                            continueStatus=visitAllOrTypeList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AllPort:
+                            continueStatus=visitAllPort(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AllowedValues:
+                            continueStatus=visitAllowedValues(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AltConstruct:
+                            continueStatus=visitAltConstruct(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AltGuardChar:
+                            continueStatus=visitAltGuardChar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AltGuardElement:
+                            continueStatus=visitAltGuardElement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AltGuardElements:
+                            continueStatus=visitAltGuardElements(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AltGuardList:
+                            continueStatus=visitAltGuardList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AltKeyword:
+                            continueStatus=visitAltKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AltstepDef:
+                            continueStatus=visitAltstepDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AltstepKeyword:
+                            continueStatus=visitAltstepKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.And4b:
+                            continueStatus=visitAnd4b(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.And:
+                            continueStatus=visitAnd(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AnyKeyword:
+                            continueStatus=visitAnyKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AnyOrOmit:
+                            continueStatus=visitAnyOrOmit(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AnyValue:
+                            continueStatus=visitAnyValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ArrayBounds:
+                            continueStatus=visitArrayBounds(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ArrayDef:
+                            continueStatus=visitArrayDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ArrayDefRange:
+                            continueStatus=visitArrayDefRange(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ArrayElementConstExpressionList:
+                            continueStatus=visitArrayElementConstExpressionList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ArrayElementExpressionList:
+                            continueStatus=visitArrayElementExpressionList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ArrayElementSpec:
+                            continueStatus=visitArrayElementSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ArrayElementSpecList:
+                            continueStatus=visitArrayElementSpecList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ArrayExpression:
+                            continueStatus=visitArrayExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ArrayOrBitRef:
+                            continueStatus=visitArrayOrBitRef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ArrayValueOrAttrib:
+                            continueStatus=visitArrayValueOrAttrib(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Assignment:
+                            continueStatus=visitAssignment(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AssignmentChar:
+                            continueStatus=visitAssignmentChar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AssignmentList:
+                            continueStatus=visitAssignmentList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AttribKeyword:
+                            continueStatus=visitAttribKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AttribQualifier:
+                            continueStatus=visitAttribQualifier(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AttribSpec:
+                            continueStatus=visitAttribSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BaseTemplate:
+                            continueStatus=visitBaseTemplate(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BasicStatements:
+                            continueStatus=visitBasicStatements(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BeginChar:
+                            continueStatus=visitBeginChar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BehaviourStatements:
+                            continueStatus=visitBehaviourStatements(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BinOrMatch:
+                            continueStatus=visitBinOrMatch(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BitOp:
+                            continueStatus=visitBitOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BitStringKeyword:
+                            continueStatus=visitBitStringKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BitStringMatch:
+                            continueStatus=visitBitStringMatch(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BitStringValue:
+                            continueStatus=visitBitStringValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BooleanExpression:
+                            continueStatus=visitBooleanExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BooleanKeyword:
+                            continueStatus=visitBooleanKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BooleanValue:
+                            continueStatus=visitBooleanValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CallBodyGuard:
+                            continueStatus=visitCallBodyGuard(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CallBodyOps:
+                            continueStatus=visitCallBodyOps(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CallBodyStatement:
+                            continueStatus=visitCallBodyStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CallBodyStatementList:
+                            continueStatus=visitCallBodyStatementList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CallParameters:
+                            continueStatus=visitCallParameters(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CallStatement:
+                            continueStatus=visitCallStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CallTimerValue:
+                            continueStatus=visitCallTimerValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CatchOpParameter:
+                            continueStatus=visitCatchOpParameter(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CatchStatement:
+                            continueStatus=visitCatchStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Cell:
+                            continueStatus=visitCell(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CharKeyword:
+                            continueStatus=visitCharKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CharStringKeyword:
+                            continueStatus=visitCharStringKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CharStringMatch:
+                            continueStatus=visitCharStringMatch(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CharStringPattern:
+                            continueStatus=visitCharStringPattern(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CharStringValue:
+                            continueStatus=visitCharStringValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CharStringValueId:
+                            continueStatus=visitCharStringValueId(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CheckParameter:
+                            continueStatus=visitCheckParameter(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CheckStatement:
+                            continueStatus=visitCheckStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ClearStatement:
+                            continueStatus=visitClearStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Colon:
+                            continueStatus=visitColon(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Comma:
+                            continueStatus=visitComma(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CommunicationStatements:
+                            continueStatus=visitCommunicationStatements(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Complement:
+                            continueStatus=visitComplement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ComponentDef:
+                            continueStatus=visitComponentDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ComponentDefList:
+                            continueStatus=visitComponentDefList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ComponentElementDef:
+                            continueStatus=visitComponentElementDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ComponentId:
+                            continueStatus=visitComponentId(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ComponentIdentifier:
+                            continueStatus=visitComponentIdentifier(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ComponentRef:
+                            continueStatus=visitComponentRef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ComponentType:
+                            continueStatus=visitComponentType(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ComponentRefAssignment:
+                            continueStatus=visitComponentRefAssignment(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CompoundConstExpression:
+                            continueStatus=visitCompoundConstExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CompoundExpression:
+                            continueStatus=visitCompoundExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ConditionalConstruct:
+                            continueStatus=visitConditionalConstruct(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ConfigSpec:
+                            continueStatus=visitConfigSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ConfigurationOps:
+                            continueStatus=visitConfigurationOps(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ConfigurationStatements:
+                            continueStatus=visitConfigurationStatements(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ConnectStatement:
+                            continueStatus=visitConnectStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ConstDef:
+                            continueStatus=visitConstDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ConstList:
+                            continueStatus=visitConstList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ConstantExpression:
+                            continueStatus=visitConstantExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ControlStatement:
+                            continueStatus=visitControlStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ControlStatementOrDef:
+                            continueStatus=visitControlStatementOrDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ControlStatementOrDefList:
+                            continueStatus=visitControlStatementOrDefList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CreateOp:
+                            continueStatus=visitCreateOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Cstring:
+                            continueStatus=visitCstring(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Dash:
+                            continueStatus=visitDash(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DeactivateStatement:
+                            continueStatus=visitDeactivateStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DefIndentClose:
+                            continueStatus=visitDefIndentClose(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DefIndentOpen:
+                            continueStatus=visitDefIndentOpen(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DefKeyword:
+                            continueStatus=visitDefKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DefOrFieldRef:
+                            continueStatus=visitDefOrFieldRef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DefOrFieldRefList:
+                            continueStatus=visitDefOrFieldRefList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DerivedDef:
+                            continueStatus=visitDerivedDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DerivedRegWithParList:
+                            continueStatus=visitDerivedRegWithParList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Direction:
+                            continueStatus=visitDirection(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DisconnectStatement:
+                            continueStatus=visitDisconnectStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DisplayKeyword:
+                            continueStatus=visitDisplayKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DoWhileStatement:
+                            continueStatus=visitDoWhileStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DoneStatement:
+                            continueStatus=visitDoneStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Dot:
+                            continueStatus=visitDot(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DoubleColon:
+                            continueStatus=visitDoubleColon(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ElseClause:
+                            continueStatus=visitElseClause(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ElseIfClause:
+                            continueStatus=visitElseIfClause(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ElseIfClauses:
+                            continueStatus=visitElseIfClauses(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ElseStatement:
+                            continueStatus=visitElseStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.EncodeKeyword:
+                            continueStatus=visitEncodeKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.EndChar:
+                            continueStatus=visitEndChar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.EnumDef:
+                            continueStatus=visitEnumDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.EnumeratedValue:
+                            continueStatus=visitEnumeratedValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Enumeration:
+                            continueStatus=visitEnumeration(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.EnumerationList:
+                            continueStatus=visitEnumerationList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Equal:
+                            continueStatus=visitEqual(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Error:
+                            continueStatus=visitError(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExceptionSpec:
+                            continueStatus=visitExceptionSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExceptionTypeList:
+                            continueStatus=visitExceptionTypeList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Expression:
+                            continueStatus=visitExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExtConstDef:
+                            continueStatus=visitExtConstDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExtFunctionDef:
+                            continueStatus=visitExtFunctionDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExtendedFieldReference:
+                            continueStatus=visitExtendedFieldReference(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExtensionKeyword:
+                            continueStatus=visitExtensionKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ExtraMatchingAttributes:
+                            continueStatus=visitExtraMatchingAttributes(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Factor:
+                            continueStatus=visitFactor(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Fail:
+                            continueStatus=visitFail(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.False:
+                            continueStatus=visitFalse(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FieldConstExpressionList:
+                            continueStatus=visitFieldConstExpressionList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FieldConstExpressionSpec:
+                            continueStatus=visitFieldConstExpressionSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FieldExpressionList:
+                            continueStatus=visitFieldExpressionList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FieldExpressionSpec:
+                            continueStatus=visitFieldExpressionSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FieldReference:
+                            continueStatus=visitFieldReference(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FieldSpec:
+                            continueStatus=visitFieldSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FieldSpecList:
+                            continueStatus=visitFieldSpecList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FieldValueOrAttrib:
+                            continueStatus=visitFieldValueOrAttrib(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Final:
+                            continueStatus=visitFinal(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FloatKeyword:
+                            continueStatus=visitFloatKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FloatValue:
+                            continueStatus=visitFloatValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ForStatement:
+                            continueStatus=visitForStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FormalPortPar:
+                            continueStatus=visitFormalPortPar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FormalTemplatePar:
+                            continueStatus=visitFormalTemplatePar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FormalTimerPar:
+                            continueStatus=visitFormalTimerPar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FormalTypePar:
+                            continueStatus=visitFormalTypePar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FormalValuePar:
+                            continueStatus=visitFormalValuePar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FromClause:
+                            continueStatus=visitFromClause(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FunctionActualParAssignment:
+                            continueStatus=visitFunctionActualParAssignment(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FriendKeyword:
+                            continueStatus=visitFriendKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FriendModuleDef:
+                            continueStatus=visitFriendModuleDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FunctionActualPar:
+                            continueStatus=visitFunctionActualPar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FunctionActualParList:
+                            continueStatus=visitFunctionActualParList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FunctionBody:
+                            continueStatus=visitFunctionBody(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FunctionDef:
+                            continueStatus=visitFunctionDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FunctionLocalDefOrInst:
+                            continueStatus=visitFunctionLocalDefOrInst(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FunctionLocalDefOrInstList:
+                            continueStatus=visitFunctionLocalDefOrInstList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FunctionStatementList:
+                            continueStatus=visitFunctionStatementList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FunctionFormalPar:
+                            continueStatus=visitFunctionFormalPar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FunctionInstance:
+                            continueStatus=visitFunctionInstance(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FunctionLocalDef:
+                            continueStatus=visitFunctionLocalDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FunctionLocalInst:
+                            continueStatus=visitFunctionLocalInst(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FunctionRef:
+                            continueStatus=visitFunctionRef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FunctionStatement:
+                            continueStatus=visitFunctionStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.GetCallStatement:
+                            continueStatus=visitGetCallStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.GetLocalVerdict:
+                            continueStatus=visitGetLocalVerdict(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.GetReplyStatement:
+                            continueStatus=visitGetReplyStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.GlobalModuleId:
+                            continueStatus=visitGlobalModuleId(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.GotoStatement:
+                            continueStatus=visitGotoStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Group:
+                            continueStatus=visitGroup(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.GroupDef:
+                            continueStatus=visitGroupDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.GuardOp:
+                            continueStatus=visitGuardOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.GuardStatement:
+                            continueStatus=visitGuardStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.HexOrMatch:
+                            continueStatus=visitHexOrMatch(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.HexStringKeyword:
+                            continueStatus=visitHexStringKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.HexStringMatch:
+                            continueStatus=visitHexStringMatch(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.HexStringValue:
+                            continueStatus=visitHexStringValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.HaltStatement:
+                            continueStatus=visitHaltStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Identifier:
+                            continueStatus=visitIdentifier(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.IfPresentMatch:
+                            continueStatus=visitIfPresentMatch(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ImportAllSpec:
+                            continueStatus=visitImportAllSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ImportConstSpec:
+                            continueStatus=visitImportConstSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ImportDef:
+                            continueStatus=visitImportDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ImportElement:
+                            continueStatus=visitImportElement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ImportFromSpec:
+                            continueStatus=visitImportFromSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ImportFunctionSpec:
+                            continueStatus=visitImportFunctionSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ImportGroupSpec:
+                            continueStatus=visitImportGroupSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ImportNamedAltSpec:
+                            continueStatus=visitImportNamedAltSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ImportSignatureSpec:
+                            continueStatus=visitImportSignatureSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ImportSpec:
+                            continueStatus=visitImportSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ImportTemplateSpec:
+                            continueStatus=visitImportTemplateSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ImportTestcaseSpec:
+                            continueStatus=visitImportTestcaseSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ImportTypeDefSpec:
+                            continueStatus=visitImportTypeDefSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.InLineTemplate:
+                            continueStatus=visitInLineTemplate(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.InOutParKeyword:
+                            continueStatus=visitInOutParKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.InParKeyword:
+                            continueStatus=visitInParKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Inconc:
+                            continueStatus=visitInconc(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Infinity:
+                            continueStatus=visitInfinity(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Initial:
+                            continueStatus=visitInitial(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.IntegerKeyword:
+                            continueStatus=visitIntegerKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.IntegerValue:
+                            continueStatus=visitIntegerValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.InterleavedAction:
+                            continueStatus=visitInterleavedAction(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.InterleavedConstruct:
+                            continueStatus=visitInterleavedConstruct(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.InterleavedGuard:
+                            continueStatus=visitInterleavedGuard(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.InterleavedGuardElement:
+                            continueStatus=visitInterleavedGuardElement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.InterleavedGuardList:
+                            continueStatus=visitInterleavedGuardList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.KilledKeyword:
+                            continueStatus=visitKilledKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.LParen:
+                            continueStatus=visitLParen(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.LabelStatement:
+                            continueStatus=visitLabelStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.LanguageSpec:
+                            continueStatus=visitLanguageSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.LengthMatch:
+                            continueStatus=visitLengthMatch(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Lessorequal:
+                            continueStatus=visitLessorequal(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Lessthan:
+                            continueStatus=visitLessthan(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.LogStatement:
+                            continueStatus=visitLogStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.LoopConstruct:
+                            continueStatus=visitLoopConstruct(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.LowerBound:
+                            continueStatus=visitLowerBound(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MTCOp:
+                            continueStatus=visitMTCOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MapStatement:
+                            continueStatus=visitMapStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MatchOp:
+                            continueStatus=visitMatchOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MatchingSymbol:
+                            continueStatus=visitMatchingSymbol(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MessageAttribs:
+                            continueStatus=visitMessageAttribs(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MessageList:
+                            continueStatus=visitMessageList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Minus:
+                            continueStatus=visitMinus(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MixedAttribs:
+                            continueStatus=visitMixedAttribs(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MixedList:
+                            continueStatus=visitMixedList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Mod:
+                            continueStatus=visitMod(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ModifiesKeyword:
+                            continueStatus=visitModifiesKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ModuleControlBody:
+                            continueStatus=visitModuleControlBody(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ModuleControlPart:
+                            continueStatus=visitModuleControlPart(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ModuleDefinition:
+                            continueStatus=visitModuleDefinition(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ModuleDefinitionsList:
+                            continueStatus=visitModuleDefinitionsList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ModuleDefinitionsPart:
+                            continueStatus=visitModuleDefinitionsPart(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ModuleId:
+                            continueStatus=visitModuleId(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ModulePar:
+                            continueStatus=visitModulePar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ModuleParDef:
+                            continueStatus=visitModuleParDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ModuleParList:
+                            continueStatus=visitModuleParList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Moreorequal:
+                            continueStatus=visitMoreorequal(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Morethan:
+                            continueStatus=visitMorethan(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MultiWithAttrib:
+                            continueStatus=visitMultiWithAttrib(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MultiplyOp:
+                            continueStatus=visitMultiplyOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MultitypedModuleParList:
+                            continueStatus=visitMultitypedModuleParList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NamedAltActualPar:
+                            continueStatus=visitNamedAltActualPar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NamedAltActualParList:
+                            continueStatus=visitNamedAltActualParList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NamedAltDef:
+                            continueStatus=visitNamedAltDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NamedAltFormalPar:
+                            continueStatus=visitNamedAltFormalPar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NamedAltFormalParList:
+                            continueStatus=visitNamedAltFormalParList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NamedAltInstance:
+                            continueStatus=visitNamedAltInstance(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NamedAltList:
+                            continueStatus=visitNamedAltList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NamedAltRef:
+                            continueStatus=visitNamedAltRef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NamedAltRefList:
+                            continueStatus=visitNamedAltRefList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NamedKeyword:
+                            continueStatus=visitNamedKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NamedValue:
+                            continueStatus=visitNamedValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NamedValueList:
+                            continueStatus=visitNamedValueList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NoBlockKeyword:
+                            continueStatus=visitNoBlockKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.None:
+                            continueStatus=visitNone(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Not4b:
+                            continueStatus=visitNot4b(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Not:
+                            continueStatus=visitNot(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NotUsedOrExpression:
+                            continueStatus=visitNotUsedOrExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NotUsedSymbol:
+                            continueStatus=visitNotUsedSymbol(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Notequals:
+                            continueStatus=visitNotequals(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NowaitKeyword:
+                            continueStatus=visitNowaitKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Null:
+                            continueStatus=visitNull(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Number:
+                            continueStatus=visitNumber(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OctOrMatch:
+                            continueStatus=visitOctOrMatch(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OctetStringKeyword:
+                            continueStatus=visitOctetStringKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OctetStringMatch:
+                            continueStatus=visitOctetStringMatch(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OctetStringValue:
+                            continueStatus=visitOctetStringValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OmitKeyword:
+                            continueStatus=visitOmitKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OpCall:
+                            continueStatus=visitOpCall(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OpValue:
+                            continueStatus=visitOpValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OptionalKeyword:
+                            continueStatus=visitOptionalKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Or4b:
+                            continueStatus=visitOr4b(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Or:
+                            continueStatus=visitOr(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OutParKeyword:
+                            continueStatus=visitOutParKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OverrideKeyword:
+                            continueStatus=visitOverrideKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ParRef:
+                            continueStatus=visitParRef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ParaAssignmentList:
+                            continueStatus=visitParaAssignmentList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ParaSpec:
+                            continueStatus=visitParaSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Pass:
+                            continueStatus=visitPass(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PermutationMatch:
+                            continueStatus=visitPermutationMatch(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Plane:
+                            continueStatus=visitPlane(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Plus:
+                            continueStatus=visitPlus(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Port:
+                            continueStatus=visitPort(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortCallBody:
+                            continueStatus=visitPortCallBody(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortCallOp:
+                            continueStatus=visitPortCallOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortCatchOp:
+                            continueStatus=visitPortCatchOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortCheckOp:
+                            continueStatus=visitPortCheckOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortClearOp:
+                            continueStatus=visitPortClearOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortDef:
+                            continueStatus=visitPortDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortDefAttribs:
+                            continueStatus=visitPortDefAttribs(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortDefBody:
+                            continueStatus=visitPortDefBody(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortElement:
+                            continueStatus=visitPortElement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortGetCallOp:
+                            continueStatus=visitPortGetCallOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortGetReplyOp:
+                            continueStatus=visitPortGetReplyOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortInstance:
+                            continueStatus=visitPortInstance(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortKeyword:
+                            continueStatus=visitPortKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortOrAll:
+                            continueStatus=visitPortOrAll(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortOrAny:
+                            continueStatus=visitPortOrAny(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortRaiseOp:
+                            continueStatus=visitPortRaiseOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortReceiveOp:
+                            continueStatus=visitPortReceiveOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortRedirect:
+                            continueStatus=visitPortRedirect(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortRedirectWithParam:
+                            continueStatus=visitPortRedirectWithParam(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortRef:
+                            continueStatus=visitPortRef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortReplyOp:
+                            continueStatus=visitPortReplyOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortSendOp:
+                            continueStatus=visitPortSendOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortSpec:
+                            continueStatus=visitPortSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortStartOp:
+                            continueStatus=visitPortStartOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortStopOp:
+                            continueStatus=visitPortStopOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortTriggerOp:
+                            continueStatus=visitPortTriggerOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortType:
+                            continueStatus=visitPortType(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PredefinedType:
+                            continueStatus=visitPredefinedType(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PredefinedValue:
+                            continueStatus=visitPredefinedValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Primary:
+                            continueStatus=visitPrimary(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ProcOrType:
+                            continueStatus=visitProcOrType(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ProcOrTypeList:
+                            continueStatus=visitProcOrTypeList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ProcedureAttribs:
+                            continueStatus=visitProcedureAttribs(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ProcedureList:
+                            continueStatus=visitProcedureList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Product:
+                            continueStatus=visitProduct(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PortHaltOp:
+                            continueStatus=visitPortHaltOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PrivateKeyword:
+                            continueStatus=visitPrivateKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PublicKeyword:
+                            continueStatus=visitPublicKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Quadruple:
+                            continueStatus=visitQuadruple(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.QuestionMark:
+                            continueStatus=visitQuestionMark(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RParen:
+                            continueStatus=visitRParen(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RaiseStatement:
+                            continueStatus=visitRaiseStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Range:
+                            continueStatus=visitRange(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RangeDef:
+                            continueStatus=visitRangeDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RangeOp:
+                            continueStatus=visitRangeOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ReadTimerOp:
+                            continueStatus=visitReadTimerOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ReceiveParameter:
+                            continueStatus=visitReceiveParameter(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ReceiveStatement:
+                            continueStatus=visitReceiveStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RecordDef:
+                            continueStatus=visitRecordDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RecordOfDef:
+                            continueStatus=visitRecordOfDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RecordRef:
+                            continueStatus=visitRecordRef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RecursiveKeyword:
+                            continueStatus=visitRecursiveKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ReferencedType:
+                            continueStatus=visitReferencedType(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ReferencedValue:
+                            continueStatus=visitReferencedValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RelOp:
+                            continueStatus=visitRelOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Rem:
+                            continueStatus=visitRem(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ReplyStatement:
+                            continueStatus=visitReplyStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ReturnStatement:
+                            continueStatus=visitReturnStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ReturnType:
+                            continueStatus=visitReturnType(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Row:
+                            continueStatus=visitRow(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RunningOp:
+                            continueStatus=visitRunningOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RunningTimerOp:
+                            continueStatus=visitRunningTimerOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RunsOnSpec:
+                            continueStatus=visitRunsOnSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SUTAction:
+                            continueStatus=visitSUTAction(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SUTStatements:
+                            continueStatus=visitSUTStatements(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SelfOp:
+                            continueStatus=visitSelfOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SemiColon:
+                            continueStatus=visitSemiColon(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SendParameter:
+                            continueStatus=visitSendParameter(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SendStatement:
+                            continueStatus=visitSendStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SenderSpec:
+                            continueStatus=visitSenderSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SetDef:
+                            continueStatus=visitSetDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SetLocalVerdict:
+                            continueStatus=visitSetLocalVerdict(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SetOfDef:
+                            continueStatus=visitSetOfDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ShiftOp:
+                            continueStatus=visitShiftOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Signature:
+                            continueStatus=visitSignature(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SignatureDef:
+                            continueStatus=visitSignatureDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SignatureFormalPar:
+                            continueStatus=visitSignatureFormalPar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SignatureFormalParList:
+                            continueStatus=visitSignatureFormalParList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SignatureList:
+                            continueStatus=visitSignatureList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SimpleExpression:
+                            continueStatus=visitSimpleExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SimpleExpressions:
+                            continueStatus=visitSimpleExpressions(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SingleConstDef:
+                            continueStatus=visitSingleConstDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SingleExpression:
+                            continueStatus=visitSingleExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SingleQuote:
+                            continueStatus=visitSingleQuote(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SingleTempVarInstance:
+                            continueStatus=visitSingleTempVarInstance(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SingleValueOrAttrib:
+                            continueStatus=visitSingleValueOrAttrib(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SingleVarInstance:
+                            continueStatus=visitSingleVarInstance(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SingleValueSpec:
+                            continueStatus=visitSingleValueSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SingleWithAttrib:
+                            continueStatus=visitSingleWithAttrib(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Slash:
+                            continueStatus=visitSlash(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SquareClose:
+                            continueStatus=visitSquareClose(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SquareOpen:
+                            continueStatus=visitSquareOpen(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Star:
+                            continueStatus=visitStar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.StartStatement:
+                            continueStatus=visitStartStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.StartTCStatement:
+                            continueStatus=visitStartTCStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.StartTimerStatement:
+                            continueStatus=visitStartTimerStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.StatementBlock:
+                            continueStatus=visitStatementBlock(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Step:
+                            continueStatus=visitStep(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.StopStatement:
+                            continueStatus=visitStopStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.StopTCStatement:
+                            continueStatus=visitStopTCStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.StopTimerStatement:
+                            continueStatus=visitStopTimerStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.StringAnyOrOmit:
+                            continueStatus=visitStringAnyOrOmit(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.StringAnyValue:
+                            continueStatus=visitStringAnyValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.StringLength:
+                            continueStatus=visitStringLength(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.StringMatchOp:
+                            continueStatus=visitStringMatchOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.StringOp:
+                            continueStatus=visitStringOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.StructDefBody:
+                            continueStatus=visitStructDefBody(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.StructDefFormalPar:
+                            continueStatus=visitStructDefFormalPar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.StructDefFormalParList:
+                            continueStatus=visitStructDefFormalParList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.StructFieldDef:
+                            continueStatus=visitStructFieldDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.StructFieldRef:
+                            continueStatus=visitStructFieldRef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.StructOfDefBody:
+                            continueStatus=visitStructOfDefBody(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.StructuredTypeDef:
+                            continueStatus=visitStructuredTypeDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SubExpression:
+                            continueStatus=visitSubExpression(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SubTypeDef:
+                            continueStatus=visitSubTypeDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SubTypeSpec:
+                            continueStatus=visitSubTypeSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SubsetMatch:
+                            continueStatus=visitSubsetMatch(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SupersetMatch:
+                            continueStatus=visitSupersetMatch(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SystemOp:
+                            continueStatus=visitSystemOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SystemSpec:
+                            continueStatus=visitSystemSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TTCN3File:
+                            continueStatus=visitTTCN3File(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TTCN3Module:
+                            continueStatus=visitTTCN3Module(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TTCN3ModuleId:
+                            continueStatus=visitTTCN3ModuleId(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TemplateActualPar:
+                            continueStatus=visitTemplateActualPar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TemplateActualParList:
+                            continueStatus=visitTemplateActualParList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TemplateBody:
+                            continueStatus=visitTemplateBody(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TemplateDef:
+                            continueStatus=visitTemplateDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TemplateFormalPar:
+                            continueStatus=visitTemplateFormalPar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TemplateFormalParList:
+                            continueStatus=visitTemplateFormalParList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TemplateInstanceAssignment:
+                            continueStatus=visitTemplateInstanceAssignment(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TemplateInstance:
+                            continueStatus=visitTemplateInstance(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TemplateKeyword:
+                            continueStatus=visitTemplateKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TemplateOps:
+                            continueStatus=visitTemplateOps(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TemplateRef:
+                            continueStatus=visitTemplateRef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TemplateRefWithParList:
+                            continueStatus=visitTemplateRefWithParList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Term:
+                            continueStatus=visitTerm(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TestcaseActualParAssignment:
+                            continueStatus=visitTestcaseActualParAssignment(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TestcaseActualPar:
+                            continueStatus=visitTestcaseActualPar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TestcaseActualParList:
+                            continueStatus=visitTestcaseActualParList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TestcaseDef:
+                            continueStatus=visitTestcaseDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TestcaseInstance:
+                            continueStatus=visitTestcaseInstance(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TestcaseRef:
+                            continueStatus=visitTestcaseRef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TimeoutKeyword:
+                            continueStatus=visitTimeoutKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TimeoutStatement:
+                            continueStatus=visitTimeoutStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TimerInstance:
+                            continueStatus=visitTimerInstance(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TimerKeyword:
+                            continueStatus=visitTimerKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TimerOps:
+                            continueStatus=visitTimerOps(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TimerRef:
+                            continueStatus=visitTimerRef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TimerRefOrAll:
+                            continueStatus=visitTimerRefOrAll(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TimerRefOrAny:
+                            continueStatus=visitTimerRefOrAny(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TimerStatements:
+                            continueStatus=visitTimerStatements(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TimerValue:
+                            continueStatus=visitTimerValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ToClause:
+                            continueStatus=visitToClause(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TriggerStatement:
+                            continueStatus=visitTriggerStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.True:
+                            continueStatus=visitTrue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Type:
+                            continueStatus=visitType(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TypeActualPar:
+                            continueStatus=visitTypeActualPar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TypeActualParList:
+                            continueStatus=visitTypeActualParList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TypeDef:
+                            continueStatus=visitTypeDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TypeDefIdentifier:
+                            continueStatus=visitTypeDefIdentifier(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TypeList:
+                            continueStatus=visitTypeList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TypeReference:
+                            continueStatus=visitTypeReference(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.UnaryOp:
+                            continueStatus=visitUnaryOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Underscore:
+                            continueStatus=visitUnderscore(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.UnionDef:
+                            continueStatus=visitUnionDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.UnionDefBody:
+                            continueStatus=visitUnionDefBody(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.UnionFieldDef:
+                            continueStatus=visitUnionFieldDef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.UniversalChar:
+                            continueStatus=visitUniversalChar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.UniversalCharString:
+                            continueStatus=visitUniversalCharString(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.UniversalKeyword:
+                            continueStatus=visitUniversalKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.UnmapStatement:
+                            continueStatus=visitUnmapStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.UpperBound:
+                            continueStatus=visitUpperBound(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Value:
+                            continueStatus=visitValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ValueList:
+                            continueStatus=visitValueList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ValueMatchSpec:
+                            continueStatus=visitValueMatchSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ValueOrAttribList:
+                            continueStatus=visitValueOrAttribList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ValueOrRange:
+                            continueStatus=visitValueOrRange(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ValueParOrTypePar:
+                            continueStatus=visitValueParOrTypePar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ValueReference:
+                            continueStatus=visitValueReference(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ValueSpec:
+                            continueStatus=visitValueSpec(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ValueofOp:
+                            continueStatus=visitValueofOp(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.VarInitialValue:
+                            continueStatus=visitVarInitialValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.VarInstance:
+                            continueStatus=visitVarInstance(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.VarList:
+                            continueStatus=visitVarList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.VariableAssignment:
+                            continueStatus=visitVariableAssignment(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.VariableEntry:
+                            continueStatus=visitVariableEntry(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.VariableList:
+                            continueStatus=visitVariableList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.VariableRef:
+                            continueStatus=visitVariableRef(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.VerdictOps:
+                            continueStatus=visitVerdictOps(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.VerdictStatements:
+                            continueStatus=visitVerdictStatements(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.VerdictTypeKeyword:
+                            continueStatus=visitVerdictTypeKeyword(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.VerdictTypeValue:
+                            continueStatus=visitVerdictTypeValue(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Visibility:
+                            continueStatus=visitVisibility(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.WhileStatement:
+                            continueStatus=visitWhileStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.WithAttribList:
+                            continueStatus=visitWithAttribList(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.WithStatement:
+                            continueStatus=visitWithStatement(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Xor4b:
+                            continueStatus=visitXor4b(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Xor:
+                            continueStatus=visitXor(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BSTRING:
+                            continueStatus=visitBSTRING(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BSTRINGMATCH:
+                            continueStatus=visitBSTRINGMATCH(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DOT:
+                            continueStatus=visitDOT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FLOATVALUE:
+                            continueStatus=visitFLOATVALUE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.HSTRING:
+                            continueStatus=visitHSTRING(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.HSTRINGMATCH:
+                            continueStatus=visitHSTRINGMATCH(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OSTRING:
+                            continueStatus=visitOSTRING(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OSTRINGMATCH:
+                            continueStatus=visitOSTRINGMATCH(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RANGEOP:
+                            continueStatus=visitRANGEOP(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ACTION:
+                            continueStatus=visitACTION(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ACTIVATE:
+                            continueStatus=visitACTIVATE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ADDRESS:
+                            continueStatus=visitADDRESS(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ALIVE:
+                            continueStatus=visitALIVE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ALL:
+                            continueStatus=visitALL(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ALT:
+                            continueStatus=visitALT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ALTSTEP:
+                            continueStatus=visitALTSTEP(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AND:
+                            continueStatus=visitAND(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.AND4B:
+                            continueStatus=visitAND4B(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ANY:
+                            continueStatus=visitANY(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ANYTYPE:
+                            continueStatus=visitANYTYPE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BITSTRING:
+                            continueStatus=visitBITSTRING(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BOOLEAN:
+                            continueStatus=visitBOOLEAN(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BREAK:
+                            continueStatus=visitBREAK(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CALL:
+                            continueStatus=visitCALL(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CASE:
+                            continueStatus=visitCASE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CATCH:
+                            continueStatus=visitCATCH(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CHAR:
+                            continueStatus=visitCHAR(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CHARSTRING:
+                            continueStatus=visitCHARSTRING(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CHECK:
+                            continueStatus=visitCHECK(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CLEAR:
+                            continueStatus=visitCLEAR(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.COMPLEMENT:
+                            continueStatus=visitCOMPLEMENT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.COMPONENT:
+                            continueStatus=visitCOMPONENT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CONNECT:
+                            continueStatus=visitCONNECT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CONST:
+                            continueStatus=visitCONST(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CONTINUE:
+                            continueStatus=visitCONTINUE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CONTROL:
+                            continueStatus=visitCONTROL(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CREATE:
+                            continueStatus=visitCREATE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DEACTIVATE:
+                            continueStatus=visitDEACTIVATE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DEFAULT:
+                            continueStatus=visitDEFAULT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DISCONNECT:
+                            continueStatus=visitDISCONNECT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DISPLAY:
+                            continueStatus=visitDISPLAY(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DO:
+                            continueStatus=visitDO(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DONE:
+                            continueStatus=visitDONE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ELSE:
+                            continueStatus=visitELSE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ENCODE:
+                            continueStatus=visitENCODE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ENUMERATED:
+                            continueStatus=visitENUMERATED(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ERROR:
+                            continueStatus=visitERROR(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.EXCEPT:
+                            continueStatus=visitEXCEPT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.EXCEPTION:
+                            continueStatus=visitEXCEPTION(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.EXECUTE:
+                            continueStatus=visitEXECUTE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.EXTENDS:
+                            continueStatus=visitEXTENDS(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.EXTENSION:
+                            continueStatus=visitEXTENSION(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.EXTERNAL:
+                            continueStatus=visitEXTERNAL(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FAIL:
+                            continueStatus=visitFAIL(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FALSE:
+                            continueStatus=visitFALSE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FLOAT:
+                            continueStatus=visitFLOAT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FOR:
+                            continueStatus=visitFOR(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FROM:
+                            continueStatus=visitFROM(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FUNCTION:
+                            continueStatus=visitFUNCTION(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.FRIEND:
+                            continueStatus=visitFRIEND(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.GETCALL:
+                            continueStatus=visitGETCALL(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.GETREPLY:
+                            continueStatus=visitGETREPLY(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.GETVERDICT:
+                            continueStatus=visitGETVERDICT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.GOTO:
+                            continueStatus=visitGOTO(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.GROUP:
+                            continueStatus=visitGROUP(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.HALT:
+                            continueStatus=visitHALT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.HEXSTRING:
+                            continueStatus=visitHEXSTRING(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.IF:
+                            continueStatus=visitIF(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.IFPRESENT:
+                            continueStatus=visitIFPRESENT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.IMPORT:
+                            continueStatus=visitIMPORT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.IN:
+                            continueStatus=visitIN(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.INCONC:
+                            continueStatus=visitINCONC(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.INFINITY:
+                            continueStatus=visitINFINITY(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.INOUT:
+                            continueStatus=visitINOUT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.INTEGER:
+                            continueStatus=visitINTEGER(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.INTERLEAVE:
+                            continueStatus=visitINTERLEAVE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.KILL:
+                            continueStatus=visitKILL(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.KILLED:
+                            continueStatus=visitKILLED(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.LABEL:
+                            continueStatus=visitLABEL(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.LANGUAGE:
+                            continueStatus=visitLANGUAGE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.LENGTH:
+                            continueStatus=visitLENGTH(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.LOG:
+                            continueStatus=visitLOG(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MAP:
+                            continueStatus=visitMAP(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MATCH:
+                            continueStatus=visitMATCH(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MESSAGE:
+                            continueStatus=visitMESSAGE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MIXED:
+                            continueStatus=visitMIXED(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MOD:
+                            continueStatus=visitMOD(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MODIFIES:
+                            continueStatus=visitMODIFIES(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MODULE:
+                            continueStatus=visitMODULE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MODULEPAR:
+                            continueStatus=visitMODULEPAR(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MTC:
+                            continueStatus=visitMTC(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NOBLOCK:
+                            continueStatus=visitNOBLOCK(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NONE:
+                            continueStatus=visitNONE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NOT:
+                            continueStatus=visitNOT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NOT4B:
+                            continueStatus=visitNOT4B(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NOWAIT:
+                            continueStatus=visitNOWAIT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NULL:
+                            continueStatus=visitNULL(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OBJID:
+                            continueStatus=visitOBJID(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OCTETSTRING:
+                            continueStatus=visitOCTETSTRING(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OF:
+                            continueStatus=visitOF(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OMIT:
+                            continueStatus=visitOMIT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ON:
+                            continueStatus=visitON(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OPTIONAL:
+                            continueStatus=visitOPTIONAL(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OR:
+                            continueStatus=visitOR(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OR4B:
+                            continueStatus=visitOR4B(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OUT:
+                            continueStatus=visitOUT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OVERRIDE:
+                            continueStatus=visitOVERRIDE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PARAM:
+                            continueStatus=visitPARAM(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PASS:
+                            continueStatus=visitPASS(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PATTERN:
+                            continueStatus=visitPATTERN(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PERMUTATION:
+                            continueStatus=visitPERMUTATION(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PORT:
+                            continueStatus=visitPORT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PRESENT:
+                            continueStatus=visitPRESENT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PRIVATE:
+                            continueStatus=visitPRIVATE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PROCEDURE:
+                            continueStatus=visitPROCEDURE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PUBLIC:
+                            continueStatus=visitPUBLIC(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RAISE:
+                            continueStatus=visitRAISE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.READ:
+                            continueStatus=visitREAD(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RECEIVE:
+                            continueStatus=visitRECEIVE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RECORD:
+                            continueStatus=visitRECORD(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RECURSIVE:
+                            continueStatus=visitRECURSIVE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.REM:
+                            continueStatus=visitREM(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.REPEAT:
+                            continueStatus=visitREPEAT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.REPLY:
+                            continueStatus=visitREPLY(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RETURN:
+                            continueStatus=visitRETURN(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RUNNING:
+                            continueStatus=visitRUNNING(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RUNS:
+                            continueStatus=visitRUNS(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SELECT:
+                            continueStatus=visitSELECT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SELF:
+                            continueStatus=visitSELF(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SEND:
+                            continueStatus=visitSEND(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SENDER:
+                            continueStatus=visitSENDER(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SET:
+                            continueStatus=visitSET(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SETVERDICT:
+                            continueStatus=visitSETVERDICT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SIGNATURE:
+                            continueStatus=visitSIGNATURE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.START:
+                            continueStatus=visitSTART(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.STOP:
+                            continueStatus=visitSTOP(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SUBSET:
+                            continueStatus=visitSUBSET(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SUPERSET:
+                            continueStatus=visitSUPERSET(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SYSTEM:
+                            continueStatus=visitSYSTEM(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TEMPLATE:
+                            continueStatus=visitTEMPLATE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TESTCASE:
+                            continueStatus=visitTESTCASE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TIMEOUT:
+                            continueStatus=visitTIMEOUT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TIMER:
+                            continueStatus=visitTIMER(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TO:
+                            continueStatus=visitTO(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TRIGGER:
+                            continueStatus=visitTRIGGER(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TRUE:
+                            continueStatus=visitTRUE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.TYPE:
+                            continueStatus=visitTYPE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.UNION:
+                            continueStatus=visitUNION(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.UNIVERSAL:
+                            continueStatus=visitUNIVERSAL(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.UNMAP:
+                            continueStatus=visitUNMAP(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.VALUE:
+                            continueStatus=visitVALUE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.VAR:
+                            continueStatus=visitVAR(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.VARIANT:
+                            continueStatus=visitVARIANT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.VERDICTTYPE:
+                            continueStatus=visitVERDICTTYPE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.WHILE:
+                            continueStatus=visitWHILE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.WITH:
+                            continueStatus=visitWITH(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.XOR:
+                            continueStatus=visitXOR(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.XOR4B:
+                            continueStatus=visitXOR4B(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.WS:
+                            continueStatus=visitWS(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SL_COMMENT:
+                            continueStatus=visitSL_COMMENT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ML_COMMENT:
+                            continueStatus=visitML_COMMENT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.IDENTIFIER:
+                            continueStatus=visitIDENTIFIER(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ASSIGNMENTCHAR:
+                            continueStatus=visitASSIGNMENTCHAR(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PORTREDIRECTSYMBOL:
+                            continueStatus=visitPORTREDIRECTSYMBOL(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BEGINCHAR:
+                            continueStatus=visitBEGINCHAR(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.CSTRING:
+                            continueStatus=visitCSTRING(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.STRING:
+                            continueStatus=visitSTRING(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NUMBER:
+                            continueStatus=visitNUMBER(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.EXPONENT:
+                            continueStatus=visitEXPONENT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SEMICOLON:
+                            continueStatus=visitSEMICOLON(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.COMMA:
+                            continueStatus=visitCOMMA(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DOUBLECOLON:
+                            continueStatus=visitDOUBLECOLON(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.COLON:
+                            continueStatus=visitCOLON(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.UNDERSCORE:
+                            continueStatus=visitUNDERSCORE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ENDCHAR:
+                            continueStatus=visitENDCHAR(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SQUAREOPEN:
+                            continueStatus=visitSQUAREOPEN(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SQUARECLOSE:
+                            continueStatus=visitSQUARECLOSE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.LPAREN:
+                            continueStatus=visitLPAREN(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.RPAREN:
+                            continueStatus=visitRPAREN(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.LESSTHAN:
+                            continueStatus=visitLESSTHAN(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MORETHAN:
+                            continueStatus=visitMORETHAN(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.NOTEQUALS:
+                            continueStatus=visitNOTEQUALS(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MOREOREQUAL:
+                            continueStatus=visitMOREOREQUAL(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.LESSOREQUAL:
+                            continueStatus=visitLESSOREQUAL(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.EQUAL:
+                            continueStatus=visitEQUAL(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PLUS:
+                            continueStatus=visitPLUS(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.MINUS:
+                            continueStatus=visitMINUS(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.STAR:
+                            continueStatus=visitSTAR(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SLASH:
+                            continueStatus=visitSLASH(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SINGLEQUOTE:
+                            continueStatus=visitSINGLEQUOTE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.DOUBLEQUOTE:
+                            continueStatus=visitDOUBLEQUOTE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.QUESTIONMARK:
+                            continueStatus=visitQUESTIONMARK(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SHIFTLEFT:
+                            continueStatus=visitSHIFTLEFT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.SHIFTRIGHT:
+                            continueStatus=visitSHIFTRIGHT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ROTATELEFT:
+                            continueStatus=visitROTATELEFT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.ROTATERIGHT:
+                            continueStatus=visitROTATERIGHT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.STRINGANYVALUE:
+                            continueStatus=visitSTRINGANYVALUE(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.STRINGANYOROMIT:
+                            continueStatus=visitSTRINGANYOROMIT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.QUOTESYMBOL:
+                            continueStatus=visitQUOTESYMBOL(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.STRINGOP:
+                            continueStatus=visitSTRINGOP(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Zero:
+                            continueStatus=visitZero(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Nonzeronum:
+                            continueStatus=visitNonzeronum(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Nonzeronumber:
+                            continueStatus=visitNonzeronumber(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Decimalnumber:
+                            continueStatus=visitDecimalnumber(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Num:
+                            continueStatus=visitNum(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.BIN:
+                            continueStatus=visitBIN(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.HEX:
+                            continueStatus=visitHEX(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OCT:
+                            continueStatus=visitOCT(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Char:
+                            continueStatus=visitChar(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.GeneralTextCharacter:
+                            continueStatus=visitGeneralTextCharacter(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Alphanumeric:
+                            continueStatus=visitAlphanumeric(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Letter:
+                            continueStatus=visitLetter(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.UppercaseLetter:
+                            continueStatus=visitUppercaseLetter(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.LowercaseLetter:
+                            continueStatus=visitLowercaseLetter(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Special:
+                            continueStatus=visitSpecial(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OtherSpecial:
+                            continueStatus=visitOtherSpecial(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.OtherCharacter:
+                            continueStatus=visitOtherCharacter(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.Space:
+                            continueStatus=visitSpace(node);
+                            return continueStatus;
+            case TTCN3ParserTokenTypes.PreProcessorMacro:
+                            continueStatus=visitPreProcessorMacro(node);
+                            return continueStatus;
+        }
+        return new ContinueStatus();
+    }
+
+    public abstract void init();
+    public abstract void finish();
+    
+    public void acceptDFS(LocationAST node) throws TTCN3BehaviorException {
+        init();
+        searchASTDepthFirst(node);
+        finish();
+    }
+
+    public void acceptBFS(LocationAST node) throws TTCN3BehaviorException {
+        init();
+        searchASTBreadthFirst(node);
+        finish();
+    }
+
+    protected ContinueStatus searchASTDepthFirst(LocationAST node) throws TTCN3BehaviorException {
+        if (node == null)
+            return ContinueStatus.getInstance(true, true);
+
+        LocationAST next = node;
+        while (next != null) {
+            ContinueStatus continueStatus = visit(next);
+            if (!continueStatus.continueSearch)
+                return ContinueStatus.getInstance(false, false);
+            if (continueStatus.goDeeper)
+                searchASTDepthFirst(next.getFirstChild());
+            next = next.getNextSibling();
+        }
+        return ContinueStatus.getInstance(true, true);
+    }
+
+    protected ContinueStatus searchASTBreadthFirst(LocationAST node) throws TTCN3BehaviorException {
+        if (node == null)
+            return ContinueStatus.getInstance(true, true);
+        
+        Queue<LocationAST> open = new LinkedList<LocationAST>();
+        open.add(node);
+        searchASTBreadthFirst(open);
+        return ContinueStatus.getInstance(true, true);
+    }
+
+    private ContinueStatus searchASTBreadthFirst(Queue<LocationAST> nodes) throws TTCN3BehaviorException {
+        Queue<LocationAST> open = new LinkedList<LocationAST>();
+        Iterator<LocationAST> it = nodes.iterator();
+        while (it.hasNext()) {
+            LocationAST item = it.next();
+            while (item != null) {
+                ContinueStatus continueStatus = visit(item);
+                if (!continueStatus.continueSearch)
+                    return ContinueStatus.getInstance(false, false);
+                if ( (item.getFirstChild() != null) && (continueStatus.goDeeper) )
+                    open.add(item.getFirstChild());
+                item = item.getNextSibling();
+            }
+        }
+        if (open.size() > 0)
+            searchASTBreadthFirst(open);
+        return ContinueStatus.getInstance(true, true);
+    }
+
+    static class ContinueStatus {
+        public boolean continueSearch = true;
+        public boolean goDeeper = true;
+        private static ContinueStatus truetrue = new ContinueStatus(true, true);
+        private static ContinueStatus truefalse = new ContinueStatus(true, false);
+        private static ContinueStatus falsetrue = new ContinueStatus(false, true);
+        private static ContinueStatus falsefalse = new ContinueStatus(false, false);
+
+        private ContinueStatus() {
+            this.continueSearch = true;
+            this.goDeeper = true;
+        }
+
+        private ContinueStatus(boolean continueSearch, boolean goDeeper) {
+            this.continueSearch = continueSearch;
+            this.goDeeper = goDeeper;
+        }
+
+        public static ContinueStatus getInstance(boolean continueSearch, boolean goDeeper) {
+            if (continueSearch && goDeeper) {
+                return truetrue;
+            } else if (!continueSearch && goDeeper) {
+                return falsetrue;
+            } else if (continueSearch && !goDeeper) {
+                return truefalse;
+            } else {
+                return falsefalse;
+            }
+        }
+    }
+    
+
+}
Index: /trunk/t3q/src/org/etsi/t3q/visitor/ModuleContentsChecker.java
===================================================================
--- /trunk/t3q/src/org/etsi/t3q/visitor/ModuleContentsChecker.java	(revision 7)
+++ /trunk/t3q/src/org/etsi/t3q/visitor/ModuleContentsChecker.java	(revision 7)
@@ -0,0 +1,108 @@
+package org.etsi.t3q.visitor;
+
+import java.util.ArrayList;
+
+import org.etsi.t3q.T3Q;
+
+
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.TTCN3ParserTokenTypes;
+
+public class ModuleContentsChecker extends AbstractModuleContentsChecker {
+
+	public static final String TypesAndValuesModuleIDSubstring = "TypesAndValues";
+	public static final String TemplatesModuleIDSubstring = "Templates";
+	public static final String FunctionsModuleIDSubstring = "Functions";
+	public static final String TestcasesModuleIDSubstring = "Testcases";
+	public static final String ModuleParamsModuleIDSubstring = "ModuleParams";
+	public static final String InterfaceModuleIDSubstring = "Interface";
+	public static final String TestSystemModuleIDSubstring = "TestSystem";
+	public static final String TestControlModuleIDSubstring = "TestControl";
+
+	public ModuleContentsChecker() {
+		super();
+		addTypesAndValuesModulePermissibleTypes();
+		addTemplatesModulePermissibleTypes();
+		addFunctionsModulePermissibleTypes();
+		addTestcasesModulePermissibleTypes();
+		addModuleParamsModulePermissibleTypes();
+		addInterfaceModulePermissibleTypes();
+		addTestSystemModulePermissibleTypes();
+		addTestControlModulePermissibleTypes();
+	}
+
+	private void addTypesAndValuesModulePermissibleTypes() {
+		ArrayList<Integer> permissibleTypesList = new ArrayList<Integer>();
+
+		permissibleTypesList.add(TTCN3ParserTokenTypes.TypeDef);
+		permissibleTypesList.add(TTCN3ParserTokenTypes.ConstDef);
+
+		addPermissibleListForModuleID(TypesAndValuesModuleIDSubstring,
+				permissibleTypesList);
+	}
+
+	private void addTemplatesModulePermissibleTypes() {
+		ArrayList<Integer> permissibleTypesList = new ArrayList<Integer>();
+
+		permissibleTypesList.add(TTCN3ParserTokenTypes.TemplateDef);
+
+		addPermissibleListForModuleID(TemplatesModuleIDSubstring,
+				permissibleTypesList);
+
+	}
+
+	private void addFunctionsModulePermissibleTypes() {
+		ArrayList<Integer> permissibleTypesList = new ArrayList<Integer>();
+		permissibleTypesList.add(TTCN3ParserTokenTypes.FunctionDef);
+		permissibleTypesList.add(TTCN3ParserTokenTypes.AltstepDef);
+		if (T3Q.activeProfile.isCheckFunctionsModuleContainmentCheckAllowExtFunction()){
+			permissibleTypesList.add(TTCN3ParserTokenTypes.ExtFunctionDef);
+		}
+		
+		addPermissibleListForModuleID(FunctionsModuleIDSubstring,
+				permissibleTypesList);
+
+	}
+
+	private void addTestcasesModulePermissibleTypes() {
+		ArrayList<Integer> permissibleTypesList = new ArrayList<Integer>();
+		permissibleTypesList.add(TTCN3ParserTokenTypes.TestcaseDef);
+		permissibleTypesList.add(TTCN3ParserTokenTypes.FunctionDef);
+		addPermissibleListForModuleID(TestcasesModuleIDSubstring,
+				permissibleTypesList);
+
+	}
+
+	private void addModuleParamsModulePermissibleTypes() {
+		ArrayList<Integer> permissibleTypesList = new ArrayList<Integer>();
+		permissibleTypesList.add(TTCN3ParserTokenTypes.ModuleParDef);
+		addPermissibleListForModuleID(ModuleParamsModuleIDSubstring,
+				permissibleTypesList);
+
+	}
+
+	private void addInterfaceModulePermissibleTypes() {
+		ArrayList<Integer> permissibleTypesList = new ArrayList<Integer>();
+		permissibleTypesList.add(TTCN3ParserTokenTypes.ComponentDef);
+		permissibleTypesList.add(TTCN3ParserTokenTypes.PortDef);
+		addPermissibleListForModuleID(InterfaceModuleIDSubstring,
+				permissibleTypesList);
+
+	}
+
+	private void addTestSystemModulePermissibleTypes() {
+		ArrayList<Integer> permissibleTypesList = new ArrayList<Integer>();
+		permissibleTypesList.add(TTCN3ParserTokenTypes.ComponentDef);
+		addPermissibleListForModuleID(TestSystemModuleIDSubstring,
+				permissibleTypesList);
+
+	}
+
+	private void addTestControlModulePermissibleTypes() {
+		ArrayList<Integer> permissibleTypesList = new ArrayList<Integer>();
+		//No definitions are permitted
+		addPermissibleListForModuleID(TestControlModuleIDSubstring,
+				permissibleTypesList);
+
+	}
+
+}
Index: /trunk/t3q/src/org/etsi/t3q/visitor/NamingConventionsChecker.java
===================================================================
--- /trunk/t3q/src/org/etsi/t3q/visitor/NamingConventionsChecker.java	(revision 7)
+++ /trunk/t3q/src/org/etsi/t3q/visitor/NamingConventionsChecker.java	(revision 7)
@@ -0,0 +1,434 @@
+package org.etsi.t3q.visitor;
+
+import java.util.LinkedList;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.etsi.common.MiscTools;
+import org.etsi.common.exceptions.TerminationException;
+import org.etsi.common.logging.LoggingInterface.MessageClass;
+import org.etsi.t3q.T3Q;
+
+import antlr.collections.AST;
+
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.ASTUtil;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.LocationAST;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.TTCN3ParserTokenTypes;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.symboltable.Symbol;
+
+public class NamingConventionsChecker {
+
+	private QualityChecker checker = null;
+
+	public NamingConventionsChecker(QualityChecker checker) {
+		this.checker = checker;
+	}
+
+	//TODO: remove coupling with quality checker and add custom logger, potentially the whole logging process shall be moved to a separate hierarchy
+	
+	private boolean regExpMatch(String regExp, String subject) {
+		boolean matches = false;
+		Pattern pattern = Pattern.compile(regExp);
+		Matcher matcher = pattern.matcher(subject);
+		// System.out.println(regExp + " : " + subject);
+		if (matcher.matches()) {
+			matches = true;
+		}
+		return matches;
+	}
+
+	private void checkIdentifierForNamingConventionCompliance(LocationAST node,
+			String regExp, String type) {
+		if (regExp == null){
+			try {
+				throw new TerminationException("ERROR: Naming conventions rule for \""+type+"\" is not set! Configuration profile may be outdated or corrupted!");
+			} catch (TerminationException e) {
+			}
+		}
+		
+		if (regExp.equals("")) {
+			return;
+		}
+		LocationAST identifierNode = (LocationAST) ASTUtil.findChild(node,
+				TTCN3ParserTokenTypes.Identifier);
+		if (identifierNode == null) {
+			if (ASTUtil.findChild(node, TTCN3ParserTokenTypes.AddressKeyword) == null) {
+				checker.getLoggingInterface().logFix(node.getLine(), node.getEndLine(), MessageClass.NAMING, "Could not determine identifier or address leaf node under: " + node + " while analyzing for type  \"" + type + "\"", "2.1, "+MiscTools.getMethodName());
+			}
+			return;
+		}
+		String identifier = identifierNode.getFirstChild().getText();
+
+		if (!regExpMatch(regExp, identifier)) {
+			checker
+					.getLoggingInterface()
+					.logWarning(
+							node.getLine(),
+							node.getEndLine(),
+							MessageClass.NAMING,
+							"\""
+									+ identifier
+									+ "\" does not comply to the naming conventions for \""
+									+ type + "\"!" 
+									, "2.1, " + regExp);
+			
+		}
+	}
+
+	public void checkFunction(LocationAST node) {
+		String regExp = T3Q.activeProfile.getNamingConventionsConfig()
+				.getFunctionRegExp();
+		checkIdentifierForNamingConventionCompliance(node, regExp, "Function");
+	}
+
+	public void checkExtFunction(LocationAST node) {
+		String regExp = T3Q.activeProfile.getNamingConventionsConfig()
+				.getExtFunctionRegExp();
+		checkIdentifierForNamingConventionCompliance(node, regExp,
+				"ExtFunction");
+	}
+
+	public void checkConstant(LocationAST node) {
+		String regExp = "";
+		String message = "";
+		if (node.getNthParent(2).getType() == TTCN3ParserTokenTypes.ModuleDefinition){
+			regExp = T3Q.activeProfile.getNamingConventionsConfig()
+					.getConstantRegExp();
+			message = "Constant";
+		} else {
+			regExp = T3Q.activeProfile.getNamingConventionsConfig()
+			.getLocalConstantRegExp();
+			message = "Local Constant";
+		}
+		checkIdentifierForNamingConventionCompliance(node, regExp, message);
+
+	}
+
+	public void checkExtConstant(LocationAST node) {
+		String regExp = T3Q.activeProfile.getNamingConventionsConfig()
+				.getExtConstantRegExp();
+
+		LocationAST identifierNode = node.getFirstChild().getNextSibling();
+		do {
+			checkIdentifierForNamingConventionCompliance(identifierNode,
+					regExp, "External Constant");
+		} while ((identifierNode = identifierNode.getNextSibling()) != null);
+	}
+
+	public void checkAltstep(LocationAST node) {
+		String regExp = T3Q.activeProfile.getNamingConventionsConfig()
+				.getAltstepRegExp();
+		checkIdentifierForNamingConventionCompliance(node, regExp, "Altstep");
+	}
+
+	public void checkGroup(LocationAST node) {
+		String regExp = T3Q.activeProfile.getNamingConventionsConfig()
+				.getGroupRegExp();
+		checkIdentifierForNamingConventionCompliance(node, regExp, "Group");
+	}
+
+	public void checkModule(LocationAST node) {
+		String regExp = T3Q.activeProfile.getNamingConventionsConfig()
+				.getModuleRegExp();
+		checkIdentifierForNamingConventionCompliance(node, regExp, "Module");
+	}
+
+	public void checkModuleParameter(LocationAST node) {
+		String regExp = T3Q.activeProfile.getNamingConventionsConfig()
+				.getModuleParameterRegExp();
+		LocationAST identifierNode = node.getFirstChild();
+		do {
+			if (identifierNode.getType() == TTCN3ParserTokenTypes.Identifier) {
+				checkIdentifierForNamingConventionCompliance(identifierNode,
+						regExp, "ModuleParameter");
+			}
+		} while ((identifierNode = identifierNode.getNextSibling()) != null);
+	}
+
+	public void checkPortInstance(LocationAST node) {
+		String regExp = T3Q.activeProfile.getNamingConventionsConfig()
+				.getPortInstanceRegExp();
+		LocationAST portElementNode = node.getFirstChild().getNextSibling();
+		do {
+			checkIdentifierForNamingConventionCompliance(portElementNode,
+					regExp, "PortInstance");
+		} while ((portElementNode = portElementNode.getNextSibling()) != null);
+	}
+
+	public void checkTestcase(LocationAST node) {
+		String regExp = T3Q.activeProfile.getNamingConventionsConfig()
+				.getTestcaseRegExp();
+		checkIdentifierForNamingConventionCompliance(node, regExp, "Testcase");
+	}
+
+	public void checkSignatureTemplate(LocationAST node) {
+		String regExp = T3Q.activeProfile.getNamingConventionsConfig()
+				.getSignatureTemplateRegExp();
+		checkIdentifierForNamingConventionCompliance(node, regExp,
+				"SignatureTemplate");
+	}
+
+	public void checkFormalParameter(LocationAST node) {
+		String regExp = T3Q.activeProfile.getNamingConventionsConfig()
+				.getFormalParameterRegExp();
+		LocationAST identifierNode = (LocationAST) ASTUtil.findSibling(node
+				.getFirstChild(), TTCN3ParserTokenTypes.Identifier);
+		checkIdentifierForNamingConventionCompliance(identifierNode, regExp,
+				"FormalParameter");
+	}
+
+	public void checkEnumeratedValue(LocationAST node) {
+		String regExp = T3Q.activeProfile.getNamingConventionsConfig()
+				.getEnumeratedValueRegExp();
+		checkIdentifierForNamingConventionCompliance(node, regExp,
+				"EnumeratedValue");
+	}
+
+	public void checkDataType(LocationAST node) {
+		String regExp = T3Q.activeProfile.getNamingConventionsConfig()
+				.getDataTypeRegExp();
+		LocationAST targetNode = node;
+		// adjust for differences in tree structure
+		if ((node.getNthChild(2).getType() == TTCN3ParserTokenTypes.RecordOfDef)
+				|| (node.getNthChild(2).getType() == TTCN3ParserTokenTypes.SetOfDef)) {
+			if (node.getNthChild(3).getType() == TTCN3ParserTokenTypes.StringLength){
+				targetNode = node.getNthChild(3).getNextSibling().getFirstChild().getNextSibling();
+			} else {
+				targetNode = node.getNthChild(4).getNextSibling();
+			}
+		} else if (node.getFirstChild().getType() == TTCN3ParserTokenTypes.SubTypeDef) {
+			targetNode = node.getNthChild(2).getNextSibling();
+		}
+		checkIdentifierForNamingConventionCompliance(targetNode, regExp,
+				"DataType");
+	}
+
+	public void checkSTF160Template(LocationAST node) {
+		String regExp = "";
+		String templateType = "";
+		boolean isSendTemplate = false;
+		boolean isAmbiguous = false;
+		LocationAST identifierNode = null;
+		boolean isDerived = false;
+		if (ASTUtil.findDerivedDef(node)!= null){
+			isDerived = true;
+		}
+
+		//duplicates checkMessageTemplate
+		if (node.getFirstChild().getType() == TTCN3ParserTokenTypes.BaseTemplate) {
+			identifierNode = node.getFirstChild().getFirstChild()
+					.getNextSibling();
+		} else {
+			identifierNode = node.getFirstChild().getNextSibling()
+					.getFirstChild().getNextSibling();
+		}
+		//end of duplication
+		
+		LocationAST templateRestrictionNode = (LocationAST) ASTUtil.findChild(node,
+				TTCN3ParserTokenTypes.TemplateRestriction);
+		if (templateRestrictionNode != null) {
+			// check if it is not a present restriction
+			if (templateRestrictionNode.getFirstChild().getType() != TTCN3ParserTokenTypes.PRESENT) {
+
+				LinkedList<LocationAST> formalTemplateParameters = ASTUtil.findTypeNodes(node,
+						TTCN3ParserTokenTypes.FormalTemplatePar);
+				for (LocationAST formalTemplateParameter : formalTemplateParameters) {
+					LinkedList<LocationAST> formalParameterTemplateRestrictionNodes = ASTUtil.findTypeNodes(formalTemplateParameter,
+							TTCN3ParserTokenTypes.TemplateRestriction);
+					if (formalParameterTemplateRestrictionNodes == null
+							|| formalParameterTemplateRestrictionNodes.isEmpty()) {
+						// problem occurred, inconsistent definition
+						isAmbiguous=true;
+					} else {
+						LocationAST restrictionNode = formalParameterTemplateRestrictionNodes.get(0);
+						if (restrictionNode.getFirstChild().getType() == TTCN3ParserTokenTypes.PRESENT) {
+							// problem occurred, inconsistent definition
+							isAmbiguous	= true;
+						}
+					}
+					if (isAmbiguous) {
+						checker
+						.getLoggingInterface()
+						.logInformation(
+								node.getLine(),
+								node.getEndLine(),
+								MessageClass.NAMING,
+								"The template definition for \""
+										+ identifierNode.getFirstChild().getText()
+										+ "\" is ambiguous. It cannot be determined whether it is a send or a receive template according to STF160's conventions. It will not be analyzed further for naming conventions compliance.",
+								"2.1, " + MiscTools.getMethodName());
+						return;
+					}
+				}
+				//if no problems occurred this far check name for send template
+				isSendTemplate = true;
+			}
+			//(else) check name for receive template
+		}
+		//(else) check name for receive template
+		if (!isDerived) {
+			if (isSendTemplate) {
+				templateType = "STF160SendTemplate";
+				regExp = T3Q.activeProfile	.getNamingConventionsConfig()
+											.getStf160sendTemplateRegExp();
+			} else {
+				templateType = "STF160ReceiveTemplate";
+				regExp = T3Q.activeProfile	.getNamingConventionsConfig()
+											.getStf160receiveTemplateRegExp();
+			}
+		} else {
+			if (isSendTemplate) {
+				templateType = "DerivedSTF160SendTemplate";
+				regExp = T3Q.activeProfile	.getNamingConventionsConfig()
+											.getDerivedStf160sendTemplateRegExp();
+			} else {
+				templateType = "DerivedSTF160ReceiveTemplate";
+				regExp = T3Q.activeProfile	.getNamingConventionsConfig()
+											.getDerivedStf160receiveTemplateRegExp();
+			}
+
+		}
+		checkIdentifierForNamingConventionCompliance(identifierNode, regExp,
+				templateType);
+	}
+	
+	
+	
+	
+	public void checkMessageTemplate(LocationAST node) {
+		// TODO: needs a deep analysis of contents (analyzing the referenced
+		// template types if any) and also modified templates (which may be
+		// difficult to impossible)
+		String regExp = "";
+		String templateType = "";
+		boolean isDerived = false;
+		if (ASTUtil.findDerivedDef(node)!= null){
+			isDerived = true;
+		}
+		
+		// basic shallow search
+		LinkedList<LocationAST> matchingSymbolNodes = ASTUtil.findTypeNodes(
+				node, TTCN3ParserTokenTypes.MatchingSymbol);
+		// TODO: implement an advanced deep search
+
+		
+		if (!isDerived){
+			if (matchingSymbolNodes.isEmpty()) {
+				regExp = T3Q.activeProfile	.getNamingConventionsConfig()
+											.getMessageTemplateRegExp();
+				templateType = "MessageTemplate";
+			} else {
+				regExp = T3Q.activeProfile	.getNamingConventionsConfig()
+											.getMessageTemplateWithWildcardsRegExp();
+				templateType = "MessageTemplateWithMatchingExpression";
+			}
+		} else {
+			if (matchingSymbolNodes.isEmpty()) {
+				regExp = T3Q.activeProfile.getNamingConventionsConfig()
+						.getDerivedMessageTemplateRegExp();
+				templateType = "DerivedMessageTemplate";
+			} else {
+				regExp = T3Q.activeProfile.getNamingConventionsConfig()
+						.getDerivedMessageTemplateWithWildcardsRegExp();
+				templateType = "DerivedMessageTemplateWithMatchingExpression";
+			}
+			
+		}
+		LocationAST identifierNode = null;
+
+		//duplicated in checkSTF160Template
+		if (node.getFirstChild().getType() == TTCN3ParserTokenTypes.BaseTemplate) {
+			identifierNode = node.getFirstChild().getFirstChild()
+					.getNextSibling();
+		} else {
+			identifierNode = node.getFirstChild().getNextSibling()
+					.getFirstChild().getNextSibling();
+		}
+
+		checkIdentifierForNamingConventionCompliance(identifierNode, regExp,
+				templateType);
+	}
+
+	public void checkTimer(LocationAST node) {
+		String regExp = "";
+		String timerType = "";
+
+		if (node.getParent().getType() == TTCN3ParserTokenTypes.ComponentElementDef) {
+			regExp = T3Q.activeProfile.getNamingConventionsConfig()
+					.getComponentTimerRegExp();
+			timerType = "ComponentTimer";
+		} else {
+			regExp = T3Q.activeProfile.getNamingConventionsConfig()
+					.getTimerRegExp();
+			timerType = "Timer";
+		}
+		LocationAST singleTimerInstanceNode = node.getFirstChild();
+		do {
+			checkIdentifierForNamingConventionCompliance(
+					singleTimerInstanceNode, regExp, timerType);
+		} while ((singleTimerInstanceNode = singleTimerInstanceNode
+				.getNextSibling()) != null);
+
+	}
+
+	public void checkVariable(LocationAST node) {
+		String regExp = "";
+		String variableType = "";
+
+		if (node.getParent().getType() == TTCN3ParserTokenTypes.ComponentElementDef) {
+			regExp = T3Q.activeProfile.getNamingConventionsConfig()
+					.getComponentVariableRegExp();
+			variableType = "ComponentVariable";
+		} else {
+			regExp = T3Q.activeProfile.getNamingConventionsConfig()
+					.getVariableRegExp();
+			variableType = "Variable";
+		}
+
+		LocationAST typeNode = node.getFirstChild();
+		if (node.getFirstChild().getType() != TTCN3ParserTokenTypes.Type) {
+			typeNode = typeNode.getNextSibling();
+		}
+
+		if (typeNode.getFirstChild().getType() == TTCN3ParserTokenTypes.ReferencedType) {
+			LocationAST typeReferenceNode = typeNode.getNthChild(2);
+			if (typeReferenceNode.getType() != TTCN3ParserTokenTypes.TypeReference) {
+				typeReferenceNode = typeReferenceNode.getNextSibling();
+			}
+			LocationAST typeNodeIdentifier = typeReferenceNode.getNthChild(2);
+			Symbol typeSymbol = typeNodeIdentifier.getSymbol();
+			if (typeSymbol == null) {
+				checker
+						.getLoggingInterface()
+						.logInformation(
+								node.getLine(),
+								node.getEndLine(),
+								MessageClass.NAMING,
+								"The type declaration for \""
+										+ typeNodeIdentifier.getText()
+										+ "\" could not be resolved. It cannot be determined whether the variable instances of this type are component instances. They will be treated as variable instances.",
+								"2.1, " + MiscTools.getMethodName());
+				
+			} else {
+				LocationAST declarationNode = typeSymbol.getDeclarationNode();
+				if (declarationNode.getNthParent(2).getType() == TTCN3ParserTokenTypes.ComponentDef) {
+					regExp = T3Q.activeProfile
+							.getNamingConventionsConfig()
+							.getComponentInstanceRegExp();
+					variableType = "ComponentInstance";
+
+				}
+			}
+		}
+
+		LocationAST singleVarInstanceNode = typeNode.getNextSibling()
+				.getFirstChild();
+		do {
+			checkIdentifierForNamingConventionCompliance(singleVarInstanceNode,
+					regExp, variableType);
+		} while ((singleVarInstanceNode = singleVarInstanceNode
+				.getNextSibling()) != null);
+	}
+
+}
Index: /trunk/t3q/src/org/etsi/t3q/visitor/QualityChecker.java
===================================================================
--- /trunk/t3q/src/org/etsi/t3q/visitor/QualityChecker.java	(revision 7)
+++ /trunk/t3q/src/org/etsi/t3q/visitor/QualityChecker.java	(revision 7)
@@ -0,0 +1,2556 @@
+package org.etsi.t3q.visitor;
+
+import java.io.BufferedReader;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Stack;
+import java.util.Map.Entry;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.etsi.common.MiscTools;
+import org.etsi.common.logging.LoggingInterface;
+import org.etsi.common.logging.LoggingInterface.MessageClass;
+import org.etsi.t3q.T3Q;
+import org.etsi.t3q.config.QualityCheckProfile;
+
+import antlr.collections.AST;
+
+
+import de.ugoe.cs.swe.trex.core.analyzer.astutil.ReferenceFinder;
+import de.ugoe.cs.swe.trex.core.analyzer.astutil.ReferenceWithContext;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.ASTUtil;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.LocationAST;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.TTCN3ParserTokenTypes;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.symboltable.AltstepSymbol;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.symboltable.FunctionSymbol;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.symboltable.Symbol;
+
+
+public class QualityChecker {
+	
+	private LoggingInterface logger = null;
+	
+	protected static final int LEVEL0 = 0;
+	protected T3QVisitor visitor = null;
+	ModuleContentsChecker moduleContentsChecker = new ModuleContentsChecker();
+
+	//TODO: consider unified approach to statistics
+	//TODO: consider extracting the whole identifier management concept
+	private int totalIdentifierCount = 0;
+	private int repeatedIdentifierCount = 0;
+	private HashMap<String, ArrayList<LocationAST>> moduleLevelIdentifiersMap = new HashMap<String, ArrayList<LocationAST>>();
+	private ArrayList<LocationAST> subsequentLogStatementNodes = new ArrayList<LocationAST>();
+	private Stack<LocationAST> cyclicFunctionReferences = new Stack<LocationAST>();
+	
+	
+	public QualityChecker(T3QVisitor visitor) {
+		this.visitor = visitor;
+		this.logger = new LoggingInterface(T3Q.activeProfile.getLoggingConfiguration());
+		this.logger.setMaximumLogLevel(T3Q.getLogLevel());
+	}
+	
+	public LoggingInterface getLoggingInterface(){
+		return this.logger;
+	}
+	
+	// -------------------------------------------------------------------------------------------
+	// This should serve as a base template - simply copy it with the
+	// appropriate name and change its contents
+	public void qualityCheckTemplate(LocationAST node) {
+		// Not explicitly necessary, for consistency only
+		boolean problemOccured = false;
+		problemOccured = true;
+		if (problemOccured) {
+			String message = "<message>";
+			this.getLoggingInterface().logWarning(node.getLine(), node.getEndLine(), MessageClass.UNIVERSAL, message);
+
+		}
+	}
+
+	// -------------------------------------------------------------------------------------------
+
+	private void addModuleLevelIdentifier(LocationAST identifierNode){
+		String identifierText = identifierNode.getFirstChild().getText();
+		if (!moduleLevelIdentifiersMap.containsKey(identifierText)){
+			moduleLevelIdentifiersMap.put(identifierText, new ArrayList<LocationAST>());
+		}
+		moduleLevelIdentifiersMap.get(identifierText).add(identifierNode);
+	}
+		
+	// -------------------------------------------------------------------------------------------
+
+	// TODO: move to LocationAST?
+	// currently not used, it was supposed to replace the default equals method
+	// due to an error, but the error has been since fixed
+	private boolean isNodeEqualToNode(LocationAST node1, LocationAST node2) {
+		boolean nodesEqual = false;
+//		if ((node1.getType() == node2.getType())
+//				&& (node1.getOffset() == node2.getOffset())) {
+		if (node1 == node2){
+			nodesEqual = true;
+		}
+
+		return nodesEqual;
+	}
+
+	// -------------------------------------------------------------------------------------------
+
+	public void stringLevelChecks(String filename) {
+		// TODO: document features
+		try {
+			BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(filename)));
+			String line = null;
+			int lineNumber = 0;
+			while ((line = br.readLine()) != null) {
+				lineNumber++;
+				if (T3Q.activeProfile.isCheckNoTabs()) {
+					if (line.contains("\t")) {
+						this.getLoggingInterface().logWarning(lineNumber,
+								lineNumber,
+								MessageClass.STYLE,
+								"Line contains a tab character!",
+								"at column " + line.indexOf("\t") + "");
+					}
+				}
+			}
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+
+	// -------------------------------------------------------------------------------------------
+	
+	private boolean isNodeWithinGroup(LocationAST startNode,
+			LocationAST targetGroupNode) {
+		boolean isNodeWithinGroup = false;
+		LocationAST groupDef = LocationAST.resolveParentsUntilType(startNode
+				.getParent(), TTCN3ParserTokenTypes.GroupDef);
+		if (groupDef != null) {
+			if (groupDef.equals(targetGroupNode)) {
+				isNodeWithinGroup = true;
+			} else {
+				isNodeWithinGroup = isNodeWithinGroup(groupDef, targetGroupNode);
+			}
+		}
+
+		return isNodeWithinGroup;
+	}
+
+	// -------------------------------------------------------------------------------------------
+
+	// Return value is boolean - true if function is used to start a behavior,
+	// false otherwise
+	private boolean isFunctionStartsBehavior(
+			LocationAST functionDefIdentifierNode) {
+		boolean startsBehavior = true;
+		Symbol functionDefSymbol = functionDefIdentifierNode.getSymbol();
+
+		ReferenceFinder referenceFinder = new ReferenceFinder();
+		Map<String, List<ReferenceWithContext>> referenceMap = referenceFinder
+				.findReferences(functionDefSymbol);
+		if (referenceMap.isEmpty()) {
+			startsBehavior = false;
+		} else {
+			Iterator<Entry<String, List<ReferenceWithContext>>> referenceMapIterator = referenceMap
+					.entrySet().iterator();
+
+			while (referenceMapIterator.hasNext()) {
+				Entry<String, List<ReferenceWithContext>> referenceEntry = referenceMapIterator
+						.next();
+				Iterator<ReferenceWithContext> referenceIterator = referenceEntry
+						.getValue().iterator();
+				while (referenceIterator.hasNext()) {
+					ReferenceWithContext referenceWithContext = referenceIterator
+							.next();
+					LocationAST referenceNode = referenceWithContext
+							.getReferenceNode();
+					//TODO: review getNthParent calls below!!!
+					if (referenceNode.getNthParent(4).getType() != TTCN3ParserTokenTypes.StartTCStatement) {
+						startsBehavior = false;
+					} else {
+						LocationAST startingEntityIdentifierNode = (LocationAST) ASTUtil
+								.findChild(referenceNode.getNthParent(4),
+										TTCN3ParserTokenTypes.Identifier)
+								.getFirstChild();
+
+						Symbol startingEntitySymbol = startingEntityIdentifierNode.getSymbol();
+						if (startingEntitySymbol.getDeclarationNode()
+								.getNthParent(3).getType() == TTCN3ParserTokenTypes.TimerInstance) {
+							startsBehavior = false;
+						}
+					}
+				}
+			}
+		}
+		return startsBehavior;
+	}
+
+	// -------------------------------------------------------------------------------------------
+
+	private boolean isReferenceWithinImport(LocationAST referenceNode){
+		boolean isReferenceWithinImport = false;
+		if (LocationAST.resolveParentsUntilType(referenceNode, TTCN3ParserTokenTypes.ImportDef) != null){
+			isReferenceWithinImport = true;
+		}
+		return isReferenceWithinImport;
+	}
+
+	// -------------------------------------------------------------------------------------------
+
+	private boolean isReferenceWithinModule(
+			LocationAST referenceNode, LocationAST moduleNode) {
+		boolean isReferenceWithinModule = false;
+		
+		LocationAST containingModuleNode = ASTUtil.getModuleNode(referenceNode);
+		if (isNodeEqualToNode(moduleNode, containingModuleNode)){
+			isReferenceWithinModule = true;
+		}
+		return isReferenceWithinModule;
+	}
+
+	
+	// -------------------------------------------------------------------------------------------
+
+	private boolean isReferenceWithinModuleDefinition(
+			LocationAST referenceNode, LocationAST moduleDefinitionNode) {
+		boolean isReferenceWithinModuleDefinition = false;
+		LocationAST containingModuleDefinitionNode = LocationAST.resolveParentsUntilType(referenceNode, TTCN3ParserTokenTypes.ModuleDefinition);
+		if (isNodeEqualToNode(moduleDefinitionNode, containingModuleDefinitionNode)){
+			isReferenceWithinModuleDefinition = true;
+		}
+		return isReferenceWithinModuleDefinition;
+	}
+
+	// -------------------------------------------------------------------------------------------
+
+	// TODO: move to Symbol or LocationAST
+	private int getReferenceCountWithinModule(LocationAST identifierNode,
+			LocationAST moduleNode) {
+		int referencesWithinCurrentModule = 0;
+		Symbol definitionSymbol = identifierNode
+		.getFirstChild().getSymbol();
+
+		if (definitionSymbol != null) {
+			ArrayList<Symbol> relevantSymbols = new ArrayList<Symbol>();
+			relevantSymbols.add(definitionSymbol);
+			LocationAST moduleDefinitionNode = LocationAST.resolveParentsUntilType(definitionSymbol.getDeclarationNode(), TTCN3ParserTokenTypes.ModuleDefinition);
+			LocationAST moduleDefinitionTypeNode = LocationAST.getModuleDefinitionTypeNode(moduleDefinitionNode);
+			if (moduleDefinitionTypeNode.getType()==TTCN3ParserTokenTypes.TypeDef && ASTUtil.findChild(moduleDefinitionTypeNode, TTCN3ParserTokenTypes.EnumDef)!=null) {
+				relevantSymbols.addAll(definitionSymbol.getScope().getSymbols().values());
+			}
+			
+			ReferenceFinder referenceFinder = new ReferenceFinder();
+			Map<String, List<ReferenceWithContext>> referenceMap = referenceFinder
+					.findReferences(relevantSymbols);
+			Iterator<List<ReferenceWithContext>> referenceMapIterator = referenceMap
+					.values().iterator();
+			while (referenceMapIterator.hasNext()) {
+				Iterator<ReferenceWithContext> referenceIterator = referenceMapIterator
+						.next().iterator();
+				while (referenceIterator.hasNext()) {
+
+					ReferenceWithContext referenceWithContext = referenceIterator
+							.next();
+					LocationAST referenceNode = referenceWithContext
+							.getReferenceNode();
+
+					if (!isReferenceWithinImport(referenceNode)) {
+						if (isReferenceWithinModule(referenceNode, moduleNode)) {
+							referencesWithinCurrentModule++;
+						}
+					}
+				}
+			}
+		} else {
+			//TODO: need handling
+		}
+
+		return referencesWithinCurrentModule;
+	}
+
+	// -------------------------------------------------------------------------------------------
+
+	//TODO: move to Symbol or LocationAST
+	private int getReferenceCountWithinModuleOrGroup(ArrayList<LocationAST> moduleOrGroupLevelIdentifiers, LocationAST moduleNode) {
+		int referencesWithinCurrentModuleOrGroup = 0;
+
+		for (LocationAST importedModuleDefinitionIdentifier : moduleOrGroupLevelIdentifiers){
+			referencesWithinCurrentModuleOrGroup += getReferenceCountWithinModule(
+						importedModuleDefinitionIdentifier, moduleNode);
+		}
+		return referencesWithinCurrentModuleOrGroup;
+	}
+	
+	// -------------------------------------------------------------------------------------------
+	//TODO: may be deprecated
+	private boolean isIdentifierWithinAllWithExcept(LocationAST identifierNode) {
+		boolean isIdentifierWithinAllWithExcept = false;
+		int[] exceptTypeNodes = {
+				TTCN3ParserTokenTypes.AllAltstepsWithExcept,
+				TTCN3ParserTokenTypes.AllTestcasesWithExcept,
+				TTCN3ParserTokenTypes.AllConstsWithExcept,
+				TTCN3ParserTokenTypes.AllFunctionsWithExcept,
+				TTCN3ParserTokenTypes.AllModuleParWithExcept,
+				TTCN3ParserTokenTypes.AllSignaturesWithExcept,
+				TTCN3ParserTokenTypes.AllTemplsWithExcept,
+				TTCN3ParserTokenTypes.AllTypesWithExcept,
+				TTCN3ParserTokenTypes.AllGroupsWithExcept}; 
+		if (LocationAST.resolveParentsUntilType(identifierNode, exceptTypeNodes) != null){
+			isIdentifierWithinAllWithExcept = true;
+		} 
+		return isIdentifierWithinAllWithExcept;
+	}
+	
+	// -------------------------------------------------------------------------------------------
+
+	/**
+	 * @param importElementNode - import element node
+	 * @return true if the import element is non-specific (has an all keyword), false otherwise
+	 */
+	
+	private boolean isImportElementNonSpecific(LocationAST importElementNode) {
+		boolean isImportElementNonSpecific = false;
+		List<Integer> nodeTypes =  Arrays.asList(
+				TTCN3ParserTokenTypes.AllAltstepsWithExcept,
+				TTCN3ParserTokenTypes.AllTestcasesWithExcept,
+				TTCN3ParserTokenTypes.AllConstsWithExcept,
+				TTCN3ParserTokenTypes.AllFunctionsWithExcept,
+				TTCN3ParserTokenTypes.AllModuleParWithExcept,
+				TTCN3ParserTokenTypes.AllSignaturesWithExcept,
+				TTCN3ParserTokenTypes.AllTemplsWithExcept,
+				TTCN3ParserTokenTypes.AllTypesWithExcept,
+				TTCN3ParserTokenTypes.AllGroupsWithExcept); 
+		
+		if (nodeTypes.contains(importElementNode.getNthChild(2).getType())){
+			isImportElementNonSpecific = true;
+		} 
+		return isImportElementNonSpecific;
+	}
+	
+	// -------------------------------------------------------------------------------------------
+
+	/**
+	 * @param importElementNode - import element node
+	 * @return type of the corresponding module definition
+	 */
+	
+	private int getCorrespondingModuleDefinitionType(LocationAST importElementNode) {
+		//TODO: duplicated, sort out
+		int correspondingType = 0;
+		switch (importElementNode.getNthChild(2).getType()) {
+		case TTCN3ParserTokenTypes.AllAltstepsWithExcept:
+		case TTCN3ParserTokenTypes.AltstepRefList:
+			correspondingType = TTCN3ParserTokenTypes.AltstepDef;
+			break;
+		case TTCN3ParserTokenTypes.AllTestcasesWithExcept:
+		case TTCN3ParserTokenTypes.TestcaseRefList:
+			correspondingType = TTCN3ParserTokenTypes.TestcaseDef;
+			break;
+		case TTCN3ParserTokenTypes.AllConstsWithExcept:
+		case TTCN3ParserTokenTypes.ConstRefList:
+			correspondingType = TTCN3ParserTokenTypes.ConstDef;
+			break;
+		case TTCN3ParserTokenTypes.AllFunctionsWithExcept:
+		case TTCN3ParserTokenTypes.FunctionRefList:
+			correspondingType = TTCN3ParserTokenTypes.FunctionDef;
+			break;
+		case TTCN3ParserTokenTypes.AllModuleParWithExcept:
+		case TTCN3ParserTokenTypes.ModuleParRefList:
+			correspondingType = TTCN3ParserTokenTypes.ModuleParDef;
+			break;
+		case TTCN3ParserTokenTypes.AllSignaturesWithExcept:
+		case TTCN3ParserTokenTypes.SignatureRefList:
+			correspondingType = TTCN3ParserTokenTypes.SignatureDef;
+			break;
+		case TTCN3ParserTokenTypes.AllTemplsWithExcept:
+		case TTCN3ParserTokenTypes.TemplateRefList:
+			correspondingType = TTCN3ParserTokenTypes.TemplateDef;
+			break;
+		case TTCN3ParserTokenTypes.AllTypesWithExcept:
+		case TTCN3ParserTokenTypes.TypeRefList:
+			correspondingType = TTCN3ParserTokenTypes.TypeDef;
+			break;
+		case TTCN3ParserTokenTypes.AllGroupsWithExcept:
+		case TTCN3ParserTokenTypes.GroupRefListWithExcept:
+			correspondingType = TTCN3ParserTokenTypes.GroupDef;
+			break;
+		default:
+			break;
+		}
+		return correspondingType;
+	}
+
+	// -------------------------------------------------------------------------------------------
+
+	public void checkNoUnusedLocalDefinitions(LocationAST node) {
+		ArrayList<LocationAST> localDefinitionsIdentifiersList = LocationAST.getLocalDefinitionsIdentifiersList(node);
+		if (localDefinitionsIdentifiersList == null) {
+			return; //irrelevant type of module definition!
+		}
+		
+		ReferenceFinder referenceFinder = new ReferenceFinder();
+		String moduleDefinitionIdentifierText;
+		if (node.getType()!=TTCN3ParserTokenTypes.ModuleDefinition) {
+			moduleDefinitionIdentifierText = "Module Control Part";
+		} else {
+			moduleDefinitionIdentifierText = LocationAST.getModuleDefinitionIdentifiersList(node).get(0).getFirstChild().getText();
+		}
+		for (LocationAST localDefinitionIdentifier : localDefinitionsIdentifiersList) {
+			Symbol symbol = localDefinitionIdentifier.getFirstChild().getSymbol();
+			if (referenceFinder.countReferences(symbol)==0) {
+				this.getLoggingInterface().logWarning(localDefinitionIdentifier.getLine(),
+						localDefinitionIdentifier.getEndLine(),
+						MessageClass.STYLE,
+						"Local definition for \""+localDefinitionIdentifier.getFirstChild().getText()+"\" in definition of \""+moduleDefinitionIdentifierText+"\" is never used!",
+						"6.11, " + MiscTools.getMethodName());
+			}
+		}
+	}
+	
+	// -------------------------------------------------------------------------------------------
+
+	public void checkNoLiterals(LocationAST node) {
+		// TODO: matching symbols too? boolean values too? verdicts, omits,
+		// enums and addresses too?
+		boolean problemOccured = false;
+		switch (node.getFirstChild().getType()) {
+		case TTCN3ParserTokenTypes.BitStringValue:
+		case TTCN3ParserTokenTypes.CharStringValue:
+		case TTCN3ParserTokenTypes.IntegerValue:
+		case TTCN3ParserTokenTypes.OctetStringValue:
+		case TTCN3ParserTokenTypes.HexStringValue:
+		case TTCN3ParserTokenTypes.FloatValue:
+			// TODO: what about inline templates?
+			LocationAST containingModuleDefinition = LocationAST.resolveParentsUntilType(node,
+					new int[] { TTCN3ParserTokenTypes.ModuleParDef,
+							TTCN3ParserTokenTypes.TemplateDef,
+							TTCN3ParserTokenTypes.ConstDef });
+			if (containingModuleDefinition == null) {
+				problemOccured = true;
+			}
+		}
+		if (problemOccured) {
+			this.getLoggingInterface().logWarning(node.getLine(),
+					node.getEndLine(),
+					MessageClass.STYLE,
+					"Literal value is used!",
+					"6.12, " + MiscTools.getMethodName());
+		}
+
+	}
+	// -------------------------------------------------------------------------------------------
+
+	public void checkNoUnusedFormalParameters(LocationAST node) {
+		if (LocationAST.resolveParentsUntilType(node, TTCN3ParserTokenTypes.ExtFunctionDef)!=null) {
+			return;
+		}
+
+		LocationAST identifierNode = (LocationAST) ASTUtil.findSibling(node.getFirstChild(), TTCN3ParserTokenTypes.Identifier);
+
+		//TODO: extract to a separate method
+		LocationAST TemplateDefNode = LocationAST.resolveParentsUntilType(node, TTCN3ParserTokenTypes.TemplateDef);
+		if (TemplateDefNode != null) {
+			LocationAST derivedDefNode = ASTUtil.findDerivedDef(TemplateDefNode);
+			if (derivedDefNode!=null) {
+				Symbol symbol = derivedDefNode.getFirstChild().getFirstChild().getSymbol();
+				if (symbol == null) {
+					this.getLoggingInterface().logInformation(node.getLine(),
+							node.getEndLine(),
+							MessageClass.LOGGING,
+							"Template definition for \""
+									+ derivedDefNode.getFirstChild().getFirstChild().getText()
+									+ "\" cannot be resolved! It cannot be determined whether formal parameter \""+identifierNode.getFirstChild().getText()+"\" is used or not!",
+							"6.11, " + MiscTools.getMethodName());
+					//SKIP
+					return;
+				} else {
+					LocationAST declarationNode = symbol.getDeclarationNode();
+					List<AST> inheritedFormalParameters = ASTUtil.getFormalParameters(LocationAST.resolveParentsUntilType(declarationNode, TTCN3ParserTokenTypes.TemplateDef));
+					if (inheritedFormalParameters != null) {
+						for (AST inheritedFormalParameter : inheritedFormalParameters) {
+							if (inheritedFormalParameter.getText().equals(identifierNode.getFirstChild().getText())) {
+								//SKIP
+								return;
+							}
+						}
+					}
+				}
+			}
+		}
+		
+		Symbol formalParSymbol = identifierNode.getFirstChild().getSymbol();
+		ReferenceFinder referenceFinder = new ReferenceFinder();
+		int referenceCount = 0;
+		referenceCount = referenceFinder.countReferences(formalParSymbol);
+		if (referenceCount == 0) {
+			String containingModuleDefinitionName = node.getContainingModuleDefinitionIdentifiersList().get(0).getFirstChild().getText();
+			this.getLoggingInterface().logWarning(identifierNode.getLine(),
+					identifierNode.getEndLine(),
+					MessageClass.STYLE,
+					"Formal parameter \""
+							+ identifierNode.getFirstChild().getText()
+							+ "\" in definition for \""
+							+ containingModuleDefinitionName
+							+ "\" is never used!",
+					"6.11, " + MiscTools.getMethodName());
+		}
+
+	}
+
+	// -------------------------------------------------------------------------------------------
+	//TODO duplicated
+	public void listImportingModuleNames(LocationAST node) {
+		LocationAST moduleIdentifier = node.getNthChild(3);
+		Symbol moduleSymbol = moduleIdentifier.getFirstChild().getSymbol();
+
+		ReferenceFinder referenceFinder = new ReferenceFinder();
+		Map<String, List<ReferenceWithContext>> referenceMap = referenceFinder.findReferences(moduleSymbol);
+		Iterator<List<ReferenceWithContext>> referenceMapIterator = referenceMap.values().iterator();
+		while (referenceMapIterator.hasNext()) {
+			Iterator<ReferenceWithContext> referenceIterator = referenceMapIterator.next().iterator();
+			while (referenceIterator.hasNext()) {
+				LocationAST referenceNode = referenceIterator.next().getReferenceNode();
+				if (isReferenceWithinImport(referenceNode)) {
+					this.getLoggingInterface().logInformation(moduleIdentifier.getLine(),
+							moduleIdentifier.getEndLine(),
+							MessageClass.GENERAL,
+							"Module \""
+									+ moduleIdentifier.getFirstChild().getText()
+									+ "\" is imported in module \""
+									+ ASTUtil.getEnclosingModuleName(referenceNode)
+									+ "\"!",
+							"1.19, " + MiscTools.getMethodName());
+				}
+			}
+		}
+	}
+
+	// -------------------------------------------------------------------------------------------
+	//TODO: duplicated
+	public void listImportingModuleFileNames(LocationAST node) {
+		LocationAST moduleIdentifier = node.getNthChild(3);
+		Symbol moduleSymbol = moduleIdentifier.getFirstChild().getSymbol();
+
+		ReferenceFinder referenceFinder = new ReferenceFinder();
+		Map<String, List<ReferenceWithContext>> referenceMap = referenceFinder.findReferences(moduleSymbol);
+		Iterator<List<ReferenceWithContext>> referenceMapIterator = referenceMap.values().iterator();
+		while (referenceMapIterator.hasNext()) {
+			Iterator<ReferenceWithContext> referenceIterator = referenceMapIterator.next().iterator();
+			while (referenceIterator.hasNext()) {
+				LocationAST referenceNode = referenceIterator.next().getReferenceNode();
+				if (isReferenceWithinImport(referenceNode)) {
+					this.getLoggingInterface().logInformation(moduleIdentifier.getLine(),
+							moduleIdentifier.getEndLine(),
+							MessageClass.GENERAL,
+							"Module \""
+									+ moduleIdentifier.getFirstChild().getText()
+									+ "\" is imported in module \""
+									+ ASTUtil.getEnclosingModuleName(referenceNode)
+									+ "\" located in \""
+									+ referenceNode.getScope().getAssociatedFilename()
+									+ "\"!",
+							"1.19, " + MiscTools.getMethodName());
+				}
+			}
+		}
+	}
+
+	
+	// -------------------------------------------------------------------------------------------
+
+	public void listImportedModuleNames(LocationAST node) {
+		LocationAST importedModuleIdentifier = node.getNthChild(4);
+		this.getLoggingInterface().logInformation(importedModuleIdentifier.getLine(),
+				importedModuleIdentifier.getEndLine(),
+				MessageClass.GENERAL,
+				"Importing from module \""
+						+ importedModuleIdentifier.getFirstChild().getText()
+						+ "\"...",
+				"1.18, " + MiscTools.getMethodName());
+	}
+
+	// -------------------------------------------------------------------------------------------
+
+	public void listImportedModuleFileNames(LocationAST node) {
+		LocationAST importedModuleIdentifier = node.getNthChild(4);
+		Symbol importedModuleSymbol = importedModuleIdentifier.getFirstChild().getSymbol();
+		if (importedModuleSymbol == null) {
+			// resolvable?
+			this.getLoggingInterface().logInformation(importedModuleIdentifier.getLine(),
+					importedModuleIdentifier.getEndLine(),
+					MessageClass.GENERAL,
+					"Imported module \""
+							+ importedModuleIdentifier.getFirstChild().getText()
+							+ "\" cannot be resolved!",
+					"1.18, " + MiscTools.getMethodName());
+			return;
+		}
+
+		this.getLoggingInterface().logInformation(importedModuleIdentifier.getLine(),
+				importedModuleIdentifier.getEndLine(),
+				MessageClass.GENERAL,
+				"Importing from module \""
+						+ importedModuleIdentifier.getFirstChild().getText()
+						+ "\" located in \""
+						+ importedModuleSymbol.getScope().getAssociatedFilename()
+						+ "\"...",
+				"1.18, " + MiscTools.getMethodName());
+	}
+
+	
+	// -------------------------------------------------------------------------------------------
+	
+	public void checkNoUnusedImports(LocationAST node) {
+		// TODO: Consider splitting further
+		LocationAST importedModuleIdentifier = (LocationAST) ASTUtil.findChild(node,
+				TTCN3ParserTokenTypes.Identifier);
+		Symbol importedModuleSymbol = importedModuleIdentifier.getFirstChild().getSymbol();
+		if (importedModuleSymbol == null) {
+			// resolvable?
+			this.getLoggingInterface().logInformation(importedModuleIdentifier.getLine(),
+					importedModuleIdentifier.getEndLine(),
+					MessageClass.STYLE,
+					"Imported module \""
+							+ importedModuleIdentifier.getFirstChild().getText()
+							+ "\" cannot be resolved!",
+					"6.18, " + MiscTools.getMethodName());
+			return;
+		}
+
+		LocationAST currentModuleNode = ASTUtil.getModuleNode(node);
+		LocationAST importedModuleNode = ASTUtil.getModuleNode(importedModuleSymbol.getDeclarationNode());
+
+		LocationAST importSpecNode = node.getFirstChild().getNextSibling();
+		if (importSpecNode.getType() == TTCN3ParserTokenTypes.AllWithExcepts) {
+			// any reference?
+			ArrayList<LocationAST> moduleLevelIdentifiers = LocationAST.getModuleOrGroupLevelIdentifiers(importedModuleNode);
+
+			int referencesWithinCurrentModule = getReferenceCountWithinModuleOrGroup(moduleLevelIdentifiers,
+					currentModuleNode);
+
+			if (referencesWithinCurrentModule == 0) {
+				this.getLoggingInterface().logWarning(importedModuleIdentifier.getLine(),
+						importedModuleIdentifier.getEndLine(),
+						MessageClass.STYLE,
+						"No definitions from imported module \""
+								+ importedModuleIdentifier.getFirstChild().getText()
+								+ "\" are ever used!",
+						"6.18, " + MiscTools.getMethodName());
+			}
+
+		} else if (importSpecNode.getType() == TTCN3ParserTokenTypes.ImportSpec) {
+			LinkedList<LocationAST> importElementNodes = ASTUtil.findTypeNodes(importSpecNode,
+					TTCN3ParserTokenTypes.ImportElement);
+			for (LocationAST importElementNode : importElementNodes) {
+
+				if (isImportElementNonSpecific(importElementNode)) {
+					// generic
+					// any of type referenced?
+					ArrayList<LocationAST> moduleLevelIdentifiers = LocationAST.getModuleLevelIdentifiersOfType(importedModuleNode,
+							getCorrespondingModuleDefinitionType(importElementNode));
+					int referencesWithinCurrentModule = 0;
+					if (importElementNode.getFirstChild().getType() != TTCN3ParserTokenTypes.ImportGroupSpec) {
+						referencesWithinCurrentModule = getReferenceCountWithinModuleOrGroup(moduleLevelIdentifiers,
+								currentModuleNode);
+
+					} else {
+						// group handling
+						for (LocationAST importedGroupIdentifer : moduleLevelIdentifiers) {
+							ArrayList<LocationAST> groupLevelIdentifiers = LocationAST.getModuleOrGroupLevelIdentifiers(LocationAST.resolveParentsUntilType(importedGroupIdentifer,
+									TTCN3ParserTokenTypes.GroupDef));
+							referencesWithinCurrentModule += getReferenceCountWithinModuleOrGroup(groupLevelIdentifiers,
+									currentModuleNode);
+						}
+					}
+					if (referencesWithinCurrentModule == 0) {
+						this.getLoggingInterface().logWarning(importedModuleIdentifier.getLine(),
+								importedModuleIdentifier.getEndLine(),
+								MessageClass.STYLE,
+								"No definitions of type \""
+										+ LocationAST.getTTCN3ParserTokenTypeTypePrettyName(getCorrespondingModuleDefinitionType(importElementNode))
+										+ "\" from imported module \""
+										+ importedModuleIdentifier.getFirstChild().getText()
+										+ "\" are ever used!",
+								"6.18, " + MiscTools.getMethodName());
+					}
+
+				} else {
+					// specific
+					LinkedList<LocationAST> identifierNodes = ASTUtil.findTypeNodes(importElementNode,
+							TTCN3ParserTokenTypes.Identifier);
+					for (LocationAST identifierNode : identifierNodes) {
+						Symbol s = identifierNode.getFirstChild().getSymbol();
+						if (s == null) {
+							// identifier not resolvable?
+							this.getLoggingInterface().logInformation(identifierNode.getLine(),
+									identifierNode.getEndLine(),
+									MessageClass.STYLE,
+									"Definition for \""
+											+ identifierNode.getFirstChild().getText()
+											+ "\" of type \""
+											+ LocationAST.getTTCN3ParserTokenTypeTypePrettyName(getCorrespondingModuleDefinitionType(importElementNode))
+											+ "\" from imported module \""
+											+ importedModuleIdentifier.getFirstChild().getText()
+											+ "\" cannot be resolved!",
+									"6.18, " + MiscTools.getMethodName());
+						} else {
+							if (!isNodeEqualToNode(ASTUtil.getModuleNode(importedModuleSymbol.getDeclarationNode()),
+									ASTUtil.getModuleNode(s.getDeclarationNode()))) {
+								// identifier already imported?
+								// (declarationNode.module != importedModule)
+								// this should happen only if the declaration
+								// actually exists in the imported module
+								ArrayList<LocationAST> moduleLevelIdentifiers = LocationAST.getModuleLevelIdentifiersOfType(importedModuleNode,
+										getCorrespondingModuleDefinitionType(importElementNode));
+								boolean importedModuleContainsIdentifierInQuestion = false;
+								for (LocationAST moduleLevelIdentifier : moduleLevelIdentifiers) {
+									if (moduleLevelIdentifier.getFirstChild().getText().equals(identifierNode.getFirstChild().getText())) {
+										importedModuleContainsIdentifierInQuestion = true;
+									}
+								}
+								if (!importedModuleContainsIdentifierInQuestion) {
+									this.getLoggingInterface().logInformation(identifierNode.getLine(),
+											identifierNode.getEndLine(),
+											MessageClass.STYLE,
+											"Imported definition for "
+													+ identifierNode.getFirstChild().getText()
+													+ " is not found in corresponding imported module \""
+													+ ASTUtil.getEnclosingModuleName(importedModuleNode)
+													+ "\", but it is already imported from module \""
+													+ ASTUtil.getEnclosingModuleName(s.getDeclarationNode())
+													+ "\"!",
+											"6.18, "
+													+ MiscTools.getMethodName());
+								} else {
+									this.getLoggingInterface().logInformation(identifierNode.getLine(),
+											identifierNode.getEndLine(),
+											MessageClass.STYLE,
+											"Imported definition for "
+													+ identifierNode.getFirstChild().getText()
+													+ " is ambiguous (already imported from module \""
+													+ ASTUtil.getEnclosingModuleName(s.getDeclarationNode())
+													+ "\")!",
+											"6.18, "
+													+ MiscTools.getMethodName());
+								}
+							} else {
+								// identifier referenced?
+								if (identifierNode.getParent().getType() != TTCN3ParserTokenTypes.FullGroupIdentifier) {
+									int referencesWithinCurrentModule = getReferenceCountWithinModule(identifierNode,
+											currentModuleNode);
+									if (referencesWithinCurrentModule == 0) {
+										this.getLoggingInterface().logWarning(identifierNode.getLine(),
+												identifierNode.getEndLine(),
+												MessageClass.STYLE,
+												"Imported definition for "
+														+ identifierNode.getFirstChild().getText()
+														+ " is never used!",
+												"6.18, "
+														+ MiscTools.getMethodName());
+									}
+								} else {
+									// any reference of grouped elements
+									// check if it is a nested group import
+									if ((identifierNode.getNextSibling() == null)) {
+										LocationAST importedGroupDeclarationNode = s.getDeclarationNode();
+										// System.out.println();
+
+										ArrayList<LocationAST> identifiersWithinGroup = LocationAST.getModuleOrGroupLevelIdentifiers(LocationAST.resolveParentsUntilType(importedGroupDeclarationNode,
+												TTCN3ParserTokenTypes.GroupDef));
+										// importedGroupDeclarationNode.getNthParent(2));
+										int referencesWithinCurrentModule = getReferenceCountWithinModuleOrGroup(identifiersWithinGroup,
+												currentModuleNode);
+
+										if (referencesWithinCurrentModule == 0) {
+											this.getLoggingInterface().logWarning(importedModuleIdentifier.getLine(),
+													importedModuleIdentifier.getEndLine(),
+													MessageClass.STYLE,
+													"No definitions from imported group \""
+															+ identifierNode.getFirstChild().getText()
+															+ "\" from module \""
+															+ importedModuleIdentifier.getFirstChild().getText()
+															+ "\" are ever used!",
+													"6.18, "
+															+ MiscTools.getMethodName());
+										}
+									}
+
+								}
+							}
+						}
+					}
+				}
+			}
+		}
+
+	}
+
+	// -------------------------------------------------------------------------------------------
+
+	public void checkNoOverSpecificRunsOnClauses(LocationAST node) {
+		//TODO: adapt to new paradigm
+		int componentElementReferencesWithinScope = 0;
+		LocationAST componentIdentifier = node.getNthChild(3);
+		Symbol componentSymbol = componentIdentifier.getSymbol();
+		if (componentSymbol == null) {
+			this.getLoggingInterface().logInformation(componentIdentifier.getLine(),
+					componentIdentifier.getEndLine(),
+					MessageClass.STYLE,
+					"Definition for \""
+							+ componentIdentifier.getText()
+							+ "\" cannot be resolved, therefore it cannot be determined whether an over specific runs on clause is used in the definition of \""
+							+ node.getContainingModuleDefinitionIdentifiersList().get(0).getFirstChild().getText()
+							+ "\"!",
+					"6.13, " + MiscTools.getMethodName());
+			return;
+		}
+		LocationAST componentDeclarationNode = componentSymbol.getDeclarationNode();
+		LocationAST componentModuleDefinitionNode = LocationAST.resolveParentsUntilType(componentDeclarationNode,
+				TTCN3ParserTokenTypes.ModuleDefinition);
+		if (componentModuleDefinitionNode == null) {
+			//TODO: need to output info? likely to happen at all?
+			return;
+		}
+
+		ArrayList<Symbol> localDefinitionsSymbolsList = new ArrayList<Symbol>();
+		ArrayList<LocationAST> localDefinitionsIdentifiersList = LocationAST.getLocalDefinitionsIdentifiersList(componentModuleDefinitionNode);
+		if (localDefinitionsIdentifiersList==null) {
+			this.getLoggingInterface()
+				.logInformation(componentIdentifier.getLine(),
+						componentIdentifier.getEndLine(),
+						MessageClass.STYLE,
+						"Reference to \""
+								+ componentIdentifier.getText()
+								+ "\" in a runs on clause does not resolve to a component type definition! It could be an error!",
+						"6.13, " + MiscTools.getMethodName());
+			return; //componentIdentifierNode does not correspond to a component definition
+		}
+		for (LocationAST localDefinitionIdentifier : localDefinitionsIdentifiersList) {
+			Symbol s = localDefinitionIdentifier.getFirstChild().getSymbol();
+			if (s == null) {
+				this.getLoggingInterface().logFix(localDefinitionIdentifier.getLine(),
+						localDefinitionIdentifier.getLine(),
+						MessageClass.STYLE,
+						"Symbol resolution failed for "
+								+ localDefinitionIdentifier.getFirstChild().getText(),
+						"6.13, " + MiscTools.getMethodName());
+			} else {
+				localDefinitionsSymbolsList.add(s);
+			}
+		}
+		
+		
+		LocationAST moduleDefinitionNode = LocationAST.resolveParentsUntilType(node,
+				TTCN3ParserTokenTypes.ModuleDefinition);
+		LinkedHashSet<LocationAST> relevantModuleDefinitions = new LinkedHashSet<LocationAST>();
+		relevantModuleDefinitions.add(moduleDefinitionNode);
+
+		if (T3Q.activeProfile.isRecursionInCheckNoOverSpecificRunsOnClauses()) {
+			LinkedHashSet<LocationAST> collectedReferences = collectReferencedFunctionsAndAltsteps(moduleDefinitionNode);
+			relevantModuleDefinitions.addAll(collectedReferences);
+		}
+		
+		ReferenceFinder referenceFinder = new ReferenceFinder();
+
+		Map<String, List<ReferenceWithContext>> referenceMap = referenceFinder
+				.findReferences(localDefinitionsSymbolsList);
+		
+		for (List<ReferenceWithContext> refWithContextList : referenceMap.values()){
+			for (ReferenceWithContext refWithContext : refWithContextList){
+				LocationAST referenceNode = refWithContext.getReferenceNode();
+				for (LocationAST moduleDefinition : relevantModuleDefinitions) {
+					if (isReferenceWithinModuleDefinition(referenceNode,
+							moduleDefinition)) {
+						componentElementReferencesWithinScope++;
+					}
+				}
+			}
+		}
+		
+		if (componentElementReferencesWithinScope == 0) {
+			this.getLoggingInterface().logWarning(moduleDefinitionNode.getLine(),
+					moduleDefinitionNode.getLine(),
+					MessageClass.STYLE,
+					"Definition for \""
+							+ LocationAST.getModuleDefinitionIdentifiersList(moduleDefinitionNode).get(0).getFirstChild().getText()
+							+ "\" contains an over specific runs on clause!",
+					"6.13, " + MiscTools.getMethodName());
+		}
+	}
+
+
+	//TODO: consider splitting again
+	//TODO: does not include defaults?!
+	private LinkedHashSet<LocationAST> collectReferencedFunctionsAndAltsteps(
+			LocationAST moduleDefinitionNode) {
+		LinkedHashSet<LocationAST> relevantModuleDefinitions = new LinkedHashSet<LocationAST>();
+		if (cyclicFunctionReferences.contains(moduleDefinitionNode)) {
+			String cycle = ""; 
+			for (LocationAST x : cyclicFunctionReferences){
+				cycle+=LocationAST.getModuleDefinitionIdentifiersList(x).get(0).getFirstChild().getText()+", ";
+			}
+			cycle+=LocationAST.getModuleDefinitionIdentifiersList(moduleDefinitionNode).get(0).getFirstChild().getText();
+			this
+			.getLoggingInterface()
+			.logInformation(
+					moduleDefinitionNode.getLine(),
+					moduleDefinitionNode.getEndLine(),
+					MessageClass.STYLE,
+					""
+							+ "Possible cyclic call sequence: \""
+							+ cycle
+							+ "\". Skipping...",
+					"6.13, " + MiscTools.getMethodName());
+		} else {
+			cyclicFunctionReferences.push(moduleDefinitionNode);
+			LinkedList<LocationAST> referenceNodes = ASTUtil.findTypeNodes(
+					moduleDefinitionNode, TTCN3ParserTokenTypes.FunctionRef);
+			referenceNodes.addAll(ASTUtil.findTypeNodes(moduleDefinitionNode,
+					TTCN3ParserTokenTypes.AltstepInstance));
+
+			for (LocationAST referenceNode : referenceNodes) {
+				LocationAST referenceIdentifier = referenceNode.getFirstChild()
+						.getFirstChild();
+				Symbol referenceSymbol = referenceIdentifier.getSymbol();
+
+				if (referenceSymbol != null) {
+					if (((referenceSymbol instanceof FunctionSymbol) && !((FunctionSymbol) referenceSymbol)
+							.isExternal())
+							|| referenceSymbol instanceof AltstepSymbol) {
+						LocationAST declarationNode = referenceSymbol
+								.getDeclarationNode();
+
+						if (declarationNode != null) {
+							LocationAST referenceModuleDefinitionNode = LocationAST
+									.resolveParentsUntilType(
+											declarationNode,
+											TTCN3ParserTokenTypes.ModuleDefinition);
+							relevantModuleDefinitions
+									.add(referenceModuleDefinitionNode);
+							relevantModuleDefinitions
+									.addAll(collectReferencedFunctionsAndAltsteps(referenceModuleDefinitionNode));
+						}
+					}
+				} else {
+					this
+							.getLoggingInterface()
+							.logInformation(
+									referenceIdentifier.getLine(),
+									referenceIdentifier.getEndLine(),
+									MessageClass.STYLE,
+									""
+											+ "Definition for reference \""
+											+ referenceIdentifier.getText()
+											+ "\" cannot be resolved. It may not be possible to determine whether the enclosing construct has an over-specific runs on clause!",
+									"6.13, " + MiscTools.getMethodName());
+
+				}
+			}
+			cyclicFunctionReferences.pop();
+		}
+		return relevantModuleDefinitions;
+	}
+
+	// -------------------------------------------------------------------------------------------
+
+	public void checkNoInlineTemplates(LocationAST node){
+		boolean problemOccured = false;
+		if (node.getFirstChild().getType() == TTCN3ParserTokenTypes.Type || 
+				node.getFirstChild().getType() == TTCN3ParserTokenTypes.Signature ){
+			problemOccured = true;
+		}
+		if (problemOccured) {
+			this.getLoggingInterface().logWarning(node.getLine(),
+					node.getEndLine(),
+					MessageClass.STYLE,
+					"Inline Template is used!",
+					"6.13, " + MiscTools.getMethodName());
+			
+		}
+	}
+	
+	// -------------------------------------------------------------------------------------------
+	//TODO: consider group definitions as well? currently: yes
+	//implementation of 6.17
+	//the additional parts in 6.11 will be implemented separately as "checkZeroReferencedLocalDefinitions"
+	public void checkZeroReferencedModuleDefinitions(LocationAST node) {
+
+		Pattern zeroReferencedModuleDefinitionsExcludedPattern = Pattern.compile(T3Q.activeProfile.getZeroReferencedModuleDefinitionsExcludedRegExp());
+		Matcher zeroReferencedModuleDefinitionsExcludedMatcher = zeroReferencedModuleDefinitionsExcludedPattern.matcher(ASTUtil.getEnclosingModuleName(node));
+		;
+
+		if (zeroReferencedModuleDefinitionsExcludedMatcher.matches()) {
+			return;
+		}
+		//exclude groups
+		if (LocationAST.getModuleDefinitionTypeNode(node).getType()==TTCN3ParserTokenTypes.GroupDef) {
+			return;
+		}
+		
+		ArrayList<LocationAST> identifiersList = LocationAST.getModuleDefinitionIdentifiersList(node);
+		LocationAST identifierNode = null;
+		String identifierText = null;
+		for (int i = 0; i < identifiersList.size(); i++) {
+			identifierNode = identifiersList.get(i);
+			identifierText = identifierNode.getFirstChild().getText();
+			Symbol s = identifierNode.getFirstChild().getSymbol();
+
+			if (s == null) {
+				this.getLoggingInterface().logFix(identifierNode.getLine(),
+						identifierNode.getLine(),
+						MessageClass.STYLE,
+						"Symbol resolution failed for " + identifierText
+								+ " in " + MiscTools.getMethodName(),
+						"6.17, " + MiscTools.getMethodName());
+				return;
+			}
+			ReferenceFinder referenceFinder = new ReferenceFinder();
+			if (referenceFinder.countReferences(s) == 0) {
+				// TODO: add stats counters
+				// TODO: add type information
+				// TODO: groups shall probably be excluded
+				this.getLoggingInterface().logWarning(identifierNode.getLine(),
+						identifierNode.getEndLine(),
+						MessageClass.STYLE,
+						"Definition for \"" + identifierText
+								+ "\" is never referenced!",
+						"6.17, " + MiscTools.getMethodName());
+			} else {
+				int referencesOutsideImports = 0;
+				Map<String, List<ReferenceWithContext>> referenceMap = referenceFinder.findReferences(s);
+				Iterator<List<ReferenceWithContext>> referenceMapIterator = referenceMap.values().iterator();
+				while (referenceMapIterator.hasNext()) {
+					Iterator<ReferenceWithContext> referenceIterator = referenceMapIterator.next().iterator();
+					while (referenceIterator.hasNext()) {
+						LocationAST referenceNode = referenceIterator.next().getReferenceNode();
+						// System.out.println("++++> "+referenceNode);
+						if (!isReferenceWithinImport(referenceNode)) {
+							referencesOutsideImports++;
+						}
+					}
+				}
+				if (referencesOutsideImports == 0) {
+					this.getLoggingInterface().logWarning(identifierNode.getLine(),
+							identifierNode.getEndLine(),
+							MessageClass.STYLE,
+							"Definition for \""
+									+ identifierText
+									+ "\" is only referenced within import statements!",
+							"6.17, " + MiscTools.getMethodName());
+
+				}
+			}
+		}
+
+	}
+
+	// -------------------------------------------------------------------------------------------
+	
+	//TODO:
+	//Arguably, this should be migrated to the symbol table and support multiple declarations for the same entity and then resolve them based on type, but this is a long term future consideration
+	//Alternatively, this shall be split and most of it shall be migrated to the visitor to accommodate reuse for 1.6.3
+	public void checkNoDuplicatedModuleDefinitionIdentifiers(LocationAST node) {
+		ArrayList<LocationAST> identifiersList = LocationAST.getModuleDefinitionIdentifiersList(node);
+		LocationAST identifierNode = null;
+		String identifierText = null;
+		for (int i = 0; i < identifiersList.size(); i++){
+			totalIdentifierCount++; //TODO: replace with statistics interface
+			identifierNode = identifiersList.get(i);
+			identifierText = identifierNode.getFirstChild().getText();
+			if (moduleLevelIdentifiersMap.containsKey(identifierText)){
+				repeatedIdentifierCount++; //TODO: replace with statistics interface
+				ArrayList<LocationAST> locationNodes = moduleLevelIdentifiersMap.get(identifierText);
+				String locationsList = "";
+				String moduleName = "";
+				for (int l = 0; l < locationNodes.size(); l++){
+					moduleName = ASTUtil.getModuleSymbol(locationNodes.get(l)).getName();
+					locationsList+= "<\""+moduleName+"\": "+locationNodes.get(l).getLine()+">, ";
+				}
+				locationsList = locationsList.substring(0, locationsList.length()-2);
+			
+				this.getLoggingInterface().logWarning(identifiersList.get(i).getLine(),
+						identifiersList.get(i).getEndLine(),
+						MessageClass.STYLE,
+						"Identifier \""
+								+ identifierText
+								+ "\" on the module level has already been used in "
+								+ locationsList + "!",
+						"6.10, " + MiscTools.getMethodName());
+			}
+			addModuleLevelIdentifier(identifierNode);
+
+		}
+
+	}
+	
+	// -------------------------------------------------------------------------------------------
+
+	public void checkModuleSize(LocationAST node) {
+		int moduleSize = node.getEndOffset() - node.getOffset();
+		int referenceSize = T3Q.activeProfile.getMaximumAllowedModuleSizeInBytes();
+		if (moduleSize > referenceSize) {
+			String moduleIdentifier = ASTUtil.findChild(node,
+					TTCN3ParserTokenTypes.Identifier).getFirstChild().getText();
+
+			this.getLoggingInterface().logWarning(node.getLine(),
+					node.getEndLine(),
+					MessageClass.MODULARIZATION,
+					"Module \"" + moduleIdentifier + "\" is bigger ("
+							+ moduleSize
+							+ " bytes) that the maximum allowed module size ("
+							+ referenceSize + " bytes)!",
+					"7.21, " + MiscTools.getMethodName());
+
+		}
+	}
+
+	// -------------------------------------------------------------------------------------------
+
+	public void checkModuleContainment(LocationAST node,
+			String moduleRestriction) {
+		if (node.getType() == TTCN3ParserTokenTypes.TTCN3ModuleId) {
+			LocationAST textNode = node.getNthChild(4);
+			String moduleName = textNode.getText();
+			if (!moduleName.contains(moduleRestriction)) {
+				return;
+			}
+
+		}
+
+		LocationAST moduleDefinitionsList = null;
+
+		if (node.getType() == TTCN3ParserTokenTypes.GroupDef) {
+			if (node.getFirstChild().getNextSibling() == null) {
+				return;
+			}
+			moduleDefinitionsList = node.getFirstChild().getNextSibling().getFirstChild();
+		} else {
+			if ((node.getNextSibling() == null)
+					|| (node.getNextSibling().getType() != TTCN3ParserTokenTypes.ModuleDefinitionsPart)) {
+				return;
+			}
+			moduleDefinitionsList = node.getNextSibling().getFirstChild();
+		}
+
+		LocationAST moduleDefinition = moduleDefinitionsList.getFirstChild();
+		do {
+			if (moduleDefinition.getType() == TTCN3ParserTokenTypes.ModuleDefinition) {
+				LocationAST definitionTypeNode = moduleDefinition.getFirstChild();
+				if (definitionTypeNode.getType() == TTCN3ParserTokenTypes.Visibility){
+					definitionTypeNode = definitionTypeNode.getNextSibling();
+				}
+
+				if (definitionTypeNode.getType() == TTCN3ParserTokenTypes.GroupDef) {
+					checkModuleContainment(definitionTypeNode,
+							moduleRestriction);
+				} else {
+					if (!moduleRestriction.equals("TypesAndValues")
+							&& (definitionTypeNode.getType() == TTCN3ParserTokenTypes.TypeDef)
+							&& (definitionTypeNode.getFirstChild().getType() == TTCN3ParserTokenTypes.StructuredTypeDef)) {
+						// if definition is of the non-specific type TypeDef,
+						// with sub-type StructuredDefType, descend two levels
+						// in the tree to get the relevant nodes that are
+						// specific enough for restrictions other than
+						// TypesAndValues
+						definitionTypeNode = definitionTypeNode.getFirstChild().getFirstChild();
+
+					}
+					if (!moduleContentsChecker.typePermittedInRestrictedModule(moduleRestriction,
+							definitionTypeNode.getType())) {
+
+						this.getLoggingInterface().logWarning(definitionTypeNode.getLine(),
+								definitionTypeNode.getEndLine(),
+								MessageClass.MODULARIZATION,
+								"Definition in "
+										+ moduleRestriction
+										+ " module is not of the permissible definition type(s)!",
+								"7.x, " + MiscTools.getMethodName());
+					} else {
+						// special case scenario
+						if ((moduleRestriction.equals("Testcases"))
+								&& (definitionTypeNode.getType() == TTCN3ParserTokenTypes.FunctionDef)) {
+
+							if (!isFunctionStartsBehavior(definitionTypeNode.getFirstChild().getFirstChild())) {
+								this.getLoggingInterface().logWarning(definitionTypeNode.getLine(),
+										definitionTypeNode.getEndLine(),
+										MessageClass.MODULARIZATION,
+										"Definition in "
+												+ moduleRestriction
+												+ " module is not of the permissible definition type(s)! Function is never referenced in a start statement!",
+										"7.x, " + MiscTools.getMethodName());
+							}
+
+						}
+					}
+				}
+			}
+		} while ((moduleDefinition = moduleDefinition.getNextSibling()) != null);
+	}
+
+	// -------------------------------------------------------------------------------------------
+
+	public void checkPortMessageGrouping(LocationAST node) {
+
+		String portModuleName = ASTUtil.getEnclosingModuleName(node);
+		String portIdentifierText = ASTUtil.findChild(node, TTCN3ParserTokenTypes.IDENTIFIER).getText();
+
+		LocationAST portGroupDef = LocationAST.resolveParentsUntilType(node,
+				TTCN3ParserTokenTypes.GroupDef);
+
+		if (portGroupDef == null) {
+
+			this.getLoggingInterface().logWarning(node.getLine(),
+					node.getEndLine(),
+					MessageClass.STRUCTURE,
+					"Port type definition for \""
+					+ portIdentifierText
+					+ "\" is found outside a group definition! Related messages can therefore never be in the same group as the port definition!",
+					"4.2, " + MiscTools.getMethodName());
+
+		} else {
+			LocationAST portDefAttribsNode = node.getFirstChild().getNextSibling();
+
+			LocationAST portDefAttribsList = portDefAttribsNode.getFirstChild();
+			do {
+				LinkedList<LocationAST> identifierList = ASTUtil.findTypeNodes(portDefAttribsList,
+						TTCN3ParserTokenTypes.Identifier);
+				for (int j = 0; j < identifierList.size(); j++) {
+					LocationAST identifierNode = identifierList.get(j);
+
+					Symbol symbol = null;
+					String type = null;
+					if (identifierNode.getParent().getType() == TTCN3ParserTokenTypes.Signature) {
+						type = "Signature";
+
+					} else {
+						if (identifierNode.getParent().getType() == TTCN3ParserTokenTypes.TypeReference) {
+							type = "Message type";
+						}
+					}
+					if (type != null) {
+						symbol = identifierNode.getFirstChild().getSymbol();
+
+						if (symbol == null) {
+
+							this.getLoggingInterface().logWarning(identifierNode.getLine(),
+									identifierNode.getEndLine(),
+									MessageClass.STRUCTURE,
+									""
+									+ type
+									+ " definition for \""
+									+ identifierNode.getFirstChild().getText()
+									+ "\" related to port type definition for \""
+									+ portIdentifierText
+									+ "\" cannot be resolved! It is therefore not in the same group!",
+									"4.2, " + MiscTools.getMethodName());
+
+							
+						} else {
+							LocationAST declarationIdentifierNode = symbol.getDeclarationNode();
+
+							String declarationModuleName = ASTUtil.getEnclosingModuleName(declarationIdentifierNode);
+
+							LocationAST declarationGroupDef = LocationAST.resolveParentsUntilType(declarationIdentifierNode,
+									TTCN3ParserTokenTypes.GroupDef);
+							if (declarationGroupDef == null) {
+								this.getLoggingInterface().logWarning(identifierNode.getLine(),
+										identifierNode.getEndLine(),
+										MessageClass.STRUCTURE,
+										""
+												+ type
+												+ " definition for \""
+												+ declarationIdentifierNode.getText()
+												+ "\" <"
+												+ declarationIdentifierNode.getLine()
+												+ ","
+												+ declarationModuleName
+												+ ",- "
+												+ "> "
+												+ "related to port type definition for \""
+												+ portIdentifierText
+												+ "\" <"
+												+ node.getLine()
+												+ ","
+												+ portModuleName
+												+ ","
+												+ portGroupDef.getNthChild(2).getText()
+												+ "> "
+												+ "is found outside a group definition! It can therefore never be in the same group as the port type definition!",
+										"4.2, " + MiscTools.getMethodName());
+
+							} else {
+								if (declarationModuleName.equals(portModuleName)) {
+									if (!portGroupDef.equals(declarationGroupDef)) {
+										if (!isNodeWithinGroup(declarationGroupDef,
+												portGroupDef)) {
+
+											this.getLoggingInterface().logWarning(identifierNode.getLine(),
+													identifierNode.getEndLine(),
+													MessageClass.STRUCTURE,
+													""
+															+ type
+															+ " definition for \""
+															+ declarationIdentifierNode.getText()
+															+ "\" <"
+															+ declarationIdentifierNode.getLine()
+															+ ","
+															+ declarationModuleName
+															+ ","
+															+ declarationGroupDef.getNthChild(2).getText()
+															+ "> "
+															+ "related to port type definition for \""
+															+ portIdentifierText
+															+ "\" <"
+															+ node.getLine()
+															+ ","
+															+ portModuleName
+															+ ","
+															+ portGroupDef.getNthChild(2).getText()
+															+ "> "
+															+ "is not within the same group as the port type definition!",
+													"4.2, "
+															+ MiscTools.getMethodName());
+											
+										} else {
+											this.getLoggingInterface().logInformation(identifierNode.getLine(),
+													identifierNode.getEndLine(),
+													MessageClass.STRUCTURE,
+													""
+															+ type
+															+ " definition for \""
+															+ declarationIdentifierNode.getText()
+															+ "\" <"
+															+ declarationIdentifierNode.getLine()
+															+ ","
+															+ declarationModuleName
+															+ ","
+															+ declarationGroupDef.getNthChild(2).getText()
+															+ "> "
+															+ "related to port type definition for \""
+															+ portIdentifierText
+															+ "\" <"
+															+ node.getLine()
+															+ ","
+															+ portModuleName
+															+ ","
+															+ portGroupDef.getNthChild(2).getText()
+															+ "> "
+															+ "is within a nested subgroup within the same group as the port type definition!",
+													"4.2, "
+															+ MiscTools.getMethodName());
+										}
+									}
+								} else {
+									this.getLoggingInterface().logWarning(identifierNode.getLine(),
+											identifierNode.getEndLine(),
+											MessageClass.STRUCTURE,
+											""
+													+ type
+													+ " definition for \""
+													+ declarationIdentifierNode.getText()
+													+ "\" <"
+													+ declarationIdentifierNode.getLine()
+													+ ","
+													+ declarationModuleName
+													+ ","
+													+ declarationGroupDef.getNthChild(2).getText()
+													+ "> "
+													+ "related to port type definition for \""
+													+ portIdentifierText
+													+ "\" <"
+													+ node.getLine()
+													+ ","
+													+ portModuleName
+													+ ","
+													+ portGroupDef.getNthChild(2).getText()
+													+ "> "
+													+ "is not within the same module as the port type definition! It can therefore never be in the same group as the port definition!",
+
+											"4.2, " + MiscTools.getMethodName());
+								}
+							}
+
+						}
+					}
+
+				}
+
+			} while ((portDefAttribsList = portDefAttribsList.getNextSibling()) != null);
+
+		}
+
+	}
+
+	// -------------------------------------------------------------------------------------------
+
+	public void checkTypeDefOrderInGroup(LocationAST node) {
+		String previousDefId = null;
+		String currentDefId = null;
+		LocationAST identifierNode = node.getFirstChild();
+		String identifierText = identifierNode.getFirstChild().getText();
+
+		if (identifierNode.getNextSibling() != null) {
+			LocationAST moduleDefinition = identifierNode.getNextSibling()
+					.getNthChild(2);
+			do {
+				if (moduleDefinition.getType() != TTCN3ParserTokenTypes.SemiColon) {
+					if (moduleDefinition.getFirstChild().getType() == TTCN3ParserTokenTypes.TypeDef) {
+						LinkedList<LocationAST> identifierList = ASTUtil
+								.findTypeNodes(moduleDefinition,
+										TTCN3ParserTokenTypes.Identifier);
+						if (identifierList.size() > 0){
+							
+							LocationAST definitionIdentifier = identifierList
+									.get(0);
+	
+							currentDefId = definitionIdentifier.getFirstChild()
+									.getText();
+							// switched to case insensitive ordering
+							if (previousDefId != null
+									&& (currentDefId
+											.compareToIgnoreCase(previousDefId) <= 0)) {
+								this.getLoggingInterface().logWarning(
+										node.getLine(),
+										node.getEndLine(),
+										MessageClass.STRUCTURE,
+										"Type definitions <\""
+														+ previousDefId
+														+ "\",\""
+														+ currentDefId
+														+ "\"> within group \""
+														+ identifierText
+														+ "\" are not alphabetically ordered!" +
+										"4.1, " + MiscTools.getMethodName());
+							}
+							previousDefId = currentDefId;
+						
+						}
+
+					}
+				}
+			} while ((moduleDefinition = moduleDefinition.getNextSibling()) != null);
+		}
+	}
+
+	// -------------------------------------------------------------------------------------------
+
+	public void checkLocalDefinitionsComeFirst(LocationAST node) {
+		boolean hasOtherDefinitions = false;
+		int previousLocalDefinitionsOrderLevel = 0;
+		//TODO: REFACTOR!!! and reorganize
+		ArrayList<Integer> configuredLocalDefinitionTypes = getConfiguredLocalDefinitionTypes();
+		if (configuredLocalDefinitionTypes.size() == 0){
+			return;
+		}
+
+		String definedLocalDefinitionOrder = "";
+		for (String localDef : T3Q.activeProfile.getLocalDefinitionTypes()){
+			definedLocalDefinitionOrder += localDef+", ";
+		}
+		definedLocalDefinitionOrder = definedLocalDefinitionOrder.substring(0, definedLocalDefinitionOrder.length()-2);
+		
+		if (node.getFirstChild().getType() == TTCN3ParserTokenTypes.AltstepDef) {
+			LocationAST altstepLocalDefList = (LocationAST) ASTUtil
+					.findSibling(node.getNthChild(2),
+							TTCN3ParserTokenTypes.AltstepLocalDefList);
+
+			if (altstepLocalDefList != null) {
+
+				LocationAST altstepLocalDef = altstepLocalDefList
+						.getFirstChild();
+
+				do {
+					if (altstepLocalDef.getFirstChild() != null) {
+						LocationAST definition = altstepLocalDef
+								.getFirstChild();
+						if (configuredLocalDefinitionTypes.contains(definition.getType())) {
+							int currentLocalDefinitionTypeOrderLevel = configuredLocalDefinitionTypes.indexOf(definition.getType());
+							if (hasOtherDefinitions){
+								this.getLoggingInterface().logWarning(
+										definition.getLine(),
+										definition.getEndLine(),
+										MessageClass.STYLE,
+										"Local definition is not at the begining!",
+										"6.8, " + MiscTools.getMethodName());
+								
+							} else {
+								if ((currentLocalDefinitionTypeOrderLevel < previousLocalDefinitionsOrderLevel)) {
+									this.getLoggingInterface().logWarning(
+											definition.getLine(),
+											definition.getEndLine(),
+											MessageClass.STYLE,
+											"Local definition order is not maintained as configured ("
+											+ definedLocalDefinitionOrder
+											+ ")!" +
+											"6.8, " + MiscTools.getMethodName());
+								} else {
+									previousLocalDefinitionsOrderLevel = currentLocalDefinitionTypeOrderLevel;
+								}
+							}
+						} else {
+							hasOtherDefinitions = true;
+						}
+					}
+				} while ((altstepLocalDef = altstepLocalDef.getNextSibling()) != null);
+
+			}
+
+			LocationAST altstepGuardList = (LocationAST) ASTUtil.findSibling(
+					node.getNthChild(2), TTCN3ParserTokenTypes.AltGuardList);
+
+			if (altstepGuardList != null) {
+
+				LinkedList<LocationAST> localDefNodes = new LinkedList<LocationAST>();
+				for (int configuredLocalDefinitionType : configuredLocalDefinitionTypes){
+					localDefNodes.addAll(ASTUtil
+						.findTypeNodes(altstepGuardList,
+								configuredLocalDefinitionType));
+				}
+				if (!localDefNodes.isEmpty()) {
+					LocationAST localDefNode;
+					for (int i = 0; i < localDefNodes.size(); i++) {
+						localDefNode = localDefNodes.get(i);
+						this.getLoggingInterface().logWarning(
+								localDefNode.getLine(),
+								localDefNode.getEndLine(),
+								MessageClass.STYLE,
+								"Local definition is not at the begining!",
+								"6.8, " + MiscTools.getMethodName());
+					}
+
+				}
+			}
+
+		}
+		else if (node.getFirstChild().getType() == TTCN3ParserTokenTypes.FunctionDef
+				|| node.getFirstChild().getType() == TTCN3ParserTokenTypes.TestcaseDef) {
+			LocationAST functionStatementBlock = (LocationAST) ASTUtil
+					.findSibling(node.getNthChild(2),
+							TTCN3ParserTokenTypes.StatementBlock); // node.getFirstChild()
+
+			if (functionStatementBlock != null) {
+
+				LocationAST functionStatementOrDefNode = functionStatementBlock
+						.getFirstChild();
+
+				if (functionStatementOrDefNode == null) {
+					return;
+				}
+
+				do {
+					if (functionStatementOrDefNode.getFirstChild() != null) {
+						if ((functionStatementOrDefNode
+								.getType() == TTCN3ParserTokenTypes.FunctionLocalInst) || 
+								(functionStatementOrDefNode
+								.getType() == TTCN3ParserTokenTypes.FunctionLocalDef)) {
+							//duplicated
+							LocationAST definition = functionStatementOrDefNode
+									.getFirstChild();
+							if (configuredLocalDefinitionTypes.contains(definition.getType())) {
+								int currentLocalDefinitionTypeOrderLevel = configuredLocalDefinitionTypes.indexOf(definition.getType());
+								if (hasOtherDefinitions) {
+									this.getLoggingInterface().logWarning(
+											definition.getLine(),
+											definition.getEndLine(),
+											MessageClass.STYLE,
+											"Local definition is not at the begining!",
+											"6.8, " + MiscTools.getMethodName());
+
+								} else {
+									if ((currentLocalDefinitionTypeOrderLevel < previousLocalDefinitionsOrderLevel)) {
+										this.getLoggingInterface().logWarning(
+												definition.getLine(),
+												definition.getEndLine(),
+												MessageClass.STYLE,
+												"Local definition order is not maintained as configured ("
+												+ definedLocalDefinitionOrder
+												+ ")!" +
+												"6.8, " + MiscTools.getMethodName());
+									} else {
+										previousLocalDefinitionsOrderLevel = currentLocalDefinitionTypeOrderLevel;
+									}
+
+								}
+							} else {
+								// it could be a timer
+								hasOtherDefinitions = true;
+							}
+						} else {
+							// anything else
+							hasOtherDefinitions = true;
+							// search for local definition nodes
+							//duplicated
+							LinkedList<LocationAST> localDefNodes = new LinkedList<LocationAST>();
+							for (int configuredLocalDefinitionType : configuredLocalDefinitionTypes){
+								localDefNodes.addAll(ASTUtil
+									.findTypeNodes(functionStatementOrDefNode,
+											configuredLocalDefinitionType));
+							}
+
+							
+							if (!localDefNodes.isEmpty()) {
+								LocationAST localDefNode;
+								for (int i = 0; i < localDefNodes.size(); i++) {
+									localDefNode = localDefNodes.get(i);
+									this.getLoggingInterface().logWarning(
+											localDefNode.getLine(),
+											localDefNode.getEndLine(),
+											MessageClass.STYLE,
+											"Local definition is not at the begining!",
+											"6.8, " + MiscTools.getMethodName());
+								}
+
+							}
+
+						}
+					}
+				} while ((functionStatementOrDefNode = functionStatementOrDefNode
+						.getNextSibling()) != null);
+			}
+		}
+
+		else if ((node.getFirstChild().getType() == TTCN3ParserTokenTypes.TypeDef) && (node.getNthChild(3).getType() == TTCN3ParserTokenTypes.ComponentDef)) {
+			LinkedList<LocationAST> componentElementDefs = ASTUtil
+					.findTypeNodes(node,
+							TTCN3ParserTokenTypes.ComponentElementDef);
+			for (LocationAST componentElementDef : componentElementDefs) {
+				// cloned
+				LocationAST definition = componentElementDef.getFirstChild();
+				if (configuredLocalDefinitionTypes.contains(definition
+						.getType())) {
+					int currentLocalDefinitionTypeOrderLevel = configuredLocalDefinitionTypes
+							.indexOf(definition.getType());
+					if (hasOtherDefinitions) {
+						this.getLoggingInterface().logWarning(
+								definition.getLine(),
+								definition.getEndLine(),
+								MessageClass.STYLE,
+								"Local definition is not at the begining!",
+								"6.8, " + MiscTools.getMethodName());
+					} else {
+						if ((currentLocalDefinitionTypeOrderLevel < previousLocalDefinitionsOrderLevel)) {
+							this.getLoggingInterface().logWarning(
+									definition.getLine(),
+									definition.getEndLine(),
+									MessageClass.STYLE,
+									"Local definition order is not maintained as configured ("
+									+ definedLocalDefinitionOrder
+									+ ")!" +
+									"6.8, " + MiscTools.getMethodName());
+
+						} else {
+							previousLocalDefinitionsOrderLevel = currentLocalDefinitionTypeOrderLevel;
+						}
+
+					}
+				} else {
+					// it could be a timer
+					hasOtherDefinitions = true;
+				}
+
+			}
+		}
+		
+	}
+
+	// -------------------------------------------------------------------------------------------
+
+	//TODO: largely duplicated, factor out
+	public void checkLocalDefinitionsComeFirstWithinControlPart(LocationAST node) {
+		boolean hasOtherDefinitions = false;
+		int previousLocalDefinitionsOrderLevel = 0;
+		// TODO: refactor and reorganize
+		ArrayList<Integer> configuredLocalDefinitionTypes = getConfiguredLocalDefinitionTypes();
+		if (configuredLocalDefinitionTypes.size() == 0) {
+			return;
+		}
+
+		String definedLocalDefinitionOrder = "";
+		for (String localDef : T3Q.activeProfile
+				.getLocalDefinitionTypes()) {
+			definedLocalDefinitionOrder += localDef + ", ";
+		}
+		definedLocalDefinitionOrder = definedLocalDefinitionOrder.substring(0,
+				definedLocalDefinitionOrder.length() - 2);
+		
+		LocationAST controlStatementOrDefNode = node
+		.getFirstChild();
+		
+		if (controlStatementOrDefNode == null) {
+			return;
+		}
+
+		do {
+			if (controlStatementOrDefNode.getFirstChild() != null) {
+				if ((controlStatementOrDefNode.getFirstChild()
+						.getType() == TTCN3ParserTokenTypes.FunctionLocalInst) || 
+						(controlStatementOrDefNode.getFirstChild()
+						.getType() == TTCN3ParserTokenTypes.FunctionLocalDef)) {
+					//duplicated
+					LocationAST definition = controlStatementOrDefNode
+							.getFirstChild().getFirstChild();
+					if (configuredLocalDefinitionTypes.contains(definition.getType())) {
+						int currentLocalDefinitionTypeOrderLevel = configuredLocalDefinitionTypes.indexOf(definition.getType());
+						if (hasOtherDefinitions) {
+							this.getLoggingInterface().logWarning(
+									definition.getLine(),
+									definition.getEndLine(),
+									MessageClass.STYLE,
+									"Local definition is not at the begining!",
+									"6.8, " + MiscTools.getMethodName());
+						} else {
+							if ((currentLocalDefinitionTypeOrderLevel < previousLocalDefinitionsOrderLevel)) {
+								this.getLoggingInterface().logWarning(
+										definition.getLine(),
+										definition.getEndLine(),
+										MessageClass.STYLE,
+										"Local definition order is not maintained as configured ("+definedLocalDefinitionOrder+")!",
+										"6.8, " + MiscTools.getMethodName());
+							} else {
+								previousLocalDefinitionsOrderLevel = currentLocalDefinitionTypeOrderLevel;
+							}
+						}
+					} else {
+						// it could be a timer
+						hasOtherDefinitions = true;
+					}
+				} else {
+					// anything else
+					hasOtherDefinitions = true;
+					// search for local definition nodes
+					//duplicated
+					LinkedList<LocationAST> localDefNodes = new LinkedList<LocationAST>();
+					for (int configuredLocalDefinitionType : configuredLocalDefinitionTypes){
+						localDefNodes.addAll(ASTUtil
+							.findTypeNodes(controlStatementOrDefNode,
+									configuredLocalDefinitionType));
+					}
+
+					
+					if (!localDefNodes.isEmpty()) {
+						LocationAST localDefNode;
+						for (int i = 0; i < localDefNodes.size(); i++) {
+							localDefNode = localDefNodes.get(i);
+							this.getLoggingInterface().logWarning(
+									localDefNode.getLine(),
+									localDefNode.getEndLine(),
+									MessageClass.STYLE,
+									"Local definition is not at the begining!",
+									"6.8, " + MiscTools.getMethodName());
+						}
+
+					}
+
+				}
+			}
+		} while ((controlStatementOrDefNode = controlStatementOrDefNode
+				.getNextSibling()) != null);
+
+	}
+
+	// -------------------------------------------------------------------------------------------
+	
+	private ArrayList<Integer> getConfiguredLocalDefinitionTypes() {
+		ArrayList<Integer> configuredLocalDefinitionTypes = new ArrayList<Integer>();;
+		for (String fieldName : T3Q.activeProfile
+				.getLocalDefinitionTypes()) {
+			if (!Arrays.asList(
+					new QualityCheckProfile().getLocalDefinitionTypes())
+					.contains(fieldName)) {
+				// TODO: error message
+			} else {
+				try {
+					Class<TTCN3ParserTokenTypes> TTCN3TokenTypes = TTCN3ParserTokenTypes.class;
+					Field field = TTCN3TokenTypes.getField(fieldName);
+					configuredLocalDefinitionTypes.add(Integer.parseInt(field.get(TTCN3TokenTypes)
+							.toString()));
+				} catch (SecurityException e) {
+
+				} catch (NoSuchFieldException e) {
+					// TODO: error message
+					// System.out.println("NO SUCH FIELD!");
+				} catch (IllegalArgumentException e) {
+				} catch (IllegalAccessException e) {
+				}
+
+			}
+		}
+		return configuredLocalDefinitionTypes;
+	}
+
+
+	// -------------------------------------------------------------------------------------------
+
+	public void checkImportsComeFirst(LocationAST node) {
+		boolean hasOtherDefinitions = false;
+
+		if ((node.getNextSibling() == null)
+				|| (node.getNextSibling().getType() != TTCN3ParserTokenTypes.ModuleDefinitionsPart)) {
+			return;
+		}
+
+		LocationAST moduleDefinitionsList = node.getNextSibling()
+				.getFirstChild();
+
+		LocationAST moduleDefinition = moduleDefinitionsList.getFirstChild();
+
+		do {
+			if (moduleDefinition.getFirstChild() != null) {
+				LocationAST definition = moduleDefinition.getFirstChild();
+				if (definition.getType() == TTCN3ParserTokenTypes.ImportDef) {
+					if (hasOtherDefinitions) {
+						this.getLoggingInterface().logWarning(
+								definition.getLine(),
+								definition.getEndLine(),
+								MessageClass.STRUCTURE,
+								"Import statement is not at the begining!",
+								"6.9, " + MiscTools.getMethodName());
+					}
+				} else {
+					hasOtherDefinitions = true;
+				}
+			}
+		} while ((moduleDefinition = moduleDefinition.getNextSibling()) != null);
+	}
+
+	// -------------------------------------------------------------------------------------------
+
+	public void checkNoAllKeywordInPortDefinitions(LocationAST node) {
+		LocationAST identifierNode = node.getFirstChild();
+		String identifierText = identifierNode.getFirstChild().getText();
+		LinkedList<LocationAST> allKeywordNodes = ASTUtil.findTypeNodes(node,
+				TTCN3ParserTokenTypes.AllKeyword);
+		if (!allKeywordNodes.isEmpty()) {
+			LocationAST allKeywordNode;
+			for (int i = 0; i < allKeywordNodes.size(); i++) {
+				allKeywordNode = allKeywordNodes.get(i);
+				this.getLoggingInterface().logWarning(
+						allKeywordNode.getLine(),
+						allKeywordNode.getEndLine(),
+						MessageClass.STRUCTURE,
+						"\"all\" keyword is used in the definition of port \""
+								+ identifierText + "\"!",
+						"4.2.1, " + MiscTools.getMethodName());
+			}
+		}
+
+	}
+
+	// -------------------------------------------------------------------------------------------
+
+	public void checkLogStatementFormat(LocationAST node) {
+		if (subsequentLogStatementNodes.contains(node)){
+			//skipping subsequently checked nodes
+			return;
+		}
+		int endLine = node.getEndLine();
+		String logStatementText = getLogStatementText(node);
+		if (T3Q.activeProfile.isProcessSubsequentLogStatementsAsOne()) {
+			LocationAST subsequentLogStatementNode = getSubsequentLogStatement(node);
+			while (subsequentLogStatementNode != null){
+				logStatementText += getLogStatementText(subsequentLogStatementNode);
+				endLine = subsequentLogStatementNode.getEndLine();
+				subsequentLogStatementNodes.add(subsequentLogStatementNode);
+				subsequentLogStatementNode = getSubsequentLogStatement(subsequentLogStatementNode);
+			} 
+		}
+		checkLogFormat(node, logStatementText, endLine);
+	}
+
+	// -------------------------------------------------------------------------------------------
+	
+	private LocationAST getSubsequentLogStatement(LocationAST logStatementNode) {
+		LocationAST subsequentLogStatementNode = null;
+		LocationAST nextStatement = logStatementNode.getNthParent(3)
+				.getNextSibling();
+
+		if ((nextStatement != null) && (nextStatement.getType() == TTCN3ParserTokenTypes.SemiColon)) {
+				nextStatement = nextStatement.getNextSibling();
+		}
+		if (nextStatement != null){
+			if (nextStatement.getType() == TTCN3ParserTokenTypes.FunctionStatement || 
+					nextStatement.getType() == TTCN3ParserTokenTypes.ControlStatementOrDef) {
+				LocationAST thirdChild = nextStatement
+						.getNthChild(3);
+				if (thirdChild != null
+						&& thirdChild.getType() == TTCN3ParserTokenTypes.LogStatement) {
+					subsequentLogStatementNode = thirdChild;
+				}
+			}
+		}
+
+		return subsequentLogStatementNode;
+	}
+
+	// -------------------------------------------------------------------------------------------
+	
+	private String getLogStatementText(LocationAST node) {
+		String logStatementText = "";
+		
+		LocationAST logItem = node.getFirstChild();
+		
+		do {
+			if (logItem.getFirstChild().getType()!=TTCN3ParserTokenTypes.TemplateInstance){
+				logStatementText += logItem.getFirstChild().getText();
+			} else {
+				//TODO: attempt to perform resolution
+				logStatementText += "";
+			}
+			logItem = logItem.getNextSibling();
+		} while (logItem!=null && logItem.getType()==TTCN3ParserTokenTypes.LogItem);
+		return logStatementText;
+	}
+
+	// -------------------------------------------------------------------------------------------
+
+	public void checkLogItemFormat(LocationAST node) {
+		String logItemText = node.getFirstChild().getText();
+		checkLogFormat(node, logItemText, node.getEndLine());
+	}
+
+	// -------------------------------------------------------------------------------------------
+	
+	private void checkLogFormat(LocationAST node, String logItemText, int endLine) {
+		boolean problemOccured = false;
+		String warning = "";
+
+		Pattern logPattern = Pattern.compile(T3Q.activeProfile
+				.getLogFormatRegExp(), Pattern.DOTALL);
+		Matcher logMatcher = logPattern.matcher(logItemText);
+
+		if (!logMatcher.matches()) {
+			problemOccured = true;
+			warning = "Invalid log format (\"" + logItemText + "\")!";
+		} else if (!logMatcher.group(1).equals("")) { // check if the first
+			// group is empty
+			// if not try to resolve the container identifier
+			String logItemContainerIdentifier = logMatcher.group(1);
+
+			// check if it is a module definition
+			LocationAST moduleDefinitionNode = LocationAST
+					.resolveParentsUntilType(node,
+							TTCN3ParserTokenTypes.ModuleDefinition);
+
+			if (moduleDefinitionNode != null) {
+
+				// check if it is a function def or altstep def or testcase def
+				int parentContainerType = moduleDefinitionNode.getFirstChild()
+						.getType();
+				if (parentContainerType == TTCN3ParserTokenTypes.Visibility){
+					parentContainerType = moduleDefinitionNode.getFirstChild().getNextSibling()
+					.getType(); 
+				}
+				if (parentContainerType == TTCN3ParserTokenTypes.TestcaseDef
+						|| parentContainerType == TTCN3ParserTokenTypes.FunctionDef
+						|| parentContainerType == TTCN3ParserTokenTypes.AltstepDef) {
+					LocationAST parentContainerNodeIdentifier = LocationAST.getModuleDefinitionIdentifiersList(moduleDefinitionNode).get(0);
+					Symbol parentContainerSymbol = parentContainerNodeIdentifier.getFirstChild().getSymbol();
+					String parentContainerSymbolName = parentContainerSymbol
+							.getName();
+
+					if (!parentContainerSymbolName
+							.equals(logItemContainerIdentifier)) {
+						problemOccured = true;
+						warning = "Log statement contains invalid container identifier (\""
+								+ logItemContainerIdentifier
+								+ "\", should be \""
+								+ parentContainerSymbolName + "\")!";
+					}
+
+				} else {
+					// not a testcase, a function or an altstep
+					// is it possible at all? - probably not
+				}
+
+			} else {
+				// it is a control part
+				moduleDefinitionNode = LocationAST.resolveParentsUntilType(node,
+						TTCN3ParserTokenTypes.ModuleControlPart);
+				if (moduleDefinitionNode == null) {
+					// else it is not a control part - is it possible? probably
+					// not
+				}
+			}
+
+		}
+
+		if (problemOccured) {
+			this.getLoggingInterface().logWarning(node.getLine(), endLine, MessageClass.LOGGING, warning, "5.1. "+MiscTools.getMethodName());
+		}
+	}
+
+	// -------------------------------------------------------------------------------------------
+
+	public void checkTestcasesModuleImportsLibCommon_Sync(LocationAST node) {
+		LocationAST identifierNode = (LocationAST) ASTUtil.findChild(node, TTCN3ParserTokenTypes.IDENTIFIER);
+		String moduleName = identifierNode.getText();
+		if ((!moduleName.contains("Testcases"))
+				|| moduleName.contains("LibCommon_Sync")) {
+			return;
+		}
+
+		boolean libCommonReferenceFound = false;
+		
+		//Identical part
+		LinkedList<LocationAST> importDefNodes = ASTUtil
+		.findTypeNodes(node.getParent(),
+				TTCN3ParserTokenTypes.ImportDef);
+		for (int i = 0; i < importDefNodes.size(); i++) {
+			String importedModuleIdentifierText = ASTUtil.findChild(importDefNodes.get(i), TTCN3ParserTokenTypes.IDENTIFIER).getText();
+			if (importedModuleIdentifierText.contains("LibCommon_Sync")) {
+				libCommonReferenceFound = true;
+			}
+		}
+		
+//TODO: Superseded by above version, check for correctness and discard odler version	
+//		LocationAST moduleDefinitionsList = node.getNextSibling()
+//				.getFirstChild();
+//		LocationAST moduleDefinition = moduleDefinitionsList.getFirstChild();
+//		do {
+//			if (moduleDefinition.getFirstChild() != null) {
+//				LocationAST definition = moduleDefinition.getFirstChild();
+//				if (definition.getType() == TTCN3ParserTokenTypes.ImportDef) {
+//					LinkedList<LocationAST> importIdentifierNodes = ASTUtil
+//							.findTypeNodes(definition,
+//									TTCN3ParserTokenTypes.Identifier);
+//					for (int i = 0; i < importIdentifierNodes.size(); i++) {
+//						if (importIdentifierNodes.get(i).getFirstChild()
+//								.getText().contains("LibCommon_Sync")) {
+//							LocationAST importFromSpecNode = LocationAST
+//									.resolveParentsUntilType(
+//											importIdentifierNodes.get(i),
+//											TTCN3ParserTokenTypes.ImportFromSpec);
+//							if (importFromSpecNode != null)
+//								libCommonReferenceFound = true;
+//						}
+//					}
+//				}
+//			}
+//		} while ((moduleDefinition = moduleDefinition.getNextSibling()) != null);
+
+		if (!libCommonReferenceFound) {
+			this
+			.getLoggingInterface()
+			.logWarning(
+					identifierNode.getLine(),
+					identifierNode.getEndLine(),
+					MessageClass.STYLE,
+					"Required import from \"LibCommon_Sync\" not found!",
+					"7.11, " + MiscTools.getMethodName());
+		}
+	}
+
+	// -------------------------------------------------------------------------------------------
+
+	public void checkTypesAndValuesModuleImportsLibCommon(LocationAST node) {
+		LocationAST identifierNode = (LocationAST) ASTUtil.findChild(node, TTCN3ParserTokenTypes.IDENTIFIER);
+		String moduleName = identifierNode.getText();
+
+		Pattern typesAndValuesImportsLibNamesExcludedPattern = Pattern.compile(T3Q.activeProfile
+				.getTypesAndValuesImportsLibNamesExcludedRegExp());
+		Matcher typesAndValuesImportsLibNamesExcludedMatcher = typesAndValuesImportsLibNamesExcludedPattern.matcher(moduleName);;
+		
+		if (!moduleName.contains("TypesAndValues")
+				|| typesAndValuesImportsLibNamesExcludedMatcher.matches())
+			return;
+
+		Pattern typesAndValuesImportsLibNamesPattern = Pattern.compile(T3Q.activeProfile
+				.getTypesAndValuesImportsLibNamesRegExp());
+		Matcher typesAndValuesImportsLibNamesMatcher = null;
+		
+		boolean libCommonReferenceFound = false;
+
+		LinkedList<LocationAST> importDefNodes = ASTUtil
+		.findTypeNodes(node.getParent(),
+				TTCN3ParserTokenTypes.ImportDef);
+		for (int i = 0; i < importDefNodes.size(); i++) {
+			String importedModuleIdentifierText = ASTUtil.findChild(importDefNodes.get(i), TTCN3ParserTokenTypes.IDENTIFIER).getText();
+			typesAndValuesImportsLibNamesMatcher = typesAndValuesImportsLibNamesPattern.matcher(importedModuleIdentifierText);
+			if (typesAndValuesImportsLibNamesMatcher.matches()) {
+				libCommonReferenceFound = true;
+			}
+		}
+
+//TODO: Superseded by above version, check for correctness and discard odler version	
+//		LocationAST moduleDefinitionsList = node.getNextSibling()
+//				.getFirstChild();
+//		LocationAST moduleDefinition = moduleDefinitionsList.getFirstChild();
+//		do {
+//			if (moduleDefinition.getFirstChild() != null) {
+//				LocationAST definition = moduleDefinition.getFirstChild();
+//				if (definition.getType() == TTCN3ParserTokenTypes.ImportDef) {
+//					LocationAST importIdentifierNode = definition.getNthChild(4);
+//					LinkedList<LocationAST> importIdentifierNodes = ASTUtil
+//							.findTypeNodes(definition,
+//									TTCN3ParserTokenTypes.Identifier);
+//					for (int i = 0; i < importIdentifierNodes.size(); i++) {
+//						String identifierText = importIdentifierNodes.get(i).getFirstChild()
+//								.getText();
+//						typesAndValuesImportsLibNamesMatcher = typesAndValuesImportsLibNamesPattern.matcher(identifierText);
+//						if (typesAndValuesImportsLibNamesMatcher.matches()) {
+//							LocationAST importFromSpecNode = LocationAST
+//									.resolveParentsUntilType(
+//											importIdentifierNodes.get(i),
+//											TTCN3ParserTokenTypes.ImportFromSpec);
+//							if (importFromSpecNode != null)
+//								libCommonReferenceFound = true;
+//						}
+//					}
+//				}
+//			}
+//		} while ((moduleDefinition = moduleDefinition.getNextSibling()) != null);
+
+		if (!libCommonReferenceFound) {
+			this
+			.getLoggingInterface()
+			.logWarning(
+					identifierNode.getLine(),
+					identifierNode.getEndLine(),
+					MessageClass.STYLE,
+					"Required import from \""+T3Q.activeProfile.getTypesAndValuesImportsLibNamesRegExp()+"\" not found!!",
+					"7.3, " + MiscTools.getMethodName());
+			
+		}
+	}
+
+	// -------------------------------------------------------------------------------------------
+	//TODO: address wolfgang's problem
+	public void checkNoModifiedTemplateOfModifiedTemplate(LocationAST node) {
+		// Not explicitly necessary, for consistency only
+		boolean problemOccured = false;
+
+		// resolution of the modified template scope
+		LocationAST identifierNode = (LocationAST) ASTUtil.findChild(node,
+				TTCN3ParserTokenTypes.IDENTIFIER);
+
+		Symbol modifiedSymbol = identifierNode.getSymbol();
+
+		if (modifiedSymbol != null) {
+
+			// derives the identifier of the declaration node
+			LocationAST modifiedIdentifierNode = modifiedSymbol
+					.getDeclarationNode();
+
+			// resolution of the declaration node
+			LocationAST modifiedTemplateNode = LocationAST.resolveParentsUntilType(modifiedIdentifierNode, TTCN3ParserTokenTypes.TemplateDef);
+			LocationAST modifiedTemplateDerivedDefNode = (LocationAST) ASTUtil
+					.findDerivedDef(modifiedTemplateNode);
+
+			if (modifiedTemplateDerivedDefNode != null) {
+				problemOccured = true;
+
+				// resolution of the modifying template scope
+				//TODO: revise
+				
+				LocationAST modifyingIdentifierNode = node.getContainingModuleDefinitionIdentifiersList().get(0);
+				System.out.println(modifyingIdentifierNode);
+				Symbol modifyingSymbol = modifyingIdentifierNode.getFirstChild().getSymbol();
+
+				if (problemOccured) {
+					this
+							.getLoggingInterface()
+							.logWarning(
+									node.getLine(),
+									node.getEndLine(),
+									MessageClass.STYLE,
+									"Template \""
+											+ modifyingSymbol.getName()
+											+ "\" modifies another modified template (\""
+											+ modifiedSymbol.getName() + "\")!",
+									"6.7, " + MiscTools.getMethodName());
+				}
+
+			}
+		} else {
+			this
+			.getLoggingInterface()
+			.logInformation(
+					identifierNode.getLine(),
+					identifierNode.getEndLine(),
+					MessageClass.STYLE,
+					"The declaration of template \""
+					+ identifierNode.getText()
+					+ "\" cannot be resolved! It cannot be determined whether it is a modified template.",
+					"6.7, " + MiscTools.getMethodName());
+		}
+
+	}
+
+	// -------------------------------------------------------------------------------------------
+
+	public void checkNoNestedAltStatements(LocationAST node) {
+
+
+		LinkedList<LocationAST> nestedAltConstructNodes = ASTUtil.findTypeNodes(node
+//				.getFirstChild()
+				, TTCN3ParserTokenTypes.AltConstruct);
+
+		if (nestedAltConstructNodes != null && nestedAltConstructNodes.size() > 0) {
+			LocationAST nestedAltConstructNode;
+
+			for (int n = 0; n < nestedAltConstructNodes.size(); n++) {
+				nestedAltConstructNode = nestedAltConstructNodes.get(n);
+				int nestingDepth = getAltConstructNesting(nestedAltConstructNode); 
+				if (nestingDepth > T3Q.activeProfile.getMaximumAllowedNestingDepth()) {
+					this.getLoggingInterface().logWarning(nestedAltConstructNode.getLine(), nestedAltConstructNode.getEndLine(), MessageClass.STYLE, "Alt statement nesting depth ("+nestingDepth+") exceeds maximum allowed nesting depth ("+T3Q.activeProfile.getMaximumAllowedNestingDepth()+")!", "6.3, "+MiscTools.getMethodName());
+				}
+			}
+		}
+
+	}
+
+	// -------------------------------------------------------------------------------------------
+
+	private int getAltConstructNesting(LocationAST node){
+		int nestingDepth = 1;
+		LocationAST containingAltConstructNode = LocationAST.resolveParentsUntilType(node.getParent(), new int[] {TTCN3ParserTokenTypes.AltConstruct, TTCN3ParserTokenTypes.AltstepDef});
+		
+		if (containingAltConstructNode != null){
+			nestingDepth += getAltConstructNesting(containingAltConstructNode);
+		} else {
+			nestingDepth = 0;
+		}
+		return nestingDepth;
+	}
+	
+	// -------------------------------------------------------------------------------------------
+
+	public void checkNoAnyTypeKeyword(LocationAST node) {
+		// Not explicitly necessary, for consistency only
+		boolean problemOccured = false;
+		problemOccured = true;
+		if (problemOccured) {
+			this.getLoggingInterface().logWarning(node.getLine(), node.getEndLine(), MessageClass.STYLE, "Keyword \"anytype\" is used!", "6.5, "+MiscTools.getMethodName());
+		}
+
+	}
+
+	// -------------------------------------------------------------------------------------------
+
+	public void checkNoGotoStatements(LocationAST node) {
+		// Not explicitly necessary, for consistency only
+		boolean problemOccured = false;
+		problemOccured = true;
+		if (problemOccured) {
+			this.getLoggingInterface().logWarning(node.getLine(), node.getEndLine(), MessageClass.STYLE, "A \"goto\" statement is used!", "6.1, "+MiscTools.getMethodName());
+		}
+
+	}
+
+	// -------------------------------------------------------------------------------------------
+
+	public void checkNoLabelStatements(LocationAST node) {
+		// Not explicitly necessary, for consistency only
+		boolean problemOccured = false;
+		problemOccured = true;
+		if (problemOccured) {
+			this.getLoggingInterface().logWarning(node.getLine(), node.getEndLine(), MessageClass.STYLE, "A \"label\" statement is used!", "6.1, "+MiscTools.getMethodName());
+		}
+
+	}
+
+	// -------------------------------------------------------------------------------------------
+
+	public void checkExternalFunctionInvocationPrecededByLogStatement(
+			LocationAST node) {
+
+		LocationAST identifierNode = (LocationAST) ASTUtil.findChild(node,
+				TTCN3ParserTokenTypes.Identifier);
+
+		Symbol symbol = identifierNode.getFirstChild().getSymbol();
+
+		// TODO: fix
+		// ETSI SIP/ETSI TS 102 027-3
+		// (SIP) -v4.2.5 (2008-01)/SIP_Steps.ttcn
+		// : Function Call to Response_401_r_1 on Line:12830
+		// PROBLEM: Symbol scope cannot be determined.
+
+		if (symbol == null) {
+			this.getLoggingInterface().logInformation(node.getLine(),
+					node.getEndLine(),
+					MessageClass.LOGGING,
+					"Function definition for \""
+							+ identifierNode.getFirstChild().getText()
+							+ "\" cannot be resolved! It cannot be determined if it is an external function call!",
+					"5.3, " + MiscTools.getMethodName());
+			
+		}
+		
+		if (symbol instanceof FunctionSymbol) {
+			FunctionSymbol fs = (FunctionSymbol) symbol;
+
+			if (fs.isExternal()) {
+				boolean problemOccured = false;
+				String symbolName = fs.getName();
+
+				LocationAST parentNode = LocationAST.resolveParentsUntilType(node,
+						TTCN3ParserTokenTypes.FunctionStatement);
+
+				if (parentNode == null) {
+					LocationAST moduleDefinitionNode = LocationAST.resolveParentsUntilType(node,
+							TTCN3ParserTokenTypes.ModuleDefinition);
+					if (moduleDefinitionNode != null) {
+
+						this.getLoggingInterface().logInformation(node.getLine(),
+								node.getEndLine(),
+								MessageClass.LOGGING,
+								"Call to external function \""
+										+ symbolName
+										+ "\" within a definition on the module level. It cannot be preceded by a log statement!",
+								"5.3, " + MiscTools.getMethodName());
+
+					} else {
+						// TODO: produce a debugging message?
+					}
+					return;
+				}
+
+				int functionStatementOrDefsVisitedCount = visitor	.getFunctionStatementOrDefNodes()
+																	.size();
+				if (parentNode == visitor	.getFunctionStatementOrDefNodes()
+											.get(functionStatementOrDefsVisitedCount - 1)) {
+
+					int i = functionStatementOrDefsVisitedCount - 2;
+					if (i >= 0) {
+						LocationAST next = null;
+						// skip semicolons
+						next = visitor	.getFunctionStatementOrDefNodes()
+										.get(i)
+										.getNextSibling();
+
+						while ((next != null)
+								&& (next.getType() == TTCN3ParserTokenTypes.SemiColon)) {
+							next = next.getNextSibling();
+						}
+
+						if (next == parentNode) {
+							LocationAST resultNode = (LocationAST) ASTUtil.findChild(visitor.getFunctionStatementOrDefNodes()
+																							.get(i),
+									TTCN3ParserTokenTypes.LogStatement);
+							if (resultNode == null) {
+								problemOccured = true;
+							}
+						} else {
+							problemOccured = true;
+						}
+					} else {
+						problemOccured = true;
+					}
+				}				
+				
+//				LocationAST parentSibling = parentNode.getNextSibling();
+//
+//				// Check if there is a next sibling and if it is a SemiColon
+//				if (parentSibling != null
+//						&& parentSibling.getType() == TTCN3ParserTokenTypes.SemiColon) {
+//					// Next sibling is a SemiColon, skip to the next one
+//					parentSibling = parentSibling.getNextSibling();
+//				}
+//
+//				if (parentSibling != null) {
+//
+//					if (parentSibling.getType() == TTCN3ParserTokenTypes.FunctionStatement) {
+//						if (ASTUtil.findTypeNodes(parentSibling,
+//								TTCN3ParserTokenTypes.LogStatement).isEmpty()) {
+//							// fixed: consider using ASTUtil.findChild instead
+//							// => not for now
+//
+//							// Sibling does not contain a log statement
+//							problemOccured = true;
+//
+//						}
+//					} else {
+//						// Sibling not of type FunctionStateme -> no Log
+//						// statement present
+//						problemOccured = true;
+//					}
+//				} else {
+//					// No sibling present -> no Log statement present
+//					problemOccured = true;
+//
+//				}
+
+				if (problemOccured) {
+					this.getLoggingInterface().logWarning(node.getLine(),
+							node.getEndLine(),
+							MessageClass.LOGGING,
+							"Call to external function \"" + symbolName
+									+ "\" not preceded by a log statement!",
+							"5.3, " + MiscTools.getMethodName());
+				}
+
+			} else {
+				// Symbol Not a Function Symbol
+			}
+		}
+	}
+	
+	// -------------------------------------------------------------------------------------------
+	
+	public void checkInconcOrFailSetVerdictPrecededByLog(LocationAST node) {
+		//TODO: no more function statement or defs 
+		//TODO: fixed issue with statement blocks
+		
+		// Fixed: currently based on SetLocalVerdict node,
+		// consider starting at the fail or inconc node instead, checking
+		// whether it is
+		// within a set verdict context and proceed from there
+		// fix: it is specific to the set verdict and not to inconc or fail
+		// alone
+
+		boolean problemOccured = false;
+		if (ASTUtil.findChild(node, TTCN3ParserTokenTypes.Fail) != null
+				|| ASTUtil.findChild(node, TTCN3ParserTokenTypes.Inconc) != null) {
+
+			LocationAST parentNode = LocationAST.resolveParentsUntilType(node,
+					new int[] {TTCN3ParserTokenTypes.FunctionStatement});
+			if (parentNode == null){
+				this.getLoggingInterface().logFix(node.getLine(), node.getEndLine(), MessageClass.LOGGING, "Cannot resolve the parent node", "5.4, "+MiscTools.getMethodName());		
+				return;
+			}
+
+			int functionStatementOrDefsVisitedCount = visitor
+					.getFunctionStatementOrDefNodes().size();
+			if (parentNode == visitor.getFunctionStatementOrDefNodes().get(
+					functionStatementOrDefsVisitedCount - 1)) {
+
+				int i = functionStatementOrDefsVisitedCount - 2;
+				if (i >= 0) {
+					LocationAST next = null;
+					// skip semicolons
+					next = visitor.getFunctionStatementOrDefNodes().get(i)
+							.getNextSibling();
+
+					while ((next != null)
+							&& (next.getType() == TTCN3ParserTokenTypes.SemiColon)) {
+						next = next.getNextSibling();
+					}
+
+					if (next == parentNode) {
+						LocationAST resultNode = (LocationAST) ASTUtil
+								.findChild(visitor
+										.getFunctionStatementOrDefNodes()
+										.get(i),
+										TTCN3ParserTokenTypes.LogStatement);
+						if (resultNode == null) {
+							problemOccured = true;
+						}
+					} else {
+						problemOccured = true;
+					}
+				} else {
+					problemOccured = true;
+				}
+			}
+		}
+
+		if (problemOccured) {
+			this.getLoggingInterface().logWarning(node.getLine(), node.getEndLine(), MessageClass.LOGGING, "No log statement precedes a fail or inconc setverdict statement!", "5.4, "+MiscTools.getMethodName());
+		}
+	}
+
+	// -------------------------------------------------------------------------------------------
+
+	public void checkNoPermutationKeyword(LocationAST node) {
+		// Not explicitly necessary, for consistency only
+		boolean problemOccured = false;
+		problemOccured = true;
+		if (problemOccured) {
+			this.getLoggingInterface().logWarning(node.getLine(), node.getEndLine(), MessageClass.STYLE, "Keyword \"permutation\" is used!", "6.4, "+MiscTools.getMethodName());
+		}
+
+	}
+
+	// ---------------BASE REFERENCES - TO BE DISCARDED---------------------
+
+	// DEPRECATED: FOR REFERENCE ONLY
+	public void checkExternalFunctionInvocationFollowedByLogStatementDEV(
+			LocationAST node) {
+		// DEBUG
+
+		LocationAST identifierNode = (LocationAST) ASTUtil.findChild(node,
+				TTCN3ParserTokenTypes.IDENTIFIER);
+
+		Symbol symb = identifierNode.getScope().resolve(identifierNode);
+
+
+		if (symb instanceof FunctionSymbol) {
+			FunctionSymbol fs = (FunctionSymbol) symb;
+
+			// DEBUG
+			this.getLoggingInterface().logDebug(node.getLine(), node.getEndLine(), MessageClass.LOGGING, "external: " + fs.isExternal());
+
+			
+			if (fs.isExternal()) {
+				boolean problemOccured = false;
+				String symbolName = fs.getName();
+				LocationAST parentNode = LocationAST.resolveParentsUntilType(
+						node, TTCN3ParserTokenTypes.FunctionStatement);
+				// DEBUG
+				this.getLoggingInterface().logDebug(node.getLine(), node.getEndLine(), MessageClass.LOGGING, "Parent Type:"
+						+ parentNode.getType());
+
+				this.getLoggingInterface().logDebug(node.getLine(), node.getEndLine(), MessageClass.LOGGING, "Parent Text:"
+						+ parentNode.getText());
+
+				// 2x getNextSibling to skip the SemiColon
+				LocationAST parentSibling = parentNode.getNextSibling()
+						.getNextSibling();
+
+				if (parentSibling != null) {
+					// DEBUG
+					this.getLoggingInterface().logDebug(node.getLine(), node.getEndLine(), MessageClass.LOGGING, "Parent Sibling Type:"
+							+ parentSibling.getType());
+					this.getLoggingInterface().logDebug(node.getLine(), node.getEndLine(), MessageClass.LOGGING, "Parent Sibling Text:"
+							+ parentSibling.getText());
+
+					if (parentSibling.getType() == TTCN3ParserTokenTypes.FunctionStatement) {
+						if (ASTUtil.findTypeNodes(parentSibling,
+								TTCN3ParserTokenTypes.LogStatement).isEmpty()) {
+							// DEBUG
+							this.getLoggingInterface().logDebug(node.getLine(), node.getEndLine(), MessageClass.LOGGING, "Sibling does not containg a log statement!");
+							problemOccured = true;
+
+						}
+					} else {
+						// DEBUG
+						this.getLoggingInterface().logDebug(node.getLine(), node.getEndLine(), MessageClass.LOGGING, "Sibling not of Type FunctionStatement  => No Log Statement Present");
+						problemOccured = true;
+					}
+				} else {
+					// DEBUG
+					this.getLoggingInterface().logDebug(node.getLine(), node.getEndLine(), MessageClass.LOGGING, "No Sibling Present! => No Log Statement Present");
+					problemOccured = true;
+
+				}
+
+				if (problemOccured) {
+					this.getLoggingInterface().logWarning(node.getLine(), node.getEndLine(), MessageClass.LOGGING, "Call to external function \""
+							+ symbolName
+							+ "\" not followed by a log statement!", "5.4, "+ MiscTools.getMethodName());
+				}
+
+			} else {
+				// DEBUG
+				this.getLoggingInterface().logDebug(node.getLine(), node.getEndLine(), MessageClass.LOGGING, "Symbol NOT a function symbol");
+			}
+
+		}
+	}
+
+
+
+
+}
Index: /trunk/t3q/src/org/etsi/t3q/visitor/QualityCheckerExtras.java
===================================================================
--- /trunk/t3q/src/org/etsi/t3q/visitor/QualityCheckerExtras.java	(revision 7)
+++ /trunk/t3q/src/org/etsi/t3q/visitor/QualityCheckerExtras.java	(revision 7)
@@ -0,0 +1,259 @@
+package org.etsi.t3q.visitor;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.etsi.common.MiscTools;
+import org.etsi.common.logging.LoggingInterface.MessageClass;
+import org.etsi.t3q.T3Q;
+
+import de.ugoe.cs.swe.trex.core.analyzer.astutil.ReferenceFinder;
+import de.ugoe.cs.swe.trex.core.analyzer.astutil.ReferenceWithContext;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.LocationAST;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.TTCN3ParserTokenTypes;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.symboltable.Symbol;
+
+public class QualityCheckerExtras extends QualityChecker {
+
+	public QualityCheckerExtras(T3QVisitor visitor) {
+		super(visitor);
+		// TODO Auto-generated constructor stub
+	}
+
+
+	public void checkZeroReferencedTestCases(LocationAST node) {
+		if (node.getFirstChild().getType() != TTCN3ParserTokenTypes.TestcaseDef){
+			return;
+		}
+		ArrayList<LocationAST> identifiersList = LocationAST.getModuleDefinitionIdentifiersList(node);
+		LocationAST identifierNode = null;
+		String identifierText = null;
+		for (int i = 0; i < identifiersList.size(); i++){
+			identifierNode = identifiersList.get(i);
+			identifierText = identifierNode.getFirstChild().getText();
+	
+			Symbol s = identifierNode.getFirstChild().getSymbol();
+			//TODO: add safety check here 
+			ReferenceFinder referenceFinder = new ReferenceFinder();
+			if (referenceFinder.countReferences(s) == 0){
+				//TODO: add stats counters
+				//TODO: add type information
+				//TODO: groups shall probably be excluded
+				this.getLoggingInterface().logWarning(identifierNode.getLine(),
+						identifierNode.getEndLine(),
+						MessageClass.LOGGING,
+						"Testcase definition for \""+identifierText+"\" is never used!",
+								MiscTools.getMethodName());
+			}
+		}
+	
+	}
+
+	public void checkSetVerdictPrecededByLog(LocationAST node) {
+			//TODO: duplicated and combined constraints (presence and content according to context)
+			// Fixed: currently based on SetLocalVerdict node,
+			// consider starting at the fail or inconc node instead, checking
+			// whether it is
+			// within a set verdict context and proceed from there
+			// fix: it is specific to the set verdict and not to inconc or fail
+			// alone
+			boolean problemOccured = false;
+			String warning = "";
+			if (node.getFirstChild().getType() == TTCN3ParserTokenTypes.Fail){
+				LocationAST functionStatementOrDefNode = LocationAST.resolveParentsUntilType(node, TTCN3ParserTokenTypes.FunctionStatement);
+				LocationAST parentNode = functionStatementOrDefNode.getParent();
+				LocationAST siblingNode = parentNode.getFirstChild();
+				LocationAST prevSiblingNode = null;
+				do {
+					if (siblingNode.getType()!=TTCN3ParserTokenTypes.SemiColon){
+						prevSiblingNode = siblingNode;
+					}
+					siblingNode = siblingNode.getNextSibling();
+				} while ((siblingNode != functionStatementOrDefNode) && (siblingNode !=null));
+	
+				if (prevSiblingNode!=null && prevSiblingNode.getType()==TTCN3ParserTokenTypes.FunctionStatement){
+					if (prevSiblingNode.getNthChild(3).getType()!=TTCN3ParserTokenTypes.LogStatement){
+						problemOccured = true;
+						warning = "Failing verdict not preceded by a log statement";
+					} else {
+						//check log statement format according to context
+						LocationAST moduleDefinitionNode = LocationAST.resolveParentsUntilType(node, TTCN3ParserTokenTypes.ModuleDefinition);
+						if (moduleDefinitionNode.getFirstChild().getType()==TTCN3ParserTokenTypes.AltstepDef){
+							LocationAST altstepDefIdentifierNode = moduleDefinitionNode.getNthChild(3);
+						
+							//CHECK REFERENCING CONTEXTS
+							int activatedAsDefault = 0;
+							boolean mixedContext = false;
+							Symbol altstepDefSymbol = altstepDefIdentifierNode.getSymbol();
+	
+							ReferenceFinder referenceFinder = new ReferenceFinder();
+							Map<String, List<ReferenceWithContext>> referenceMap = referenceFinder
+									.findReferences(altstepDefSymbol);
+							if (referenceMap.isEmpty()) {
+								activatedAsDefault = -1;
+							} else {
+								Iterator<Entry<String, List<ReferenceWithContext>>> referenceMapIterator = referenceMap
+										.entrySet().iterator();
+	
+								while (referenceMapIterator.hasNext()) {
+									Entry<String, List<ReferenceWithContext>> referenceEntry = referenceMapIterator
+											.next();
+									Iterator<ReferenceWithContext> referenceIterator = referenceEntry
+											.getValue().iterator();
+									while (referenceIterator.hasNext()) {
+										ReferenceWithContext referenceWithContext = referenceIterator
+												.next();
+										LocationAST referenceNode = referenceWithContext
+												.getReferenceNode();
+										//HERE
+										if (referenceNode.getNthParent(3).getType() != TTCN3ParserTokenTypes.ActivateOp) {
+											if (activatedAsDefault==1){
+												mixedContext = true;
+											}
+											activatedAsDefault = -1;
+										} else {
+											if (activatedAsDefault==-1){
+												mixedContext = true;
+											}
+											activatedAsDefault = 1;
+										}
+									}
+								}
+							}
+							if (mixedContext){
+								this.getLoggingInterface().logInformation(node.getLine(),
+										node.getEndLine(),
+										MessageClass.LOGGING,
+										"Alstep \""+altstepDefIdentifierNode.getText()+"\" is used in mixed contexts (both activated as default and not), therefore the results for the correct log statement format may be unreliable!",
+												MiscTools.getMethodName());
+							}
+							if (activatedAsDefault > 0){
+								this.checkLogStatementFormat(prevSiblingNode.getNthChild(3),false);
+							} else {
+								this.checkLogStatementFormat(prevSiblingNode.getNthChild(3),true);
+							}
+						}
+					}
+				} else {
+					problemOccured = true;
+					warning = "Failing verdict not preceded by a log statement!";
+				}
+			}
+			if (node.getFirstChild().getType() == TTCN3ParserTokenTypes.None){
+				//TODO: DUPLICATE BLOCK
+				LocationAST functionStatementOrDefNode = LocationAST.resolveParentsUntilType(node, TTCN3ParserTokenTypes.FunctionStatement);
+				LocationAST parentNode = functionStatementOrDefNode.getParent();
+				LocationAST siblingNode = parentNode.getFirstChild();
+				LocationAST prevSiblingNode = null;
+				do {
+					if (siblingNode.getType()!=TTCN3ParserTokenTypes.SemiColon){
+						prevSiblingNode = siblingNode;
+					}
+					siblingNode = siblingNode.getNextSibling();
+				} while ((siblingNode != functionStatementOrDefNode) && (siblingNode !=null));
+	
+				if (prevSiblingNode!=null && prevSiblingNode.getType()==TTCN3ParserTokenTypes.FunctionStatement){
+					if (prevSiblingNode.getNthChild(3).getType()!=TTCN3ParserTokenTypes.LogStatement){
+						problemOccured = true;
+						warning = "Verdict \"none\" not preceded by a log statement!";
+					} else {
+						this.checkLogStatementFormat(prevSiblingNode.getNthChild(3),false);	
+					}
+				}
+			} 
+			
+			
+			if (problemOccured) {
+				this.getLoggingInterface().logWarning(node.getLine(),
+						node.getEndLine(),
+						MessageClass.LOGGING,
+						warning,
+								MiscTools.getMethodName());
+			}
+			
+	//		boolean problemOccured = false;
+	//
+	//		if (ASTUtil.findChild(node, TTCN3ParserTokenTypes.Fail) != null
+	//				|| ASTUtil.findChild(node, TTCN3ParserTokenTypes.Inconc) != null) {
+	//
+	//			LocationAST parentNode = LocationAST.resolveParentsUntilType(node,
+	//					TTCN3ParserTokenTypes.FunctionStatementOrDef);
+	//
+	//			int functionStatementOrDefsVisited = visitor
+	//					.getFunctionStatementOrDefNodes().size();
+	//			if (parentNode == visitor.getFunctionStatementOrDefNodes().get(
+	//					functionStatementOrDefsVisited - 1)) {
+	//				int i = functionStatementOrDefsVisited - 2;
+	//				if (i > 0) {
+	//					LocationAST next = null;
+	//					// skip semicolons
+	//					next = visitor.getFunctionStatementOrDefNodes().get(i)
+	//							.getNextSibling();
+	//					while ((next != null)
+	//							&& (next.getType() == TTCN3ParserTokenTypes.SemiColon)) {
+	//						next = next.getNextSibling();
+	//					}
+	//
+	//					if (next == parentNode) {
+	//						LocationAST resultNode = (LocationAST) ASTUtil
+	//								.findChild(visitor
+	//										.getFunctionStatementOrDefNodes()
+	//										.get(i),
+	//										TTCN3ParserTokenTypes.LogStatement);
+	//						if (resultNode == null) {
+	//							problemOccured = true;
+	//						}
+	//					} else {
+	//						problemOccured = true;
+	//					}
+	//				} else {
+	//					problemOccured = true;
+	//				}
+	//			}
+	//		}
+		}
+
+	public void checkLogStatementFormat(LocationAST node, boolean withVerificationPoint) {
+		boolean problemOccured = false;
+		String warning = "";
+		String logItemText = "";
+		
+		LocationAST logItem = node.getFirstChild();
+		
+		do {
+			if (logItem.getFirstChild().getType()!=TTCN3ParserTokenTypes.TemplateInstance){
+				logItemText += logItem.getFirstChild().getText();
+			} else {
+				//TODO: attempt to perform resolution
+				logItemText += "<<VAR>>";
+			}
+			logItem = logItem.getNextSibling();
+		} while (logItem!=null && logItem.getType()==TTCN3ParserTokenTypes.LogItem);
+		
+	
+		Pattern logPattern = Pattern.compile(T3Q.activeProfile
+				.getLogFormatRegExp());
+		Matcher logMatcher = logPattern.matcher(logItemText);
+		if (!logMatcher.matches()) {
+			problemOccured = true;
+			warning = "Invalid log format (\"" + logItemText + "\")!";
+		} else if (logMatcher.group(1).equals("") && withVerificationPoint) {
+			problemOccured = true;
+			warning = "Invalid log format (\"" + logItemText + "\") - missing verification point!";
+		}
+		if (problemOccured) {
+			this.getLoggingInterface().logWarning(node.getLine(),
+					node.getEndLine(),
+					MessageClass.LOGGING,
+					warning,
+							MiscTools.getMethodName());
+		}
+	
+	}
+
+}
Index: /trunk/t3q/src/org/etsi/t3q/visitor/T3QVisitor.java
===================================================================
--- /trunk/t3q/src/org/etsi/t3q/visitor/T3QVisitor.java	(revision 7)
+++ /trunk/t3q/src/org/etsi/t3q/visitor/T3QVisitor.java	(revision 7)
@@ -0,0 +1,526 @@
+package org.etsi.t3q.visitor;
+
+import java.util.LinkedList;
+
+import org.etsi.t3q.T3Q;
+import org.etsi.t3q.exceptions.TTCN3BehaviorException;
+
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.LocationAST;
+
+public class T3QVisitor extends AbstractVisitor {
+
+	private LinkedList<LocationAST> functionStatementOrDefNodes = new LinkedList<LocationAST>();
+	private QualityChecker checker = new QualityChecker(this);
+	private NamingConventionsChecker namingConventionsChecker = new NamingConventionsChecker(
+			checker);
+
+	private String filename;
+	
+	@Override
+	public void finish() {
+	}
+
+	@Override
+	public void init() {
+		//TODO: Document feature
+		checker.getLoggingInterface().setLogSourceName(this.getFilename());
+		checker.stringLevelChecks(this.getFilename());
+	}
+
+	public ContinueStatus visitTTCN3Module(LocationAST node)
+			throws TTCN3BehaviorException {
+		if (T3Q.activeProfile.isCheckModuleSize()) {
+			checker.checkModuleSize(node);
+		}
+
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitModuleDefinition(LocationAST node)
+			throws TTCN3BehaviorException {
+		if (T3Q.activeProfile.isCheckNoDuplicatedModuleDefinitionIdentifiers()) {
+			checker.checkNoDuplicatedModuleDefinitionIdentifiers(node);
+		}
+		if (T3Q.activeProfile.isCheckZeroReferencedModuleDefinitions()) {
+			checker.checkZeroReferencedModuleDefinitions(node);
+		}
+		if (T3Q.activeProfile.isCheckLocalDefinitionsComeFirst()) {
+			checker.checkLocalDefinitionsComeFirst(node);
+		}
+		if (T3Q.activeProfile.isCheckNoUnusedLocalDefinitions()) {
+			checker.checkNoUnusedLocalDefinitions(node);
+		}
+
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitSingleConstDef(LocationAST node)
+			throws TTCN3BehaviorException {
+		if (T3Q.activeProfile.isCheckNamingConventions()) {
+			namingConventionsChecker.checkConstant(node);
+		}
+
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitExtConstDef(LocationAST node)
+			throws TTCN3BehaviorException {
+		if (T3Q.activeProfile.isCheckNamingConventions()) {
+			namingConventionsChecker.checkExtConstant(node);
+		}
+
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitGroupDef(LocationAST node)
+			throws TTCN3BehaviorException {
+		if (T3Q.activeProfile.isCheckTypeDefOrderInGroup()) {
+			checker.checkTypeDefOrderInGroup(node);
+		}
+		if (T3Q.activeProfile.isCheckNamingConventions()) {
+			namingConventionsChecker.checkGroup(node);
+		}
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitPortDef(LocationAST node)
+			throws TTCN3BehaviorException {
+		if (T3Q.activeProfile.isCheckNoAllKeywordInPortDefinitions()) {
+			checker.checkNoAllKeywordInPortDefinitions(node);
+		}
+
+		if (T3Q.activeProfile.isCheckPortMessageGrouping()) {
+			checker.checkPortMessageGrouping(node);
+		}
+
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitPortInstance(LocationAST node)
+			throws TTCN3BehaviorException {
+		if (T3Q.activeProfile.isCheckNamingConventions()) {
+			namingConventionsChecker.checkPortInstance(node);
+		}
+
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitModuleParList(LocationAST node)
+			throws TTCN3BehaviorException {
+		if (T3Q.activeProfile.isCheckNamingConventions()) {
+			namingConventionsChecker.checkModuleParameter(node);
+		}
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitTTCN3ModuleId(LocationAST node) {
+		if (T3Q.activeProfile.isFeatureListImportingModuleNames()) {
+			checker.listImportingModuleNames(node);
+		}
+		if (T3Q.activeProfile.isFeatureListImportingModuleFileNames()) {
+			checker.listImportingModuleFileNames(node);
+		}
+	
+		if (T3Q.activeProfile.isCheckImportsComeFirst()) {
+			checker.checkImportsComeFirst(node);
+		}
+
+		if (T3Q.activeProfile
+				.isCheckTypesAndValuesModuleImportsLibNames()) {
+			checker.checkTypesAndValuesModuleImportsLibCommon(node);
+		}
+
+		if (T3Q.activeProfile
+				.isCheckTestcasesModuleImportsLibCommon_Sync()) {
+			checker.checkTestcasesModuleImportsLibCommon_Sync(node);
+		}
+
+		if (T3Q.activeProfile
+				.isCheckTypesAndValuesModuleContainmentCheck()) {
+			checker.checkModuleContainment(node, "TypesAndValues");
+		}
+		if (T3Q.activeProfile.isCheckTemplatesModuleContainmentCheck()) {
+			checker.checkModuleContainment(node, "Templates");
+		}
+		if (T3Q.activeProfile.isCheckFunctionsModuleContainmentCheck()) {
+			checker.checkModuleContainment(node, "Functions");
+		}
+		if (T3Q.activeProfile.isCheckTestcasesModuleContainmentCheck()) {
+			checker.checkModuleContainment(node, "Testcases");
+		}
+		if (T3Q.activeProfile.isCheckModuleParamsModuleContainmentCheck()) {
+			checker.checkModuleContainment(node, "ModuleParams");
+		}
+		if (T3Q.activeProfile.isCheckInterfaceModuleContainmentCheck()) {
+			checker.checkModuleContainment(node, "Interface");
+		}
+		if (T3Q.activeProfile.isCheckTestSystemModuleContainmentCheck()) {
+			checker.checkModuleContainment(node, "TestSystem");
+		}
+		if (T3Q.activeProfile.isCheckTestControlModuleContainmentCheck()) {
+			checker.checkModuleContainment(node, "TestControl");
+		}
+		if (T3Q.activeProfile.isCheckNamingConventions()) {
+			namingConventionsChecker.checkModule(node);
+		}
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitAltConstruct(LocationAST node)
+			throws TTCN3BehaviorException {
+
+		if (T3Q.activeProfile.isCheckNoNestedAltStatements()) {
+			checker.checkNoNestedAltStatements(node);
+		}
+
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitRunsOnSpec(LocationAST node)
+			throws TTCN3BehaviorException {
+		if (T3Q.activeProfile.isCheckNoOverSpecificRunsOnClauses()) {
+			checker.checkNoOverSpecificRunsOnClauses(node);
+		}
+
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitImportDef(LocationAST node)
+			throws TTCN3BehaviorException {
+
+		if (T3Q.activeProfile.isFeatureListImportedModuleNames()) {
+			checker.listImportedModuleNames(node);
+		}
+		if (T3Q.activeProfile.isFeatureListImportedModuleFileNames()) {
+			checker.listImportedModuleFileNames(node);
+		}
+
+		if (T3Q.activeProfile.isCheckNoUnusedImports()) {
+			checker.checkNoUnusedImports(node);
+		}
+
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	
+	public ContinueStatus visitAnyTypeKeyword(LocationAST node)
+			throws TTCN3BehaviorException {
+
+		if (T3Q.activeProfile.isCheckNoAnyTypeKeyword()) {
+			checker.checkNoAnyTypeKeyword(node);
+		}
+
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitVarInstance(LocationAST node)
+			throws TTCN3BehaviorException {
+		if (T3Q.activeProfile.isCheckNamingConventions()) {
+			namingConventionsChecker.checkVariable(node);
+		}
+
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitTimerInstance(LocationAST node)
+			throws TTCN3BehaviorException {
+		if (T3Q.activeProfile.isCheckNamingConventions()) {
+			namingConventionsChecker.checkTimer(node);
+		}
+
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitInLineTemplate(LocationAST node)
+			throws TTCN3BehaviorException {
+		if (T3Q.activeProfile.isCheckNoInlineTemplates()) {
+			checker.checkNoInlineTemplates(node);
+		}
+
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitTemplateDef(LocationAST node)
+			throws TTCN3BehaviorException {
+		if (T3Q.activeProfile.isCheckNamingConventions()) {
+			namingConventionsChecker.checkMessageTemplate(node);
+		}
+		if (T3Q.activeProfile.isCheckNamingConventions()) {
+			namingConventionsChecker.checkSTF160Template(node);
+		}
+
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitDerivedDef(LocationAST node)
+			throws TTCN3BehaviorException {
+
+		if (T3Q.activeProfile
+				.isCheckNoModifiedTemplateOfModifiedTemplate()) {
+
+			checker.checkNoModifiedTemplateOfModifiedTemplate(node);
+		}
+
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitExtFunctionDef(LocationAST node)
+			throws TTCN3BehaviorException {
+		if (T3Q.activeProfile.isCheckNamingConventions()) {
+			namingConventionsChecker.checkExtFunction(node);
+		}
+
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitSignatureDef(LocationAST node)
+			throws TTCN3BehaviorException {
+		if (T3Q.activeProfile.isCheckNamingConventions()) {
+			namingConventionsChecker.checkSignatureTemplate(node);
+		}
+
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitFormalValuePar(LocationAST node)
+			throws TTCN3BehaviorException {
+		if (T3Q.activeProfile.isCheckNamingConventions()) {
+			namingConventionsChecker.checkFormalParameter(node);
+		}
+		if (T3Q.activeProfile.isCheckNoUnusedFormalParameters()) {
+			checker.checkNoUnusedFormalParameters(node);
+		}
+
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitFormalTemplatePar(LocationAST node)
+			throws TTCN3BehaviorException {
+		if (T3Q.activeProfile.isCheckNamingConventions()) {
+			namingConventionsChecker.checkFormalParameter(node);
+		}
+		if (T3Q.activeProfile.isCheckNoUnusedFormalParameters()) {
+			checker.checkNoUnusedFormalParameters(node);
+		}
+
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitFormalTimerPar(LocationAST node)
+			throws TTCN3BehaviorException {
+		if (T3Q.activeProfile.isCheckNamingConventions()) {
+			namingConventionsChecker.checkFormalParameter(node);
+		}
+		if (T3Q.activeProfile.isCheckNoUnusedFormalParameters()) {
+			checker.checkNoUnusedFormalParameters(node);
+		}
+
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitFormalPortPar(LocationAST node)
+			throws TTCN3BehaviorException {
+		if (T3Q.activeProfile.isCheckNoUnusedFormalParameters()) {
+			checker.checkNoUnusedFormalParameters(node);
+		}
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitPredefinedValue(LocationAST node)
+			throws TTCN3BehaviorException {
+		if (T3Q.activeProfile.isCheckNoLiterals()) {
+			checker.checkNoLiterals(node);
+		}
+		return ContinueStatus.getInstance(true, true);
+	}
+	
+
+	public ContinueStatus visitTypeDef(LocationAST node)
+			throws TTCN3BehaviorException {
+		if (T3Q.activeProfile.isCheckNamingConventions()) {
+			namingConventionsChecker.checkDataType(node);
+		}
+
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitEnumeration(LocationAST node)
+			throws TTCN3BehaviorException {
+		if (T3Q.activeProfile.isCheckNamingConventions()) {
+			namingConventionsChecker.checkEnumeratedValue(node);
+		}
+
+		return ContinueStatus.getInstance(true, true);
+	}
+	
+	public ContinueStatus visitStatementBlock(LocationAST node)
+			throws TTCN3BehaviorException {
+		functionStatementOrDefNodes.clear();
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitFunctionDef(LocationAST node)
+			throws TTCN3BehaviorException {
+		functionStatementOrDefNodes.clear();
+		if (T3Q.activeProfile.isCheckNamingConventions()) {
+			namingConventionsChecker.checkFunction(node);
+		}
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitTestcaseDef(LocationAST node)
+			throws TTCN3BehaviorException {
+		functionStatementOrDefNodes.clear();
+		if (T3Q.activeProfile.isCheckNamingConventions()) {
+			namingConventionsChecker.checkTestcase(node);
+		}
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitAltstepDef(LocationAST node)
+			throws TTCN3BehaviorException {
+		functionStatementOrDefNodes.clear();
+		if (T3Q.activeProfile.isCheckNamingConventions()) {
+			namingConventionsChecker.checkAltstep(node);
+		}
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitModuleControlPart(LocationAST node)
+			throws TTCN3BehaviorException {
+		functionStatementOrDefNodes.clear();
+
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitModuleControlBody(LocationAST node)
+			throws TTCN3BehaviorException {
+
+		if (T3Q.activeProfile.isCheckLocalDefinitionsComeFirst()) {
+			checker.checkLocalDefinitionsComeFirstWithinControlPart(node);
+		}
+		if (T3Q.activeProfile.isCheckNoUnusedLocalDefinitions()) {
+			checker.checkNoUnusedLocalDefinitions(node);
+		}
+
+		return ContinueStatus.getInstance(true, true);
+	}
+	
+	
+	
+	public ContinueStatus visitFunctionRef(LocationAST node)
+			throws TTCN3BehaviorException {
+
+		if (T3Q.activeProfile
+				.isCheckExternalFunctionInvocationPrecededByLogStatement()) {
+
+			checker.checkExternalFunctionInvocationPrecededByLogStatement(node);
+		}
+
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitGotoStatement(LocationAST node)
+			throws TTCN3BehaviorException {
+
+		if (T3Q.activeProfile.isCheckNoLabelsOrGotoStatements()) {
+			checker.checkNoGotoStatements(node);
+		}
+
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitLabelStatement(LocationAST node)
+			throws TTCN3BehaviorException {
+
+		if (T3Q.activeProfile.isCheckNoLabelsOrGotoStatements()) {
+			checker.checkNoLabelStatements(node);
+		}
+
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitLogItem(LocationAST node)
+			throws TTCN3BehaviorException {
+
+		if (T3Q.activeProfile.isCheckLogItemFormat()) {
+			checker.checkLogItemFormat(node);
+		}
+		return ContinueStatus.getInstance(true, true);
+	}
+	
+	public ContinueStatus visitLogStatement(LocationAST node)
+			throws TTCN3BehaviorException {
+		//TODO: Temporary/TEMEA+Enhancements
+		//may also be adopted instead of log item checking
+		if (T3Q.activeProfile.isCheckLogStatementFormat()) {
+			checker.checkLogStatementFormat(node);
+		}
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitPermutationMatch(LocationAST node)
+			throws TTCN3BehaviorException {
+
+		if (T3Q.activeProfile.isCheckNoPermutationKeyword()) {
+			checker.checkNoPermutationKeyword(node);
+		}
+
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitSetLocalVerdict(LocationAST node)
+			throws TTCN3BehaviorException {
+
+		if (T3Q.activeProfile
+				.isCheckInconcOrFailSetVerdictPrecededByLog()) {
+			checker.checkInconcOrFailSetVerdictPrecededByLog(node);
+		}
+
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitFunctionStatementOrDef(LocationAST node)
+			throws TTCN3BehaviorException {
+		//TODO: deprecated
+		functionStatementOrDefNodes.add(node);
+		return ContinueStatus.getInstance(true, true);
+	}
+
+	public ContinueStatus visitFunctionStatement(LocationAST node)
+			throws TTCN3BehaviorException {
+
+		functionStatementOrDefNodes.add(node);
+		return ContinueStatus.getInstance(true, true);
+	}	
+	
+	public ContinueStatus visitFunctionLocalInst(LocationAST node)
+			throws TTCN3BehaviorException {
+
+		functionStatementOrDefNodes.add(node);
+		return ContinueStatus.getInstance(true, true);
+	}	
+
+	public ContinueStatus visitFunctionLocalDef(LocationAST node)
+			throws TTCN3BehaviorException {
+
+		functionStatementOrDefNodes.add(node);
+		return ContinueStatus.getInstance(true, true);
+	}
+	
+	
+	public LinkedList<LocationAST> getFunctionStatementOrDefNodes() {
+		return functionStatementOrDefNodes;
+	}
+
+	public void setFilename(String filename) {
+		this.filename = filename;
+	}
+
+	public String getFilename() {
+		return filename;
+	}
+
+
+
+}
Index: /trunk/t3q/src/org/etsi/t3q/visitor/tool/VisitorGenerator.java
===================================================================
--- /trunk/t3q/src/org/etsi/t3q/visitor/tool/VisitorGenerator.java	(revision 7)
+++ /trunk/t3q/src/org/etsi/t3q/visitor/tool/VisitorGenerator.java	(revision 7)
@@ -0,0 +1,70 @@
+package org.etsi.t3q.visitor.tool;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.lang.reflect.Field;
+
+import org.antlr.stringtemplate.StringTemplate;
+import org.antlr.stringtemplate.StringTemplateGroup;
+
+public class VisitorGenerator {
+
+	public VisitorGenerator() {
+
+		try {
+			StringTemplateGroup group = new StringTemplateGroup("visitorGroup",
+					"templates");
+			group.setRefreshInterval(0); // no caching
+			group.setRefreshInterval(Integer.MAX_VALUE); // no refreshing
+			StringTemplate classTemplate = group
+					.getInstanceOf("AbstractVisitor");
+			Class<?> c = Class
+					.forName("de.ugoe.cs.swe.trex.core.analyzer.rfparser.TTCN3ParserTokenTypes");
+			Field[] fields = c.getFields();
+
+			for (int i = 0; i < fields.length; i++) {
+				if (!isOmitField(fields[i])) {
+					classTemplate.setAttribute("nodeType", fields[i].getName());
+				}
+			}
+			File f = new File(
+					"src/org/etsi/t3q/visitor/AbstractVisitor.java");
+			saveFile(f, classTemplate.toString());
+		} catch (ClassNotFoundException e) {
+			e.printStackTrace();
+		}
+	}
+
+	// ----------------------------------------------------------------------
+
+	private boolean isOmitField(Field f) {
+		if (f.getName().contains("EOF")
+				|| f.getName().contains("NULL_TREE_LOOKAHEAD"))
+			return true;
+		return false;
+	}
+
+	// ----------------------------------------------------------------------
+
+	public void saveFile(File filename, String content) {
+		FileOutputStream fs;
+		try {
+			fs = new FileOutputStream(filename);
+			fs.write(content.getBytes());
+			fs.close();
+		} catch (FileNotFoundException e) {
+			e.printStackTrace();
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+
+	// ----------------------------------------------------------------------
+
+	public static void main(String[] args) {
+		new VisitorGenerator();
+	}
+
+}
Index: /trunk/t3q/t3q
===================================================================
--- /trunk/t3q/t3q	(revision 7)
+++ /trunk/t3q/t3q	(revision 7)
@@ -0,0 +1,52 @@
+#!/bin/bash
+
+if [ "$T3Q_HOME" == "" ]; then
+   echo "T3Q_HOME environment variable not set! It must point to the T3Q installation directory!";
+   exit;
+fi
+
+if [ "$JAVA_HOME" == "" ]; then
+   echo "JAVA_HOME environment variable not set! It must point to the directory of your Java Runtime >= 5.0";
+   exit;
+fi
+
+JAVA=$JAVA_HOME/bin/java 
+
+CLASSPATH=$CLASSPATH:$T3Q_HOME/lib/com.yourkit.javaprofiler.controller_7.0.4.jar
+CLASSPATH=$CLASSPATH:$T3Q_HOME/lib/de.ugoe.cs.swe.trex.antlr_2.7.6.jar
+CLASSPATH=$CLASSPATH:$T3Q_HOME/lib/org.eclipse.core.resources_3.4.0.v20080604-1400.jar
+CLASSPATH=$CLASSPATH:$T3Q_HOME/lib/org.eclipse.core.runtime_3.4.0.v20080512.jar
+CLASSPATH=$CLASSPATH:$T3Q_HOME/lib/org.eclipse.equinox.common_3.4.0.v20080421-2006.jar
+CLASSPATH=$CLASSPATH:$T3Q_HOME/lib/org.eclipse.osgi_3.4.0.v20080605-1900.jar
+CLASSPATH=$CLASSPATH:$T3Q_HOME/lib/stringtemplate.jar
+CLASSPATH=$CLASSPATH:$T3Q_HOME/lib/xpp3_min-1.1.4c.jar
+CLASSPATH=$CLASSPATH:$T3Q_HOME/lib/xstream-1.3.1.jar
+CLASSPATH=$CLASSPATH:$T3Q_HOME/lib/commons-cli-1.2.jar
+
+if [ -d "$T3Q_HOME/../de.ugoe.cs.swe.trex.core/bin/de" ]; then
+   CLASSPATH=$CLASSPATH:$T3Q_HOME/../de.ugoe.cs.swe.trex.core/bin
+else
+   CLASSPATH=$CLASSPATH:$T3Q_HOME/lib/de.ugoe.cs.swe.trex.core_0.6.0.200810271154.jar
+fi
+
+if [ -d "$T3Q_HOME/../org.etsi.common/bin/org" ]; then
+   CLASSPATH=$CLASSPATH:$T3Q_HOME/../org.etsi.common/bin
+else
+   CLASSPATH=$CLASSPATH:$T3Q_HOME/lib/org.etsi.common.jar
+fi
+
+if [ -d "$T3Q_HOME/bin/org" ]; then
+   CLASSPATH=$CLASSPATH:$T3Q_HOME/bin
+else
+   CLASSPATH=$CLASSPATH:$T3Q_HOME/lib/t3q.jar
+fi
+
+JAVA_CMD="$JAVA -Xmx712m -Xss128m -cp $CLASSPATH org.etsi.t3q.T3Q"
+
+if [[ $# > 0 && $1 == "--echo" ]]; then
+	echo $JAVA_CMD
+else
+	$JAVA_CMD "$@"
+fi
+
+#$JAVA -Xmx712m -Xss128m -cp $CLASSPATH org.etsi.t3q.T3Q "$@"
Index: /trunk/t3q/t3q-launch4j.xml
===================================================================
--- /trunk/t3q/t3q-launch4j.xml	(revision 7)
+++ /trunk/t3q/t3q-launch4j.xml	(revision 7)
@@ -0,0 +1,40 @@
+<launch4jConfig>
+  <dontWrapJar>true</dontWrapJar>
+  <headerType>console</headerType>
+  <jar></jar>
+  <outfile>t3q.exe</outfile>
+  <errTitle></errTitle>
+  <cmdLine></cmdLine>
+  <chdir></chdir>
+  <priority>normal</priority>
+  <downloadUrl>http://java.com/download</downloadUrl>
+  <supportUrl></supportUrl>
+  <customProcName>true</customProcName>
+  <stayAlive>false</stayAlive>
+  <manifest></manifest>
+  <icon></icon>
+  <classPath>
+    <mainClass>org.etsi.t3q.T3Q</mainClass>
+    <cp>%EXEDIR%\lib\com.yourkit.javaprofiler.controller_7.0.4.jar</cp>
+    <cp>%EXEDIR%\lib\de.ugoe.cs.swe.trex.antlr_2.7.6.jar</cp>
+    <cp>%EXEDIR%\lib\de.ugoe.cs.swe.trex.core_0.6.0.201003090301.jar</cp>
+    <cp>%EXEDIR%\lib\org.eclipse.core.resources_3.4.0.v20080604-1400.jar</cp>
+    <cp>%EXEDIR%\lib\org.eclipse.core.runtime_3.4.0.v20080512.jar</cp>
+    <cp>%EXEDIR%\lib\org.eclipse.equinox.common_3.4.0.v20080421-2006.jar</cp>
+    <cp>%EXEDIR%\lib\org.eclipse.osgi_3.4.0.v20080605-1900.jar</cp>
+    <cp>%EXEDIR%\lib\stringtemplate.jar</cp>
+    <cp>%EXEDIR%\lib\xpp3_min-1.1.4c.jar</cp>
+    <cp>%EXEDIR%\lib\xstream-1.3.1.jar</cp>
+    <cp>%EXEDIR%\lib\commons-cli-1.2.jar</cp>
+    <cp>%EXEDIR%\lib\org.etsi.common.jar</cp>
+    <cp>%EXEDIR%\lib\t3q.jar</cp>
+  </classPath>
+  <jre>
+    <path></path>
+    <minVersion>1.5.0</minVersion>
+    <maxVersion></maxVersion>
+    <jdkPreference>preferJre</jdkPreference>
+    <initialHeapSize>512</initialHeapSize>
+    <maxHeapSize>512</maxHeapSize>
+  </jre>
+</launch4jConfig>
Index: /trunk/t3q/t3q.bat
===================================================================
--- /trunk/t3q/t3q.bat	(revision 7)
+++ /trunk/t3q/t3q.bat	(revision 7)
@@ -0,0 +1,52 @@
+@echo off
+::consider using %dp0 instead of %T3Q_HOME%
+if "%T3Q_HOME%" == "" (
+    echo T3Q_HOME environment variable not set! It must point to the T3Q installation directory!
+    goto:eof
+)
+
+if "%JAVA_HOME%" == "" (
+    echo JAVA_HOME environment variable not set! It must point to the directory of your Java Runtime >= 5.0
+    goto:eof
+)
+
+setlocal
+set CLASSPATH=%T3Q_HOME%\lib\com.yourkit.javaprofiler.controller_7.0.4.jar
+set CLASSPATH=%CLASSPATH%;%T3Q_HOME%\lib\de.ugoe.cs.swe.trex.antlr_2.7.6.jar
+set CLASSPATH=%CLASSPATH%;%T3Q_HOME%\lib\org.eclipse.core.resources_3.4.0.v20080604-1400.jar
+set CLASSPATH=%CLASSPATH%;%T3Q_HOME%\lib\org.eclipse.core.runtime_3.4.0.v20080512.jar
+set CLASSPATH=%CLASSPATH%;%T3Q_HOME%\lib\org.eclipse.equinox.common_3.4.0.v20080421-2006.jar
+set CLASSPATH=%CLASSPATH%;%T3Q_HOME%\lib\org.eclipse.osgi_3.4.0.v20080605-1900.jar
+set CLASSPATH=%CLASSPATH%;%T3Q_HOME%\lib\stringtemplate.jar
+set CLASSPATH=%CLASSPATH%;%T3Q_HOME%\lib\xpp3_min-1.1.4c.jar
+set CLASSPATH=%CLASSPATH%;%T3Q_HOME%\lib\xstream-1.3.1.jar
+set CLASSPATH=%CLASSPATH%;%T3Q_HOME%\lib\commons-cli-1.2.jar
+
+set JAVA="%JAVA_HOME%\bin\java.exe"
+
+if exist "%T3Q_HOME%\..\de.ugoe.cs.swe.trex.core\bin\de" (
+    set CLASSPATH=%CLASSPATH%;%T3Q_HOME%\..\de.ugoe.cs.swe.trex.core\bin
+) else (
+    set CLASSPATH=%CLASSPATH%;%T3Q_HOME%\lib\de.ugoe.cs.swe.trex.core_0.6.0.200810271154.jar
+)
+
+if exist "%T3Q_HOME%\..\org.etsi.common\bin\org" (
+    set CLASSPATH=%CLASSPATH%;%T3Q_HOME%\..\org.etsi.common\bin
+) else (
+    set CLASSPATH=%CLASSPATH%;%T3Q_HOME%\lib\org.etsi.common.jar
+)
+
+if exist "%T3Q_HOME%\bin\org" (
+    set CLASSPATH=%CLASSPATH%;%T3Q_HOME%\bin
+) else (
+    set CLASSPATH=%CLASSPATH%;%T3Q_HOME%\lib\t3q.jar
+)
+
+set JAVA_CMD=%JAVA% -Xmx512m -cp "%CLASSPATH%" org.etsi.t3q.T3Q 
+
+if "%1" == "--echo" (
+	echo %JAVA_CMD%
+) else (
+	%JAVA_CMD% %*
+)
+
Index: /trunk/t3q/templates/AbstractVisitor.st
===================================================================
--- /trunk/t3q/templates/AbstractVisitor.st	(revision 7)
+++ /trunk/t3q/templates/AbstractVisitor.st	(revision 7)
@@ -0,0 +1,118 @@
+//This class has been generated automatically. Do not modify it by hand!
+package org.etsi.t3q.visitor;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.Queue;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.LocationAST;
+import de.ugoe.cs.swe.trex.core.analyzer.rfparser.TTCN3ParserTokenTypes;
+//import de.ugoe.cs.swe.t3simexec.exceptions.TTCN3BehaviorException;
+import org.etsi.t3q.exceptions.TTCN3BehaviorException;
+
+public abstract class AbstractVisitor {
+
+    public int visitedNodeCount;
+
+    $nodeType:VisitMethod(); separator="\n"$
+
+    public ContinueStatus visit(LocationAST node) throws TTCN3BehaviorException {
+        visitedNodeCount++;
+        ContinueStatus continueStatus;
+        switch(node.getType()) {
+            $nodeType:VisitCase(); separator="\n"$
+        }
+        return new ContinueStatus();
+    }
+
+    public abstract void init();
+    public abstract void finish();
+    
+    public void acceptDFS(LocationAST node) throws TTCN3BehaviorException {
+        init();
+        searchASTDepthFirst(node);
+        finish();
+    }
+
+    public void acceptBFS(LocationAST node) throws TTCN3BehaviorException {
+        init();
+        searchASTBreadthFirst(node);
+        finish();
+    }
+
+    protected ContinueStatus searchASTDepthFirst(LocationAST node) throws TTCN3BehaviorException {
+        if (node == null)
+            return ContinueStatus.getInstance(true, true);
+
+        LocationAST next = node;
+        while (next != null) {
+            ContinueStatus continueStatus = visit(next);
+            if (!continueStatus.continueSearch)
+                return ContinueStatus.getInstance(false, false);
+            if (continueStatus.goDeeper)
+                searchASTDepthFirst(next.getFirstChild());
+            next = next.getNextSibling();
+        }
+        return ContinueStatus.getInstance(true, true);
+    }
+
+    protected ContinueStatus searchASTBreadthFirst(LocationAST node) throws TTCN3BehaviorException {
+        if (node == null)
+            return ContinueStatus.getInstance(true, true);
+        
+        Queue<LocationAST> open = new LinkedList<LocationAST>();
+        open.add(node);
+        searchASTBreadthFirst(open);
+        return ContinueStatus.getInstance(true, true);
+    }
+
+    private ContinueStatus searchASTBreadthFirst(Queue<LocationAST> nodes) throws TTCN3BehaviorException {
+        Queue<LocationAST> open = new LinkedList<LocationAST>();
+        Iterator<LocationAST> it = nodes.iterator();
+        while (it.hasNext()) {
+            LocationAST item = it.next();
+            while (item != null) {
+                ContinueStatus continueStatus = visit(item);
+                if (!continueStatus.continueSearch)
+                    return ContinueStatus.getInstance(false, false);
+                if ( (item.getFirstChild() != null) && (continueStatus.goDeeper) )
+                    open.add(item.getFirstChild());
+                item = item.getNextSibling();
+            }
+        }
+        if (open.size() > 0)
+            searchASTBreadthFirst(open);
+        return ContinueStatus.getInstance(true, true);
+    }
+
+    static class ContinueStatus {
+        public boolean continueSearch = true;
+        public boolean goDeeper = true;
+        private static ContinueStatus truetrue = new ContinueStatus(true, true);
+        private static ContinueStatus truefalse = new ContinueStatus(true, false);
+        private static ContinueStatus falsetrue = new ContinueStatus(false, true);
+        private static ContinueStatus falsefalse = new ContinueStatus(false, false);
+
+        private ContinueStatus() {
+            this.continueSearch = true;
+            this.goDeeper = true;
+        }
+
+        private ContinueStatus(boolean continueSearch, boolean goDeeper) {
+            this.continueSearch = continueSearch;
+            this.goDeeper = goDeeper;
+        }
+
+        public static ContinueStatus getInstance(boolean continueSearch, boolean goDeeper) {
+            if (continueSearch && goDeeper) {
+                return truetrue;
+            } else if (!continueSearch && goDeeper) {
+                return falsetrue;
+            } else if (continueSearch && !goDeeper) {
+                return truefalse;
+            } else {
+                return falsefalse;
+            }
+        }
+    }
+    
+
+}
Index: /trunk/t3q/templates/VisitCase.st
===================================================================
--- /trunk/t3q/templates/VisitCase.st	(revision 7)
+++ /trunk/t3q/templates/VisitCase.st	(revision 7)
@@ -0,0 +1,3 @@
+            case TTCN3ParserTokenTypes.$it$:
+                continueStatus=visit$it$(node);
+                return continueStatus;
Index: /trunk/t3q/templates/VisitMethod.st
===================================================================
--- /trunk/t3q/templates/VisitMethod.st	(revision 7)
+++ /trunk/t3q/templates/VisitMethod.st	(revision 7)
@@ -0,0 +1,1 @@
+    public ContinueStatus visit$it$(LocationAST node) throws TTCN3BehaviorException {return ContinueStatus.getInstance(true,true);}
