Bug 73347 NPE in AdvancedQuickAssistProcessor.getInverseConditionProposals
I20040901 + plug-in export, J9 JXE Got this in log several times a day. No steps. !ENTRY org.eclipse.jdt.ui 4 10001 Sep 06, 2004 18:46:20.502 !MESSAGE Internal Error !STACK 0 java.lang.NullPointerException at org.eclipse.jdt.internal.ui.text.correction.AdvancedQuickAssistProcessor.getInverseConditionProposals(Unknown Source) at org.eclipse.jdt.internal.ui.text.correction.AdvancedQuickAssistProcessor.hasAssists(Unknown Source) at org.eclipse.jdt.internal.ui.text.correction.JavaCorrectionProcessor.hasAssists(Unknown Source) at org.eclipse.jdt.internal.ui.text.correction.QuickAssistLightBulbUpdater.calculateLightBulb(Unknown Source) at org.eclipse.jdt.internal.ui.text.correction.QuickAssistLightBulbUpdater.doSelectionChanged(Unknown Source) at org.eclipse.jdt.internal.ui.text.correction.QuickAssistLightBulbUpdater.access$0(Unknown Source) at org.eclipse.jdt.internal.ui.text.correction.QuickAssistLightBulbUpdater$1.selectionChanged(Unknown Source) at org.eclipse.jdt.internal.ui.viewsupport.SelectionListenerWithASTManager$PartListenerGroup.calculateASTandInform(Unknown Source) at org.eclipse.jdt.internal.ui.viewsupport.SelectionListenerWithASTManager$3.run(Unknown Source) at org.eclipse.core.internal.jobs.Worker.run(Unknown Source)
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/AdvancedQuickAssistProcessor.java
if (ifStatement.getElseStatement() != null) {
			return false;
		}
		
		InfixExpression topInfixExpression = infixExpression;
		while ((topInfixExpression.getParent() instanceof InfixExpression)
				&& ((InfixExpression) topInfixExpression.getParent()).getOperator() == andOperator) {
			topInfixExpression = (InfixExpression) topInfixExpression.getParent();
		}
		if (ifStatement.getExpression() != topInfixExpression) {
			return false;
		}
		
		if (resultingCollections == null) {
			return true;
		}
		AST ast = ifStatement.getAST();
		ASTRewrite rewrite = ASTRewrite.create(ast);
		
		Expression leftCondition = null;
		Expression rightCondition = null;
		Expression currentExpression = infixExpression;
		while (true) {
			if (leftCondition == null) {
				Expression leftOperand = ((InfixExpression) currentExpression).getLeftOperand();
				if (leftOperand instanceof ParenthesizedExpression)
					leftOperand = ((ParenthesizedExpression) leftOperand).getExpression();
				Expression leftPlaceholder = (Expression) rewrite.createCopyTarget(leftOperand);
				leftCondition = leftPlaceholder;
			}