<s> package org . eclipse . jdt . internal . core . search . matching ; import org . eclipse . core . runtime . IPath ; import org . eclipse . core . runtime . IProgressMonitor ; import org . eclipse . core . runtime . OperationCanceledException ; import org . eclipse . jdt . core . * ; import org . eclipse . jdt . core . search . * ; import org . eclipse . jdt . internal . compiler . env . AccessRuleSet ; import org . eclipse . jdt . internal . compiler . util . SuffixConstants ; import org . eclipse . jdt . internal . core . LocalVariable ; import org . eclipse . jdt . internal . core . index . Index ; import org . eclipse . jdt . internal . core . search . IndexQueryRequestor ; import org . eclipse . jdt . internal . core . search . JavaSearchScope ; import org . eclipse . jdt . internal . core . util . Util ; public class LocalVariablePattern extends VariablePattern { LocalVariable localVariable ; public LocalVariablePattern ( LocalVariable localVariable , int limitTo , int matchRule ) { super ( LOCAL_VAR_PATTERN , localVariable . getElementName ( ) . toCharArray ( ) , limitTo , matchRule ) ; this . localVariable = localVariable ; } public void findIndexMatches ( Index index , IndexQueryRequestor requestor , SearchParticipant participant , IJavaSearchScope scope , IProgressMonitor progressMonitor ) { IPackageFragmentRoot root = ( IPackageFragmentRoot ) this . localVariable . getAncestor ( IJavaElement . PACKAGE_FRAGMENT_ROOT ) ; String documentPath ; String relativePath ; if ( root . isArchive ( ) ) { IType type = ( IType ) this . localVariable . getAncestor ( IJavaElement . TYPE ) ; relativePath = ( type . getFullyQualifiedName ( '$' ) ) . replace ( '.' , '/' ) + SuffixConstants . SUFFIX_STRING_class ; documentPath = root . getPath ( ) + IJavaSearchScope . JAR_FILE_ENTRY_SEPARATOR + relativePath ; } else { IPath path = this . localVariable . getPath ( ) ; documentPath = path . toString ( ) ; relativePath = Util . relativePath ( path , 1 ) ; } if ( scope instanceof JavaSearchScope ) { JavaSearchScope javaSearchScope = ( JavaSearchScope ) scope ; AccessRuleSet access = javaSearchScope . getAccessRuleSet ( relativePath , index . containerPath ) ; if ( access != JavaSearchScope . NOT_ENCLOSED ) { if ( ! requestor . acceptIndexMatch ( documentPath , this , participant , access ) ) throw new OperationCanceledException ( ) ; } } else if ( scope . encloses ( documentPath ) ) { if ( ! requestor . acceptIndexMatch ( documentPath , this , participant , null ) ) throw new OperationCanceledException ( ) ; } } protected StringBuffer print ( StringBuffer output ) { if ( this . findDeclarations ) { output . append ( this . findReferences ? "" : "" ) ; } else { output . append ( "" ) ; } output . append ( this . localVariable . toStringWithAncestors ( ) ) ; return super . print ( output ) ; } } </s>