<s> package org . eclipse . jdt . internal . compiler . lookup ; import org . eclipse . jdt . internal . compiler . ast . ASTNode ; import org . eclipse . jdt . internal . compiler . classfmt . ClassFileConstants ; import org . eclipse . jdt . internal . compiler . impl . Constant ; public abstract class VariableBinding extends Binding { public int modifiers ; public TypeBinding type ; public char [ ] name ; protected Constant constant ; public int id ; public long tagBits ; public VariableBinding ( char [ ] name , TypeBinding type , int modifiers , Constant constant ) { this . name = name ; this . type = type ; this . modifiers = modifiers ; this . constant = constant ; if ( type != null ) { this . tagBits |= ( type . tagBits & TagBits . HasMissingType ) ; } } public Constant constant ( ) { return this . constant ; } public abstract AnnotationBinding [ ] getAnnotations ( ) ; public final boolean isBlankFinal ( ) { return ( this . modifiers & ExtraCompilerModifiers . AccBlankFinal ) != 0 ; } public final boolean isFinal ( ) { return ( this . modifiers & ClassFileConstants . AccFinal ) != 0 ; } public final boolean isEffectivelyFinal ( ) { return ( this . tagBits & TagBits . IsEffectivelyFinal ) != 0 ; } public char [ ] readableName ( ) { return this . name ; } public void setConstant ( Constant constant ) { this . constant = constant ; } public String toString ( ) { StringBuffer output = new StringBuffer ( 10 ) ; ASTNode . printModifiers ( this . modifiers , output ) ; if ( ( this . modifiers & ExtraCompilerModifiers . AccUnresolved ) != 0 ) { output . append ( "" ) ; } output . append ( this . type != null ? this . type . debugName ( ) : "<no type>" ) ; output . append ( " " ) ; output . append ( ( this . name != null ) ? new String ( this . name ) : "<no name>" ) ; return output . toString ( ) ; } } </s>