private Set<Resource> getLibraryProjectResources() {
        final Set<Resource> resources = new HashSet<Resource>();

        // Find the library projects
        final File projectPropertiesFile = new File(mProjectTree.getBaseDirectory(), "project.properties");

        if (!projectPropertiesFile.exists()) {
            return resources;
        }

        List<String> fileLines = new ArrayList<String>();
        try {
            fileLines = FileUtilities.getFileLines(projectPropertiesFile);
        } catch (final IOException e) {
            e.printStackTrace();
        }

        final Pattern libraryProjectPattern = Pattern.compile("^android\\.library\\.reference\\.\\d+=(.*)$", Pattern.CASE_INSENSITIVE);

        final List<String> libraryProjectPaths = new ArrayList<String>();

        for (final String line : fileLines) {
            final Matcher libraryProjectMatcher = libraryProjectPattern.matcher(line);

            if (libraryProjectMatcher.find()) {
                libraryProjectPaths.add(libraryProjectMatcher.group(1));
            }
        }

        // We have the paths to the library projects, now we need their R.java files
        for (final String libraryProjectPath : libraryProjectPaths) {
            final File libraryProjectDirectory = new File(mProjectTree.getBaseDirectory(), libraryProjectPath);

            if (libraryProjectDirectory.exists() && libraryProjectDirectory.isDirectory()) {
                final String libraryProjectPackageName = ProjectTreeOfEclipse.findPackageName(new File(libraryProjectDirectory, "AndroidManifest.xml"));
                final File libraryProjectRJavaFile = ProjectTreeOfEclipse.findRJavaFile(new File(libraryProjectDirectory, "gen"), libraryProjectPackageName);

                // If a project has no resources, it will have no R.java
                if (libraryProjectRJavaFile != null) {
                    try {
                        resources.addAll(getResourceList(libraryProjectRJavaFile));
                    } catch (final IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }

        return resources;
    }