Made getContextForNewTemplate() synchronized
diff --git a/plugins/org.eclipse.epsilon.egl.engine/src/org/eclipse/epsilon/egl/EglTemplateFactory.java b/plugins/org.eclipse.epsilon.egl.engine/src/org/eclipse/epsilon/egl/EglTemplateFactory.java
index 9b4a1f8..c81188a 100644
--- a/plugins/org.eclipse.epsilon.egl.engine/src/org/eclipse/epsilon/egl/EglTemplateFactory.java
+++ b/plugins/org.eclipse.epsilon.egl.engine/src/org/eclipse/epsilon/egl/EglTemplateFactory.java
@@ -266,7 +266,7 @@
 	 * @return An appropriate context to be used for a new EglTemplate instance.

 	 * @since 1.6

 	 */

-	protected IEglContext getContextForNewTemplate() {

+	protected synchronized IEglContext getContextForNewTemplate() {

 		if (delegate == null) return getContext();

 		EglContext tc = new EglContext(getContext());

 		tc.setOperationContributorRegistry(delegate.getOperationContributorRegistry());

diff --git a/plugins/org.eclipse.epsilon.egl.engine/src/org/eclipse/epsilon/egl/concurrent/EgxModuleParallel.java b/plugins/org.eclipse.epsilon.egl.engine/src/org/eclipse/epsilon/egl/concurrent/EgxModuleParallel.java
index 0b6f8c8..e6f78ff 100644
--- a/plugins/org.eclipse.epsilon.egl.engine/src/org/eclipse/epsilon/egl/concurrent/EgxModuleParallel.java
+++ b/plugins/org.eclipse.epsilon.egl.engine/src/org/eclipse/epsilon/egl/concurrent/EgxModuleParallel.java
@@ -37,7 +37,9 @@
 	
 	public EgxModuleParallel(String outputRoot) throws EglRuntimeException {
 		this();
-		setFileGeneratingTemplateFactory(outputRoot);
+		if (outputRoot != null) {
+			setFileGeneratingTemplateFactory(outputRoot);
+		}
 	}
 
 	public EgxModuleParallel(IEgxContextParallel context) {
diff --git a/plugins/org.eclipse.epsilon.egl.engine/src/org/eclipse/epsilon/egl/execute/context/concurrent/EgxContextParallel.java b/plugins/org.eclipse.epsilon.egl.engine/src/org/eclipse/epsilon/egl/execute/context/concurrent/EgxContextParallel.java
index 7b18650..736f719 100644
--- a/plugins/org.eclipse.epsilon.egl.engine/src/org/eclipse/epsilon/egl/execute/context/concurrent/EgxContextParallel.java
+++ b/plugins/org.eclipse.epsilon.egl.engine/src/org/eclipse/epsilon/egl/execute/context/concurrent/EgxContextParallel.java
@@ -47,7 +47,7 @@
 	
 	public EgxContextParallel(EglTemplateFactory templateFactory, int parallelism) {
 		super(parallelism);
-		setTemplateFactory(templateFactory != null ? templateFactory : (templateFactory = new EglTemplateFactory()));
+		setTemplateFactory(templateFactory != null ? templateFactory : new EglTemplateFactory());
 		invokedTemplates = ConcurrencyUtils.concurrentOrderedCollection();
 	}
 
diff --git a/plugins/org.eclipse.epsilon.eol.engine/src/org/eclipse/epsilon/eol/dom/ForStatement.java b/plugins/org.eclipse.epsilon.eol.engine/src/org/eclipse/epsilon/eol/dom/ForStatement.java
index 94b0677..8d0b278 100644
--- a/plugins/org.eclipse.epsilon.eol.engine/src/org/eclipse/epsilon/eol/dom/ForStatement.java
+++ b/plugins/org.eclipse.epsilon.eol.engine/src/org/eclipse/epsilon/eol/dom/ForStatement.java
@@ -73,7 +73,7 @@
 			iteratedCol.addAll(((EolModelElementType) iteratedObject).all());
 		}
 		else if (iteratedObject instanceof Iterator) {
-			it = (Iterator) iteratedObject;
+			it = (Iterator<?>) iteratedObject;
 		}
 		else {
 			iteratedCol = CollectionUtil.createDefaultList();
@@ -85,10 +85,9 @@
 
 		boolean loopBroken = false;
 		
-		int loop = 1;
 		FrameStack frameStack = context.getFrameStack();
 		
-		while (it.hasNext() && !loopBroken) {
+		for (int loop = 1; it.hasNext() && !loopBroken;) {
 			Object next = it.next();
 			
 			if (!iteratorType.isKind(next)) continue;