private Object[] getPackageContents(IPackageFragment fragment) throws JavaScriptModelException {
    ISourceReference[] sourceRefs;
    if (fragment.getKind() == IPackageFragmentRoot.K_SOURCE) {
      sourceRefs = fragment.getJavaScriptUnits();
    } else {
      IClassFile[] classFiles = fragment.getClassFiles();
      List topLevelClassFile = new ArrayList();
      for (int i = 0; i < classFiles.length; i++) {
        IType type = classFiles[i].getType();
        if (type != null
            && type.getDeclaringType() == null
            && !type.isAnonymous()
            && !type.isLocal()) topLevelClassFile.add(classFiles[i]);
      }
      sourceRefs =
          (ISourceReference[])
              topLevelClassFile.toArray(new ISourceReference[topLevelClassFile.size()]);
    }

    Object[] result = new Object[0];
    for (int i = 0; i < sourceRefs.length; i++)
      result = concatenate(result, removeImportAndPackageDeclarations(getChildren(sourceRefs[i])));
    return concatenate(result, fragment.getNonJavaScriptResources());
  }