Buggy code:
public class Constructor extends Member implements IConstructor { protected IClass theClass ; protected IParameter [ ] parameters = new MethodParameter [ 3 ] ; protected int parameterCount ; protected IType [ ] exceptions ; protected int exceptionCount ; protected IValue value ; public Constructor ( IClass iclass ) { } public Constructor ( IClass iclass , int modifiers ) { } public Constructor ( ICodePosition position , IClass iclass , int modifiers ) { } @ Override public void setTheClass ( IClass iclass ) { } @ Override public IClass getTheClass ( ) { } @ Override public void setVarargs ( ) { } @ Override public boolean isVarargs ( ) { } @ Override public void setParameters ( IParameter [ ] parameters , int parameterCount ) { } @ Override public int parameterCount ( ) { } @ Override public void setParameter ( int index , IParameter param ) { } @ Override public void addParameter ( IParameter param ) { } @ Override public IParameter getParameter ( int index ) { } @ Override public IParameter [ ] getParameters ( ) { } @ Override public boolean addRawAnnotation ( String type , IAnnotation annotation ) { } @ Override public ElementType getElementType ( ) { } @ Override public int exceptionCount ( ) { } @ Override public void setException ( int index , IType exception ) { } @ Override public void addException ( IType exception ) { } @ Override public IType getException ( int index ) { } @ Override public void setValue ( IValue statement ) { } @ Override public IValue getValue ( ) { } @ Override public void resolveTypes ( MarkerList markers , IContext context ) { } @ Override public void resolve ( MarkerList markers , IContext context ) { } private void resolveSuperConstructors ( MarkerList markers , IContext context ) { } @ Override public void checkTypes ( MarkerList markers , IContext context ) { } @ Override public void check ( MarkerList markers , IContext context ) { } @ Override public void foldConstants ( ) { } @ Override public void cleanup ( IContext context , IClassCompilableList compilableList ) { } @ Override public boolean isStatic ( ) { } @ Override public IDyvilHeader getHeader ( ) { } @ Override public IClass getThisClass ( ) { } @ Override public Package resolvePackage ( Name name ) { } @ Override public IClass resolveClass ( Name name ) { } @ Override public IType resolveType ( Name name ) { } @ Override public ITypeVariable resolveTypeVariable ( Name name ) { } @ Override public IDataMember resolveField ( Name name ) { } @ Override public void getMethodMatches ( List < MethodMatch > list , IValue instance , Name name , IArguments arguments ) { } @ Override public void getConstructorMatches ( List < ConstructorMatch > list , IArguments arguments ) { } @ Override public boolean handleException ( IType type ) { } @ Override public IAccessible getAccessibleThis ( IClass type ) { } @ Override public boolean isMember ( IVariable variable ) { } @ Override public IDataMember capture ( IVariable variable ) { } @ Override public float getSignatureMatch ( IArguments arguments ) { } @ Override public IType checkGenericType ( MarkerList markers , ICodePosition position , IContext context , IType type , IArguments arguments ) { } @ Override public void checkArguments ( MarkerList markers , ICodePosition position , IContext context , IType type , IArguments arguments ) { } @ Override public void checkCall ( MarkerList markers , ICodePosition position , IContext context , IArguments arguments ) { if ( ( ( this . modifiers ) & ( Modifiers . DEPRECATED ) ) != 0 ) { markers . add ( I18n . createMarker ( position , "constructor.access.deprecated" , this . theClass . getName ( ) ) ) ; } <START_BUG> switch ( context . getThisClass ( ) . getVisibility ( this ) ) { <END_BUG> case IContext . INTERNAL : markers . add ( I18n . createMarker ( position , "constructor.access.internal" , this . theClass . getName ( ) ) ) ; break ; case IContext . INVISIBLE : markers . add ( I18n . createMarker ( position , "constructor.access.invisible" , this . theClass . getName ( ) ) ) ; break ; } for ( int i = 0 ; i < ( this . exceptionCount ) ; i ++ ) { IType type = this . exceptions [ i ] ; if ( ( ! ( RUNTIME_EXCEPTION . isSuperTypeOf ( type ) ) ) && ( ! ( context . handleException ( type ) ) ) ) { markers . add ( I18n . createMarker ( position , "method.access.exception" , type . toString ( ) ) ) ; } } } @ Override public String getDescriptor ( ) { } @ Override public String getSignature ( ) { } @ Override public String [ ] getExceptions ( ) { } @ Override public void write ( ClassWriter writer ) throws BytecodeException { } @ Override public void write ( ClassWriter writer , IValue instanceFields ) throws BytecodeException { } @ Override public void writeCall ( MethodWriter writer , IArguments arguments , IType type , int lineNumber ) throws BytecodeException { } @ Override public void writeInvoke ( MethodWriter writer , int lineNumber ) throws BytecodeException { } @ Override public void writeArguments ( MethodWriter writer , IArguments arguments ) throws BytecodeException { } @ Override public void writeSignature ( DataOutput out ) throws IOException { } @ Override public void write ( DataOutput out ) throws IOException { } @ Override public void readSignature ( DataInput in ) throws IOException { } @ Override public void read ( DataInput in ) throws IOException { } @ Override public void toString ( String prefix , StringBuilder buffer ) { } }

Fix:
switch ( IContext . getVisibility ( context , this ) ) {