Buggy code:
class PackageFragmentRootInfo extends OpenableElementInfo { protected SourceMapper sourceMapper = null ; protected int fRootKind = IPackageFragmentRoot . K_SOURCE ; protected Object [ ] fNonJavaResources ; public PackageFragmentRootInfo ( ) { } static Object [ ] computeFolderNonJavaResources ( IPackageFragmentRoot root , IContainer folder , char [ ] [ ] inclusionPatterns , char [ ] [ ] exclusionPatterns ) throws JavaModelException { IResource [ ] nonJavaResources = new IResource [ 5 ] ; int nonJavaResourcesCounter = 0 ; JavaProject project = ( ( JavaProject ) ( root . getJavaProject ( ) ) ) ; try { IClasspathEntry [ ] classpath = project . getResolvedClasspath ( ) ; IResource [ ] members = folder . members ( ) ; int length = members . length ; if ( length > 0 ) { String sourceLevel = project . getOption ( JavaCore . COMPILER_SOURCE , true ) ; String complianceLevel = project . getOption ( JavaCore . COMPILER_COMPLIANCE , true ) ; nextResource : for ( int i = 0 ; i < length ; i ++ ) { IResource member = members [ i ] ; switch ( member . getType ( ) ) { case IResource . FILE : String fileName = member . getName ( ) ; if ( ( Util . isValidCompilationUnitName ( fileName , sourceLevel , complianceLevel ) ) && ( ! ( Util . isExcluded ( member , inclusionPatterns , exclusionPatterns ) ) ) ) continue nextResource ; if ( Util . isValidClassFileName ( fileName , sourceLevel , complianceLevel ) ) continue nextResource ; if ( ( org . eclipse . jdt . internal . compiler . util . Util . isArchiveFileName ( fileName ) ) && ( PackageFragmentRootInfo . isClasspathEntry ( member . getFullPath ( ) , classpath ) ) ) continue nextResource ; break ; case IResource . FOLDER : if ( ( Util . isValidFolderNameForPackage ( member . getName ( ) , sourceLevel , complianceLevel ) ) && ( ( ! ( Util . isExcluded ( member , inclusionPatterns , exclusionPatterns ) ) ) || ( PackageFragmentRootInfo . isClasspathEntry ( member . getFullPath ( ) , classpath ) ) ) ) continue nextResource ; break ; } if ( ( nonJavaResources . length ) == nonJavaResourcesCounter ) { System . arraycopy ( nonJavaResources , 0 , ( nonJavaResources = new IResource [ nonJavaResourcesCounter * 2 ] ) , 0 , nonJavaResourcesCounter ) ; } nonJavaResources [ ( nonJavaResourcesCounter ++ ) ] = member ; } } <START_BUG> if ( ExternalFoldersManager . isExternal ( folder . getFullPath ( ) ) ) { <END_BUG> IJarEntryResource [ ] jarEntryResources = new IJarEntryResource [ nonJavaResourcesCounter ] ; for ( int i = 0 ; i < nonJavaResourcesCounter ; i ++ ) { jarEntryResources [ i ] = new NonJavaResource ( root , nonJavaResources [ i ] ) ; } return jarEntryResources ; } else if ( ( nonJavaResources . length ) != nonJavaResourcesCounter ) { System . arraycopy ( nonJavaResources , 0 , ( nonJavaResources = new IResource [ nonJavaResourcesCounter ] ) , 0 , nonJavaResourcesCounter ) ; } return nonJavaResources ; } catch ( CoreException e ) { throw new JavaModelException ( e ) ; } } private Object [ ] computeNonJavaResources ( IResource underlyingResource , PackageFragmentRoot handle ) { } synchronized Object [ ] getNonJavaResources ( IJavaProject project , IResource underlyingResource , PackageFragmentRoot handle ) { } public int getRootKind ( ) { } protected SourceMapper getSourceMapper ( ) { } private static boolean isClasspathEntry ( IPath path , IClasspathEntry [ ] resolvedClasspath ) { } void setNonJavaResources ( Object [ ] resources ) { } protected void setRootKind ( int newRootKind ) { } protected void setSourceMapper ( SourceMapper mapper ) { } }

Fix:
if ( ExternalFoldersManager . isInternalPathForExternalFolder ( folder . getFullPath ( ) ) ) {