Bug 262022 [FieldAssist] ContentProposalAdapter.recomputeProposals might throw a NPE
When a control using content proposal gets disposed during usage the recomputeProposals() method might throw a NPE. This is caused by getting "allProposals" using a call to getProposals() which is allowed to return null. When using allProposals.length this will crash. I'm not sure if the simple solution if ((allProposals == null) || (allProposals.length == 0) { proposals = new IContentProposal[0]; close(); } else { // cont. will work or if the popup will have problems with a disposed control.
bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/ContentProposalAdapter.java
getShell().addListener(SWT.Close, this);
				
				control.addListener(SWT.MouseDoubleClick, this);
				control.addListener(SWT.MouseDown, this);
				control.addListener(SWT.Dispose, this);
				control.addListener(SWT.FocusOut, this);
				
				Shell controlShell = control.getShell();
				controlShell.addListener(SWT.Move, this);
				controlShell.addListener(SWT.Resize, this);
			}
			
			void removeListeners() {
				if (isValid()) {
					proposalTable.removeListener(SWT.FocusOut, this);
					ScrollBar scrollbar = proposalTable.getVerticalBar();
					if (scrollbar != null) {
						scrollbar.removeListener(SWT.Selection, this);
					}
					getShell().removeListener(SWT.Deactivate, this);
					getShell().removeListener(SWT.Close, this);
				}
				if (control != null && !control.isDisposed()) {
					control.removeListener(SWT.MouseDoubleClick, this);
					control.removeListener(SWT.MouseDown, this);
					control.removeListener(SWT.Dispose, this);
					control.removeListener(SWT.FocusOut, this);
					Shell controlShell = control.getShell();
					controlShell.removeListener(SWT.Move, this);
					controlShell.removeListener(SWT.Resize, this);