<s> package org . eclipse . jdt . internal . codeassist . impl ; import java . util . Map ; import org . eclipse . core . runtime . IProgressMonitor ; import org . eclipse . jdt . core . IAnnotation ; import org . eclipse . jdt . core . IType ; import org . eclipse . jdt . core . ITypeParameter ; import org . eclipse . jdt . core . JavaModelException ; import org . eclipse . jdt . internal . compiler . lookup . Binding ; import org . eclipse . jdt . internal . core . JavaElement ; import org . eclipse . jdt . internal . core . ResolvedSourceMethod ; public class AssistSourceMethod extends ResolvedSourceMethod { private Map bindingCache ; private Map infoCache ; private String uniqueKey ; private boolean isResolved ; public AssistSourceMethod ( JavaElement parent , String name , String [ ] parameterTypes , Map bindingCache , Map infoCache ) { super ( parent , name , parameterTypes , null ) ; this . bindingCache = bindingCache ; this . infoCache = infoCache ; } public Object getElementInfo ( IProgressMonitor monitor ) throws JavaModelException { return this . infoCache . get ( this ) ; } public String getKey ( ) { if ( this . uniqueKey == null ) { Binding binding = ( Binding ) this . bindingCache . get ( this ) ; if ( binding != null ) { this . isResolved = true ; this . uniqueKey = new String ( binding . computeUniqueKey ( ) ) ; } else { this . isResolved = false ; try { this . uniqueKey = getKey ( this , false ) ; } catch ( JavaModelException e ) { return null ; } } } return this . uniqueKey ; } public boolean isResolved ( ) { getKey ( ) ; return this . isResolved ; } protected void toStringInfo ( int tab , StringBuffer buffer , Object info , boolean showResolvedInfo ) { super . toStringInfo ( tab , buffer , info , showResolvedInfo && isResolved ( ) ) ; } public IAnnotation getAnnotation ( String annotationName ) { return new AssistAnnotation ( this , annotationName , this . infoCache ) ; } public IType getType ( String typeName , int count ) { AssistSourceType type = new AssistSourceType ( this , typeName , this . bindingCache , this . infoCache ) ; type . occurrenceCount = count ; return type ; } public ITypeParameter getTypeParameter ( String typeParameterName ) { return new AssistTypeParameter ( this , typeParameterName , this . infoCache ) ; } } </s>