Bug 38237 [api] Code Assist images
Code Assist proposals are reflected as an Image and Text. The images that are used in the JDT proposals are generated by org.eclipse.jdt.internal.ui.text.java.ResultCollector. Though it makes use of the JavaElementImageProvider.getFieldImageDescriptor() to get the proper image for a particular IJavaElement, it does perform additional consideration for elements like static, deprecated, Local variable etc. We are interested to contribute to code assist by way of reusing the images (and semantics) that are in use by the (internal) ResultCollector.
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/viewsupport/JavaElementImageProvider.java
if (element.getElementType() == IJavaElement.METHOD && ((IMethod)element).isConstructor())
					flags |= JavaElementImageDescriptor.CONSTRUCTOR;
					
				int modifiers= member.getFlags();
				if (Flags.isAbstract(modifiers) && confirmAbstract(member))
					flags |= JavaElementImageDescriptor.ABSTRACT;
				if (Flags.isFinal(modifiers) || isInterfaceField(member))
					flags |= JavaElementImageDescriptor.FINAL;
				if (Flags.isSynchronized(modifiers) && confirmSynchronized(member))
					flags |= JavaElementImageDescriptor.SYNCHRONIZED;
				if (Flags.isStatic(modifiers) || isInterfaceField(member))
					flags |= JavaElementImageDescriptor.STATIC;
				
				if (member.getElementType() == IJavaElement.TYPE) {
					if (JavaModelUtil.hasMainMethod((IType) member)) {
						flags |= JavaElementImageDescriptor.RUNNABLE;
					}
				}
			} catch (JavaModelException e) {
				
			}
		}
		return flags;
	}
		
	private static boolean confirmAbstract(IMember element) throws JavaModelException {
		
		if (element.getElementType() == IJavaElement.TYPE) {
			return ((IType) element).isClass();
		}