public ProtobuildModule ()
	    {
            shadowSolutions = new Dictionary<string, Solution> ();
			Packages = new ProtobuildPackages(this);
			Submodules = new ItemCollection<ProtobuildSubmodule>();
			Definitions = new ItemCollection<IProtobuildDefinition>();
			Initialize(this);
        }
		public ProtobuildSubmodule (ProtobuildModuleInfo latestModuleInfo, ProtobuildModuleInfo submodule, SolutionFolder rootFolder)
        {
            parentModule = latestModuleInfo;
            currentModule = submodule;
			RootFolder = rootFolder;
			Packages = new ProtobuildPackages(this);
			Definitions = new ItemCollection<IProtobuildDefinition>();
			Submodules = new ItemCollection<ProtobuildSubmodule>();
		}
		public ProtobuildPackage (ProtobuildModuleInfo moduleInfo, ProtobuildPackageRef reference, IProtobuildModule parentModule)
        {
            module = moduleInfo;
            package = reference;
			parentModuleRef = parentModule;
			Packages = new ProtobuildPackages(this);
			Definitions = new ItemCollection<IProtobuildDefinition>();
			Submodules = new ItemCollection<ProtobuildSubmodule>();

			IsBinary = File.Exists(Path.Combine(FullPath, ".pkg")) &&
				!File.Exists(Path.Combine(FullPath, ".git")) &&
				!Directory.Exists(Path.Combine(FullPath, ".git"));
        }