protected void generatePackageFiles(ClassTree classtree) throws Exception {
        PackageDoc[] packages = configuration.packages;
        if (packages.length > 1) {
            PackageIndexFrameWriter.generate(configuration);
        }
        PackageDoc prev = null, next;
        for(int i = 0; i < packages.length; i++) {
            PackageFrameWriter.generate(configuration, packages[i]);
            next = (i + 1 < packages.length && packages[i+1].name().length() > 0) ?
                packages[i+1] : null;
            //If the next package is unnamed package, skip 2 ahead if possible
            next = (i + 2 < packages.length && next == null) ?
                packages[i+2]: next;
            AbstractBuilder packageSummaryBuilder = configuration.
                getBuilderFactory().getPackageSummaryBuilder(
                packages[i], prev, next);
            packageSummaryBuilder.build();
            if (configuration.createtree) {
                PackageTreeWriter.generate(configuration,
                        packages[i], prev, next,
                        configuration.nodeprecated);
            }
            prev = packages[i];
        }
    }