<s> package org . eclipse . jdt . internal . codeassist . select ; import org . eclipse . jdt . internal . compiler . ast . SingleNameReference ; import org . eclipse . jdt . internal . compiler . lookup . Binding ; import org . eclipse . jdt . internal . compiler . lookup . BlockScope ; import org . eclipse . jdt . internal . compiler . lookup . FieldBinding ; import org . eclipse . jdt . internal . compiler . lookup . MissingTypeBinding ; import org . eclipse . jdt . internal . compiler . lookup . ProblemFieldBinding ; import org . eclipse . jdt . internal . compiler . lookup . ProblemReasons ; import org . eclipse . jdt . internal . compiler . lookup . ProblemReferenceBinding ; import org . eclipse . jdt . internal . compiler . lookup . TypeBinding ; public class SelectionOnSingleNameReference extends SingleNameReference { public SelectionOnSingleNameReference ( char [ ] source , long pos ) { super ( source , pos ) ; } public TypeBinding resolveType ( BlockScope scope ) { if ( this . actualReceiverType != null ) { this . binding = scope . getField ( this . actualReceiverType , this . token , this ) ; if ( this . binding != null && this . binding . isValidBinding ( ) ) { throw new SelectionNodeFound ( this . binding ) ; } } this . binding = scope . getBinding ( this . token , Binding . VARIABLE | Binding . TYPE | Binding . PACKAGE , this , true ) ; if ( ! this . binding . isValidBinding ( ) ) { if ( this . binding instanceof ProblemFieldBinding ) { if ( this . binding . problemId ( ) == ProblemReasons . NotVisible || this . binding . problemId ( ) == ProblemReasons . InheritedNameHidesEnclosingName || this . binding . problemId ( ) == ProblemReasons . NonStaticReferenceInConstructorInvocation || this . binding . problemId ( ) == ProblemReasons . NonStaticReferenceInStaticContext ) { throw new SelectionNodeFound ( this . binding ) ; } scope . problemReporter ( ) . invalidField ( this , ( FieldBinding ) this . binding ) ; } else if ( this . binding instanceof ProblemReferenceBinding || this . binding instanceof MissingTypeBinding ) { if ( this . binding . problemId ( ) == ProblemReasons . NotVisible ) { throw new SelectionNodeFound ( this . binding ) ; } scope . problemReporter ( ) . invalidType ( this , ( TypeBinding ) this . binding ) ; } else { scope . problemReporter ( ) . unresolvableReference ( this , this . binding ) ; } throw new SelectionNodeFound ( ) ; } throw new SelectionNodeFound ( this . binding ) ; } public StringBuffer printExpression ( int indent , StringBuffer output ) { output . append ( "" ) ; return super . printExpression ( 0 , output ) . append ( '>' ) ; } } </s>