ANone issue: https://bugs.eclipse.org/bugs/show_bug.cgi?id=353647
Some other hopefully minor generation issues.
Please note that I've removed some comment generation for inner classes
that I think aren't needed and add space. If I've been too aggressive
feel
free
to
add
some of them back in.
diff --git a/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.sd/srcgen/sdl/SIR/sd/SIR.java b/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.sd/srcgen/sdl/SIR/sd/SIR.java
index fb7e764..6d22bdf 100644
--- a/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.sd/srcgen/sdl/SIR/sd/SIR.java
+++ b/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.sd/srcgen/sdl/SIR/sd/SIR.java
@@ -206,21 +206,7 @@
 		sIRAgentScape
 				.addStatCollector(new org.ascape.util.data.StatCollectorCond(
 						sIRAgentScape.getName() + " Population") {
-
-					/**
-					 * <!-- begin-user-doc -->
-					 * 
-					 * <!-- end-user-doc -->
-					 * @generated
-					 */
 					private static final long serialVersionUID = 1L;
-
-					/**
-					 * <!-- begin-user-doc -->
-					 * 
-					 * <!-- end-user-doc -->
-					 * @generated
-					 */
 					@SuppressWarnings("unused")
 					public final boolean meetsCondition(Object object) {
 						return true;
diff --git a/org.eclipse.amp.amf/plugins/org.eclipse.amp.amf.gen.ascape/src/metaabm/ascape/tmpl/ScapeAspect.xpt b/org.eclipse.amp.amf/plugins/org.eclipse.amp.amf.gen.ascape/src/metaabm/ascape/tmpl/ScapeAspect.xpt
index a1f3486..99e5f62 100644
--- a/org.eclipse.amp.amf/plugins/org.eclipse.amp.amf.gen.ascape/src/metaabm/ascape/tmpl/ScapeAspect.xpt
+++ b/org.eclipse.amp.amf/plugins/org.eclipse.amp.amf.gen.ascape/src/metaabm/ascape/tmpl/ScapeAspect.xpt
@@ -223,10 +223,8 @@
 

 «DEFINE Conditional (List[metaabm::act::AAct] path, Boolean inner) FOR AAct-»

     «IF conditionForAscape()-»

-        Conditional «selector().id()»Condition = new Conditional() {

-        	«EXPAND metaabm::tmpl::Java::GenerateComment»

-            private static final long serialVersionUID = 6846144446402098985L;

-            «EXPAND metaabm::tmpl::Java::GenerateComment»

+       Conditional «selector().id()»Condition = new Conditional() {

+            private static final long serialVersionUID = 1L;

             public boolean meetsCondition(Object «selector().id()»Cell) {

                 «IF findFromHost()-»

                     «selector().id()»Cell = «converted(selector().id() + "Cell")»;

@@ -248,11 +246,11 @@
 

 «DEFINE BeginQuerySingle (List[metaabm::act::AAct] path, Boolean inner) FOR AAct-»

     «IF convert()-»

-    Location «selector().id()»Location = «findAgentStatement(path)»;

+    final Location «selector().id()»Location = «findAgentStatement(path)»;

     if («selector().id()»Location != null) {

-        «selector().typeName()» «selector().id()» = («selector().typeName()») «converted(selector().id() + "Location")»;

+        final «selector().typeName()» «selector().id()» = («selector().typeName()») «converted(selector().id() + "Location")»;

     «ELSE-»

-    «selector().typeName()» «selector().id()» = («selector().typeName()») «findAgentStatement(path)»;

+    final «selector().typeName()» «selector().id()» = («selector().typeName()») «findAgentStatement(path)»;

     «ENDIF-»

     if («selector().id()» «metaType != ANone ? "!=" : "=="» null) {

     «IF expression(path, inner) != "" && hasControl("here") && !selector().isRoot()-»

@@ -260,9 +258,12 @@
     «ENDIF-»

 «ENDDEFINE»

 

+«DEFINE BeginQuerySingle (List[metaabm::act::AAct] path, Boolean inner) FOR ANone-»

+«ENDDEFINE»

+

 «DEFINE BeginQuery (List[metaabm::act::AAct] path, Boolean inner) FOR AAct-»

     «IF findIsList()-»

-    List «selector().id()»List = «findStatement(path)»;

+    final List «selector().id()»List = «findStatement(path)»;

     for(Object next«selector().id().toFirstUpper()» : «selector().id()»List) {

     «ENDIF-»

 	«EXPAND BeginQuerySingle(path, inner)-»

@@ -274,6 +275,9 @@
     }

 «ENDDEFINE»

 

+«DEFINE EndQuerySingle (List[metaabm::act::AAct] path, Boolean inner) FOR ANone-»

+«ENDDEFINE»

+

 «DEFINE BeginSerial(List[AAct] path, Boolean inner) FOR AControl-»

     «IF selector().isRoot() && selector().agent.isHost() && !controlFunctions({"available", "withinBoundaries"}).isEmpty-»

         if («EXPAND metaabm::tmpl::Java::FunctionInnerBlock(path, false) FOREACH controlFunctions({"available", "withinBoundaries"}) SEPARATOR "&&"-») {

@@ -396,7 +400,6 @@
 «DEFINE CreateScape(int stage) FOR IAct-»«ENDDEFINE»

 

 «DEFINE StatBuilderBody(SAttribute outer, String mod) FOR SAttribute-»

-			«EXPAND metaabm::tmpl::Java::GenerateComment»

             public final «statSig()»(Object «parent().id()») {

                 return «mod» «expression((List[AAct]) {}, true)»;

             }

@@ -419,9 +422,7 @@
 	«IF genStats() != "none"-»

 		«IF parent != null-»

         «scape()».addStatCollector(new org.ascape.util.data.StatCollectorCond(«scape()».getName() + " Population") {

-        		«EXPAND metaabm::tmpl::Java::GenerateComment»

 				private static final long serialVersionUID = 1L;

-				«EXPAND metaabm::tmpl::Java::GenerateComment»

                 @SuppressWarnings("unused")

                 public final boolean meetsCondition(Object object) {return true;}

         });

@@ -431,7 +432,6 @@
 «ENDDEFINE»

 «DEFINE StatBuilderBody(SAttribute outer, String mod, String name) FOR SAttribute-»

     «((SAgent) parent()).fieldName()».addStatCollector(new org.ascape.util.data.StatCollector«outer(outer).statCondTerm()»(«name») {

-		«EXPAND metaabm::tmpl::Java::GenerateComment»

 		private static final long serialVersionUID = 1L;

 		«IF outer != this-»

 		«EXPAND StatBuilderBody (outer, mod) FOR outer-»

@@ -467,8 +467,7 @@
 

 «DEFINE ChildBuilder FOR ARule-»

 		«reference.scape()».addRule(new Rule("«label»") {

-			«EXPAND metaabm::tmpl::Java::GenerateComment»

-			private static final long serialVersionUID = 6846144446402098981L;

+			private static final long serialVersionUID = 1L;

 			«EXPAND metaabm::tmpl::Java::GenerateComment»

 			public void execute(Agent a) {

 				((«reference.implementation.qualifiedName») a).«id()»();

@@ -477,7 +476,7 @@
 «ENDDEFINE»

 «DEFINE ChildBuilderProxy FOR ARule-»

 		«reference.fieldName()».addRule(new Rule("«label»") {

-			private static final long serialVersionUID = 6846144446402098981L;

+			private static final long serialVersionUID = 1L;

 			public void execute(Agent a) {

 				((«this.typeName()») a.getScape()).«id()»();

 			}

@@ -490,8 +489,7 @@
 «DEFINE ChildBuilder FOR AInitialize-»

 		«REM»Initialize is automatically invoked by default from framework«ENDREM»

 		«reference.scape()».addInitialRule(new Rule("«label»") {

-			«EXPAND metaabm::tmpl::Java::GenerateComment»

-			private static final long serialVersionUID = 6846144446402098982L;

+			private static final long serialVersionUID = 1L;

 			«EXPAND metaabm::tmpl::Java::GenerateComment»

 			public void execute(Agent a) {

 				((«reference.implementation.qualifiedName») a).«id()»();

diff --git a/org.eclipse.amp.amf/plugins/org.eclipse.amp.amf.gen.escape/src/metaabm/escape/tmpl/EscapeAspect.xpt b/org.eclipse.amp.amf/plugins/org.eclipse.amp.amf.gen.escape/src/metaabm/escape/tmpl/EscapeAspect.xpt
index baa8326..4bf7055 100644
--- a/org.eclipse.amp.amf/plugins/org.eclipse.amp.amf.gen.escape/src/metaabm/escape/tmpl/EscapeAspect.xpt
+++ b/org.eclipse.amp.amf/plugins/org.eclipse.amp.amf.gen.escape/src/metaabm/escape/tmpl/EscapeAspect.xpt
@@ -238,10 +238,8 @@
     final «owner.typeName()» «id()»Scape = new «owner.typeName()»();
     «id()»Scape.setRunner(new NonGraphicRunner());
 	«typeName()» «id()» = new «typeName()»() {
-			«EXPAND metaabm::tmpl::Java::GenerateComment»
             public void requestUpdate() {
             }
-            «EXPAND metaabm::tmpl::Java::GenerateComment»
             public «owner.typeName()» get«owner.typeName()»() {
             	return «id()»Scape;
             }
@@ -249,7 +247,6 @@
     «id()»Scape.add(«id()»);
 	«IF !isHost() && isDiscrete()-»
 	HostCell «id()»Host = new HostCell() {
-			«EXPAND metaabm::tmpl::Java::GenerateComment»
             public void requestUpdate() {
             }
         };
@@ -341,9 +338,7 @@
      * @generated
      */
     public final static DataPoint «dataPoint()» = new DataPointConcrete("«function.id().toFirstUpper()» «inputs.value.get(0).id()»") {
-		«EXPAND metaabm::tmpl::Java::GenerateComment»
-        private static final long serialVersionUID = 3755810443335739012L;
-		«EXPAND metaabm::tmpl::Java::GenerateComment»
+        private static final long serialVersionUID = 3L;
         public double getValue(Object o) {
             «EXPAND metaabm::tmpl::Java::InnerEvaluation(allSources.select(e|e.selected == this.selected), false)-»
             return ((«selected.agent.typeName()») o).«inputs.value.get(0).getterName()»();
diff --git a/org.eclipse.amp.amf/plugins/org.eclipse.amp.amf.gen/src/metaabm/tmpl/Java.xpt b/org.eclipse.amp.amf/plugins/org.eclipse.amp.amf.gen/src/metaabm/tmpl/Java.xpt
index 2787d00..3a3e324 100644
--- a/org.eclipse.amp.amf/plugins/org.eclipse.amp.amf.gen/src/metaabm/tmpl/Java.xpt
+++ b/org.eclipse.amp.amf/plugins/org.eclipse.amp.amf.gen/src/metaabm/tmpl/Java.xpt
@@ -585,9 +585,6 @@
 	«EXPAND BeginSerialBlock (newPath, inner)-»
 	«EXPAND SerialBlock (newPath, inner, true)-»
 	«EXPAND EndSerialBlock (newPath, inner)-»
-	«IF genNegate-»
-	«EXPAND SerialBlock(expansionNegate(newPath), newPath, inner, false)-»
-	«ENDIF-»
 	«ENDLET-»«ENDDEFINE»
 
 «DEFINE BeginBlock(List[AAct] path, Boolean inner) FOR AAct-»
@@ -606,7 +603,14 @@
 «DEFINE EndBlock(List[AAct] path, Boolean inner) FOR AAct-»
     «IF expandSpatialBlock()-»
         «IF queryFor()-»«EXPAND EndQueryBlock(path, inner)-»«ENDIF-»
-    «ENDIF-»«ENDDEFINE»
+    «ENDIF-»
+        «IF !targets.typeSelect(ANone).isEmpty-»else {
+        «FOREACH targets.typeSelect(ANone) AS none-»
+        «EXPAND Block((List[AAct]) path.add(none), inner, true) FOR none-»
+        «ENDFOREACH-»
+        }
+        «ENDIF-»
+«ENDDEFINE»
 «DEFINE EndSerialBlock(List[AAct] path, Boolean inner) FOR AAct-»«ENDDEFINE»
 «DEFINE EndSerialBlock(List[AAct] path, Boolean inner) FOR AControl-»
 	«IF expressIf(path, inner)-»}«ENDIF-»
diff --git a/org.eclipse.amp.amf/plugins/org.eclipse.amp.amf.gen/src/metaabm/tmpl/infer.ext b/org.eclipse.amp.amf/plugins/org.eclipse.amp.amf.gen/src/metaabm/tmpl/infer.ext
index 2c1403c..bd68317 100644
--- a/org.eclipse.amp.amf/plugins/org.eclipse.amp.amf.gen/src/metaabm/tmpl/infer.ext
+++ b/org.eclipse.amp.amf/plugins/org.eclipse.amp.amf.gen/src/metaabm/tmpl/infer.ext
@@ -219,9 +219,15 @@
 cached List[AControl] spatial(Collection[AAct] candidates) :
 	candidates.select(e | e.isSpatialControl());
 
+cached List[AControl] outerConditional(Collection[AAct] candidates) :
+	candidates.select(e | e.isSpatialControl() || e.selected != e.rootSelected);
+	
 cached List[AControl] nonSpatial(List[AAct] candidates) :
 	candidates.select(e | !e.isSpatialControl());
 
+cached List[AControl] innerConditional(List[AAct] candidates) :
+	candidates.select(e | !e.isSpatialControl());
+
 cached List[AControl] logic(List[AAct] candidates) :
 	candidates.typeSelect(ALogic);
 
@@ -251,6 +257,9 @@
 
 cached Boolean expressIf(AAct act, List[AAct] path, Boolean inner) :
 	(act.expression(path, inner) != "") && act.targetStatements().size > 0 && act.controlCompound().spatial().isEmpty;
+    
+cached Boolean expressIf(ANone act, List[AAct] path, Boolean inner) :
+	false;
 
 cached int depth(AAct act, List[AAct] candidates) :
 	candidates.contains(act.sources) ? act.sources.intersect(candidates).collect( a | a.depth(candidates)).sortBy(e | e).last() : 0;
@@ -276,7 +285,7 @@
 
 cached List[AAct] expansionOrder(List[AAct] candidates) :
     candidates.sortBy(a | a.queryOrder(candidates));
-
+    
 cached Boolean expandSpatialBlock(AAct act) : false;
 
 cached Boolean expandSpatialBlock(AControl act) :
@@ -294,26 +303,31 @@
 cached Boolean expand(AControl act, List[AAct] path) :
 	path.contains(act.selected);// && (act.sources.typeSelect(ALogic).size == 0 || act.sources.select(a | a.selected == act.selected || a == act.selected).last() == path.last());
 
+cached Boolean expand(ANone act, List[AAct] path) :
+	false;
+
 cached Boolean expand(ALogic act, List[AAct] path) :
 	path.contains(act.selected) && (act.sources.select(a | a.selected == act.selected || a == act.selected).last() == path.last());
            
 cached Boolean conditionFor(AAct act) :
-    !act.controlCompound().nonSpatial().typeSelect(AQuery).isEmpty;
+    !act.controlCompound().innerConditional().typeSelect(AQuery).isEmpty;
            
 cached Boolean conditionFor(ASelect act) :
-    !act.targets.nonSpatial().typeSelect(AQuery).isEmpty;
+    !act.targets.innerConditional().typeSelect(AQuery).isEmpty;
 
+    	
 cached Boolean queryFor(AAct act) :
     !act.selector().isRoot() || (!act.isRoot() && act.controlCompound().isEmpty);
-    	
+    
 cached List[AAct] expansionSerial(AAct act, List[AAct] path) :
 	act.targets.union(act.targets.controlLeafs().flatten()).typeReject(ANone).select(a | a.expand(path)).toList().expansionOrder();
 
 cached Collection[AAct] typeReject(Collection[AAct] candidates, Object rejectType) :
     candidates.select(e | e.metaType != rejectType);
-
-cached List[AAct] expansionNegate(AAct act, List[AAct] path) :
-	act.targets.typeSelect(AControl).controlCompound().select(a | a.controlTerminal() && a.metaType == ANone && a.expand(path)).toList().expansionOrder();
+    
+//cached List[AAct] expansionNegate(AAct act, List[AAct] path) :
+//	act.targets.union(act.targets.controlLeafs().flatten()).select(a | a.expand(path)).typeSelect(ANone).toList().expansionOrder();
+//	act.targets.typeSelect(AControl).controlCompound().select(a | a.controlTerminal() && a.metaType == ANone && a.expand(path)).toList().expansionOrder();
 
 cached List[AAct] priorSelect(AAct act, ASelect sel) :
 	act.sources.collect(e | (e.selected == sel ? e : e.priorSelect(sel))).flatten();
@@ -328,8 +342,8 @@
 
 //Set of target controls wth no further target controls
 cached List[AControl] controlLeafs(AControl act) :
-	act.targetControls().logic().size == 0 ? {act} : act.targetControls().controlLeafs().flatten();
-
+	act.targetControls().logic().typeReject(ANone).isEmpty ? {act} : act.targetControls().controlLeafs().flatten();
+	
 //Set of target controls wth no further target controls
 cached List[AControl] controlLeafs(AAct act) :
     {};
@@ -379,24 +393,6 @@
 cached List[AControl] targetControls(AAct act) :
 	act.targets.typeSelect(AControl).inSelection(act.selected);
 
-cached List[ANone] nones(AAct act) :
-	act.targets.typeSelect(ANone);
-
-cached List[AAct] nextNegate(AAct act) :
-	act.nones().addAll(act.targets.without(act.nones()).nextNegate()).toSet().toList();
-
-cached List[AAct] nextControls(AAct act) :
-	act.targetControls().select(t | t.targetStatements().size > 0).addAll(act.targetControls().nextControls()).toSet().toList();
-
-cached List[AAct] previousControls(AAct act) :
-	act.sourceControls().select(t | t.sourceStatements().size > 0).addAll(act.sourceControls().previousControls()).toSet().toList();
-	
-cached List[AAct] nextStatements(AAct act) :
-	act.targetStatements().addAll(act.targetControls().nextStatements()).toSet().toList();
-	
-cached List[AControl] previousStatements(AAct act) :
-	act.sourceStatements().addAll(act.controls().flow().previousStatements()).toSet().toList();
-
 cached List[AAct] allActs(SAgent agent) :
 	((AGroup) agent.rootActivity).members;