Buggy code:
public class HierarchyResolver implements ITypeRequestor { private ReferenceBinding focusType ; private boolean superTypesOnly ; private boolean hasMissingSuperClass ; LookupEnvironment lookupEnvironment ; private CompilerOptions options ; HierarchyBuilder builder ; private ReferenceBinding [ ] typeBindings ; private int typeIndex ; private IGenericType [ ] typeModels ; private static final CompilationUnitDeclaration FakeUnit ; public HierarchyResolver ( INameEnvironment nameEnvironment , Map settings , HierarchyBuilder builder , IProblemFactory problemFactory ) { } public HierarchyResolver ( LookupEnvironment lookupEnvironment , HierarchyBuilder builder ) { } public void accept ( IBinaryType binaryType , PackageBinding packageBinding , AccessRestriction accessRestriction ) { } public void accept ( ICompilationUnit sourceUnit , AccessRestriction accessRestriction ) { } public void accept ( ISourceType [ ] sourceTypes , PackageBinding packageBinding , AccessRestriction accessRestriction ) { } private IType findSuperClass ( IGenericType type , ReferenceBinding typeBinding ) { } private IType [ ] findSuperInterfaces ( IGenericType type , ReferenceBinding typeBinding ) { } private void fixSupertypeBindings ( ) { } private void remember ( IGenericType suppliedType , ReferenceBinding typeBinding ) { } private void remember ( IType type , ReferenceBinding typeBinding ) { } private void rememberAllTypes ( CompilationUnitDeclaration parsedUnit , org . eclipse . jdt . core . ICompilationUnit cu , boolean includeLocalTypes ) { } private void rememberWithMemberTypes ( TypeDeclaration typeDecl , IType typeHandle ) { } private void reportHierarchy ( IType focus , TypeDeclaration focusLocalType , ReferenceBinding binaryTypeBinding ) { } private void reset ( ) { } public void resolve ( IGenericType suppliedType ) { } public void resolve ( Openable [ ] openables , HashSet localTypes , IProgressMonitor monitor ) { } private void setEnvironment ( LookupEnvironment lookupEnvironment , HierarchyBuilder builder ) { } public ReferenceBinding setFocusType ( char [ ] [ ] compoundName ) { if ( ( compoundName == null ) || ( ( this . lookupEnvironment ) == null ) ) return null ; this . focusType = this . lookupEnvironment . getCachedType ( compoundName ) ; if ( ( this . focusType ) == null ) { this . focusType = this . lookupEnvironment . askForType ( compoundName ) ; if ( ( this . focusType ) == null ) { int length = compoundName . length ; char [ ] typeName = compoundName [ ( length - 1 ) ] ; int firstDollar = CharOperation . indexOf ( '$' , typeName ) ; if ( firstDollar != ( - 1 ) ) { compoundName [ ( length - 1 ) ] = CharOperation . subarray ( typeName , 0 , firstDollar ) ; this . focusType = this . lookupEnvironment . askForType ( compoundName ) ; if ( ( this . focusType ) != null ) { char [ ] [ ] memberTypeNames = CharOperation . splitOn ( '$' , typeName , ( firstDollar + 1 ) , typeName . length ) ; for ( int i = 0 ; i < ( memberTypeNames . length ) ; i ++ ) { this . focusType = this . focusType . getMemberType ( memberTypeNames [ i ] ) ; if ( ( this . focusType ) == null ) <START_BUG> return this . focusType ; <END_BUG> } } } } } return this . focusType ; } public boolean subOrSuperOfFocus ( ReferenceBinding typeBinding ) { } private boolean subTypeOfType ( ReferenceBinding subType , ReferenceBinding typeBinding ) { } protected void worked ( IProgressMonitor monitor , int work ) { } }

Fix:
return null ;