protected void computeFolderChildren(File folder,boolean isIncluded,String[] pkgName,ArrayList vChildren,char[][] inclusionPatterns,char[][] exclusionPatterns) throws JavaModelException {
  if (isIncluded) {
    IPackageFragment pkg=getPackageFragment(pkgName);
    vChildren.add(pkg);
  }
  try {
    File[] members=folder.listFiles();
    boolean hasIncluded=isIncluded;
    int length=members.length;
    if (length > 0) {
      JavaProject javaProject=(JavaProject)getJavaProject();
      String sourceLevel=javaProject.getOption(JavaCore.COMPILER_SOURCE,true);
      String complianceLevel=javaProject.getOption(JavaCore.COMPILER_COMPLIANCE,true);
      for (int i=0; i < length; i++) {
        File member=members[i];
        String memberName=member.getName();
        if (member.isDirectory()) {
          if (Util.isValidFolderNameForPackage(memberName,sourceLevel,complianceLevel)) {
            String[] newNames=Util.arrayConcat(pkgName,manager.intern(memberName));
            boolean isMemberIncluded=false;
            computeFolderChildren(member,isMemberIncluded,newNames,vChildren,inclusionPatterns,exclusionPatterns);
          }
        }
 else {
          if (!hasIncluded && Util.isValidCompilationUnitName(memberName,sourceLevel,complianceLevel)) {
            hasIncluded=true;
            IPackageFragment pkg=getPackageFragment(pkgName);
            vChildren.add(pkg);
          }
        }
      }
    }
  }
 catch (  IllegalArgumentException e) {
    throw new JavaModelException(e,IJavaModelStatusConstants.ELEMENT_DOES_NOT_EXIST);
  }
catch (  CoreException e) {
    throw new JavaModelException(e);
  }
}

protected void computeFolderChildren ( File folder , boolean isIncluded , String [ ] pkgName , ArrayList vChildren , char [ ] [ ] inclusionPatterns , char [ ] [ ] exclusionPatterns ) throws JavaModelException { if ( isIncluded ) { IPackageFragment pkg = getPackageFragment ( pkgName ) ; vChildren . add ( pkg ) ; } try { File [ ] members = folder . listFiles ( ) ; boolean hasIncluded = isIncluded ; int length = members . length ; if ( length > 0 ) { JavaProject javaProject = ( JavaProject ) getJavaProject ( ) ; String sourceLevel = javaProject . getOption ( JavaCore . COMPILER_SOURCE , true ) ; String complianceLevel = javaProject . getOption ( JavaCore . COMPILER_COMPLIANCE , true ) ; for ( int i = 0 ; i < length ; i ++ ) { File member = members [ i ] ; String memberName = member . getName ( ) ; if ( member . isDirectory ( ) ) { if ( Util . isValidFolderNameForPackage ( memberName , sourceLevel , complianceLevel ) ) { String [ ] newNames = Util . arrayConcat ( pkgName , manager . intern ( memberName ) ) ; boolean isMemberIncluded = false ; computeFolderChildren ( member , isMemberIncluded , newNames , vChildren , inclusionPatterns , exclusionPatterns ) ; } } else { if ( ! hasIncluded && Util . isValidCompilationUnitName ( memberName , sourceLevel , complianceLevel ) ) { hasIncluded = true ; IPackageFragment pkg = getPackageFragment ( pkgName ) ; vChildren . add ( pkg ) ; } } } } } catch ( IllegalArgumentException e ) { throw new JavaModelException ( e , IJavaModelStatusConstants . ELEMENT_DOES_NOT_EXIST ) ; } catch ( CoreException e ) { throw new JavaModelException ( e ) ; } }
starting at this folder , create package fragments and add the fragments that are not exclused to the collection of children .
