Bug 560657 - Lowering doesn't work for ConditionalExpression

- short cuts to avoid unnecessary computation for genetated AST
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ConditionalExpression.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ConditionalExpression.java
index 1210f0a..513ca65 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ConditionalExpression.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ConditionalExpression.java
@@ -789,7 +789,14 @@
 		// clause around generic method's return type prior to instantiation needs double check. 
 		return this.isPolyExpression = true;
 	}
-	
+
+//{ObjectTeams:
+	@Override
+	public boolean isGenerated() {
+		return this.valueIfTrue.isGenerated() || this.valueIfFalse.isGenerated();
+	}
+// SH}
+
 	@Override
 	public boolean isCompatibleWith(TypeBinding left, Scope scope) {
 		return isPolyExpression() ? this.valueIfTrue.isCompatibleWith(left, scope) && this.valueIfFalse.isCompatibleWith(left, scope) :
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/lifting/Lowering.java b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/lifting/Lowering.java
index 6e8d662..2a40af4 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/lifting/Lowering.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/lifting/Lowering.java
@@ -243,6 +243,11 @@
 		}
 
 		@Override
+		public boolean isGenerated() {
+			return true;
+		}
+
+		@Override
 		public DecapsulationState getBaseclassDecapsulation() {
 			return DecapsulationState.REPORTED;
 		}
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/util/AstGenerator.java b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/util/AstGenerator.java
index 4b186b2..6f8f59b 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/util/AstGenerator.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/util/AstGenerator.java
@@ -304,6 +304,7 @@
 	public NullLiteral nullLiteral() {
 		NullLiteral result = new NullLiteral(this.sourceStart, this.sourceEnd);
 		result.constant = Constant.NotAConstant;
+		result.resolvedType = TypeBinding.NULL;
 		return result;
 	}
 	public Expression nullCheck(Expression value) {