private void AddFolder(string fullPath, Dictionary <string, bool> projectFiles = null)
        {
            List <string> filesAndEmptyFolders =
                FolderUtility.GetFilesAndEmptyFoldersRecursively(fullPath, "*.*", _rsprojPathExclusion).ToList();

            filesAndEmptyFolders.Remove(FileSystemPath);
            filesAndEmptyFolders.Remove(Solution.FileSystemPath);
            filesAndEmptyFolders.Remove(Solution.FileSystemPath + ".user");
            foreach (string fileSystemPath in filesAndEmptyFolders)
            {
                if (Directory.Exists(fileSystemPath))
                {
                    if (projectFiles != null && !projectFiles.ContainsKey(fileSystemPath))
                    {
                        continue;
                    }
                    _items.Add(new ProjectFolder(fileSystemPath, true, this));
                    if (_initialized)
                    {
                        _isDirty = true;
                    }
                }
                else
                {
                    bool included = true;
                    bool ignoreDecompileErrors = false;
                    if (projectFiles != null)
                    {
                        if (projectFiles.ContainsKey(fileSystemPath))
                        {
                            ignoreDecompileErrors = projectFiles[fileSystemPath];
                        }
                        else
                        {
                            included = false;
                        }
                    }
                    AddFile(fileSystemPath, included, ignoreDecompileErrors);
                }
            }
        }