Buggy code:
public class SourceMapper extends ReferenceInfoAdapter implements ISourceElementRequestor { protected BinaryType fType ; protected IPath fZipPath ; protected String fRootPath ; protected JavaModel fJavaModel ; protected static String [ ] fgEmptyStringArray = new String [ 0 ] ; protected Hashtable fSourceRanges ; protected static SourceRange fgUnknownRange = new SourceRange ( ( - 1 ) , 0 ) ; protected int [ ] fMemberDeclarationStart ; protected SourceRange [ ] fMemberNameRange ; protected String [ ] fMemberName ; protected char [ ] [ ] [ ] fMethodParameterTypes ; protected IJavaElement searchedElement ; private Hashtable importsTable ; private Hashtable importsCounterTable ; IType [ ] types ; int [ ] typeDeclarationStarts ; SourceRange [ ] typeNameRanges ; int typeDepth ; int anonymousCounter ; int anonymousClassName ; public SourceMapper ( IPath zipPath , String rootPath , JavaModel model ) { } public void acceptImport ( int declarationStart , int declarationEnd , char [ ] name , boolean onDemand ) { } public void acceptLineSeparatorPositions ( int [ ] positions ) { } public void acceptPackage ( int declarationStart , int declarationEnd , char [ ] name ) { } public void acceptProblem ( IProblem problem ) { } public void close ( ) throws JavaModelException { } private String [ ] convertTypeNamesToSigs ( char [ ] [ ] typeNames ) { if ( typeNames == null ) return SourceMapper . fgEmptyStringArray ; int n = typeNames . length ; if ( n == 0 ) return SourceMapper . fgEmptyStringArray ; String [ ] typeSigs = new String [ n ] ; for ( int i = 0 ; i < n ; ++ i ) { String typeSig = Signature . createTypeSignature ( typeNames [ i ] , false ) ; int lastIndex = typeSig . lastIndexOf ( '.' ) ; if ( lastIndex == ( - 1 ) ) { typeSigs [ i ] = typeSig ; } else { <START_BUG> typeSigs [ i ] = ( "" + ( Signature . C_UNRESOLVED ) ) + ( typeSig . substring ( ( lastIndex + 1 ) , typeSig . length ( ) ) ) ; <END_BUG> } } return typeSigs ; } public void enterClass ( int declarationStart , int modifiers , char [ ] name , int nameSourceStart , int nameSourceEnd , char [ ] superclass , char [ ] [ ] superinterfaces ) { } public void enterCompilationUnit ( ) { } public void enterConstructor ( int declarationStart , int modifiers , char [ ] name , int nameSourceStart , int nameSourceEnd , char [ ] [ ] parameterTypes , char [ ] [ ] parameterNames , char [ ] [ ] exceptionTypes ) { } public void enterField ( int declarationStart , int modifiers , char [ ] type , char [ ] name , int nameSourceStart , int nameSourceEnd ) { } public void enterInitializer ( int declarationSourceStart , int modifiers ) { } public void enterInterface ( int declarationStart , int modifiers , char [ ] name , int nameSourceStart , int nameSourceEnd , char [ ] [ ] superinterfaces ) { } public void enterMethod ( int declarationStart , int modifiers , char [ ] returnType , char [ ] name , int nameSourceStart , int nameSourceEnd , char [ ] [ ] parameterTypes , char [ ] [ ] parameterNames , char [ ] [ ] exceptionTypes ) { } public void exitClass ( int declarationEnd ) { } public void exitCompilationUnit ( int declarationEnd ) { } public void exitConstructor ( int declarationEnd ) { } public void exitField ( int declarationEnd ) { } public void exitInitializer ( int declarationEnd ) { } public void exitInterface ( int declarationEnd ) { } public void exitMethod ( int declarationEnd ) { } public char [ ] findSource ( IType type ) { } public char [ ] findSource ( IType type , IBinaryType info ) { } public SourceRange getNameRange ( IJavaElement element ) { } public SourceRange getSourceRange ( IJavaElement element ) { } protected IType getType ( String typeName ) { } protected IJavaElement getUnqualifiedMethodHandle ( IMethod method ) { } public ZipFile getZip ( ) throws CoreException { } public void mapSource ( IType type , char [ ] contents ) { } public ISourceRange mapSource ( IType type , char [ ] contents , IJavaElement searchedElement ) { } protected void setSourceRange ( IJavaElement element , SourceRange sourceRange , SourceRange nameRange ) { } public char [ ] [ ] getImports ( BinaryType type ) { } }

Fix:
typeSigs [ i ] = ( Signature . C_UNRESOLVED ) + ( typeSig . substring ( ( lastIndex + 1 ) , typeSig . length ( ) ) ) ;