public Project GetShadowProject (ProtobuildStandardDefinition protobuildDefinition, string platform)
        {
			if (platform == null) {
				return null;
			}
	        if (!shadowSolutions.ContainsKey (platform)) {
	            return null;
	        }
            var solution = shadowSolutions[platform];
            return (Project)solution.Items.OfType<Project>().FirstOrDefault(x => x.BaseDirectory == protobuildDefinition.ProjectDirectory);
        }
	    private void EnsureConfigurationPresent (string platform, ProtobuildStandardDefinition item)
	    {
	        var solutionConfig = Configurations[platform];
	        if (solutionConfig == null) {
                solutionConfig = new SolutionConfiguration(platform);
                Configurations.Add(solutionConfig);
	        }

	        var conf = solutionConfig.GetEntryForItem (item);
	        if (conf == null) {
	            solutionConfig.AddItem (item, true, platform);
	        }
	    }
        public async Task<Project> GetShadowProject (ProtobuildStandardDefinition protobuildDefinition, ProgressMonitor monitor,
	        ConfigurationSelector configuration)
	    {
            var platform = configuration.GetConfiguration(this).Id;
            await EnsureProjectsAreGeneratedForPlatform(platform, monitor);

            var solution = shadowSolutions[platform];
            return (Project)solution.Items.OfType<Project>().FirstOrDefault(x => x.BaseDirectory == protobuildDefinition.ProjectDirectory);
	    }
		public void OnDefinitionBuilt(ProtobuildStandardDefinition definition)
		{
			if (Built != null)
			{
				DefinitionBuilt(this, new SolutionItemEventArgs(definition, this));
			}
		}