public void TouchedFileCausesRecomposition()
        {
            var ironpythonDir = "IronPythonCommands".AsNewDirectoryInfo();

            @"
@export(IItemSource)
class StringItemSource(BasePythonItemSource):
    def GetAllItems(self):
        return [""Item 1"", ""Item 2"", ""Item 3""]
".WriteToFileInPath(ironpythonDir, "python.py");

            var container = new CompositionContainer(new TypeCatalog(typeof(MockImporter)));

            var commands = new IronPythonCommandsMefExport(container, new DebugLogger());

            commands.CoreConfiguration = new CoreConfiguration("data".AsNewDirectoryInfo().FullName, ".");
            commands.Configuration     = new Configuration {
                ScriptDirectories = new List <string> {
                    ironpythonDir.FullName
                }
            };
            commands.Execute();

            var importer = container.GetExportedValue <MockImporter>();

            Assert.Equal(1, importer.ItemSources.Count());

            var newCode = @"
@export(IItemSource)
class StringItemSource(BasePythonItemSource):
    def GetAllItems(self):
        return [""Item 1"", ""Item 2"", ""Item 3""]

@export(IItemSource)
class SecondStringItemSource(BasePythonItemSource):
    def GetAllItems(self):
        return [""Item 1"", ""Item 2"", ""Item 3""]

";

            EventHelper.WaitForEvent(e => commands.RefreshedFiles += e,
                                     e => commands.RefreshedFiles -= e,
                                     () => newCode.WriteToFileInPath(ironpythonDir, "python.py"));

            importer = container.GetExportedValue <MockImporter>();
            Assert.Equal(2, importer.ItemSources.Count());
        }