Backported fix for bug 200456.
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/AbstractJavaCompletionProposal.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/AbstractJavaCompletionProposal.java
index f90921b..a879113 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/AbstractJavaCompletionProposal.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/AbstractJavaCompletionProposal.java
@@ -312,7 +312,7 @@
 	public void apply(IDocument document, char trigger, int offset) {
 		
 		if (isSupportingRequiredProposals()) {
-			CompletionProposal coreProposal= ((MemberProposalInfo)fProposalInfo).fProposal;
+			CompletionProposal coreProposal= ((MemberProposalInfo)getProposalInfo()).fProposal;
 			CompletionProposal[] requiredProposals= coreProposal.getRequiredProposals();
 			for (int i= 0; requiredProposals != null &&  i < requiredProposals.length; i++) {
 				int oldLen= document.getLength();
@@ -817,7 +817,6 @@
 	}
 	
 	private IJavaProject getProject() {
-		// TODO Auto-generated method stub
 		return null;
 	}
 
@@ -1033,10 +1032,14 @@
 	 * @since 3.3
 	 */
 	protected boolean isSupportingRequiredProposals() {
-		if (fInvocationContext == null || !(fProposalInfo instanceof MemberProposalInfo))
+		if (fInvocationContext == null)
 			return false;
 		
-		CompletionProposal proposal= ((MemberProposalInfo)fProposalInfo).fProposal;
+		ProposalInfo proposalInfo= getProposalInfo();
+		if (!(proposalInfo instanceof MemberProposalInfo))
+			return false;
+		
+		CompletionProposal proposal= ((MemberProposalInfo)proposalInfo).fProposal;
 		return proposal != null && (proposal.getKind() == CompletionProposal.METHOD_REF || proposal.getKind() == CompletionProposal.FIELD_REF);
 	}