void generatesEmptyLookup(string[] poolNames, string[] lookupNames, string[] lookupCodes)
    {
        var files = new ComponentLookupGenerator().Generate(poolNames);

        files.Length.should_be(poolNames.Length == 0 ? 1 : poolNames.Length);

//        foreach (var f in files) {
//            System.Console.WriteLine("f.fileName: " + f.fileName);
//        }

        for (int i = 0; i < lookupNames.Length; i++)
        {
            var lookupName         = lookupNames[i];
            var expectedLookupCode = lookupCodes[i].ToUnixLineEndings();
            files.Any(f => f.fileName == lookupName).should_be_true();
            var file = files.First(f => f.fileName == lookupName);

            if (logResults)
            {
                Console.WriteLine("should:\n" + expectedLookupCode);
                Console.WriteLine("was:\n" + file.fileContent);
            }

            file.fileContent.should_be(expectedLookupCode);
        }
    }
    void generates(Type[] types, string[] lookupNames, string[] lookupCodes)
    {
        var files = new ComponentLookupGenerator().Generate(types);

        files.Length.should_be(lookupNames.Length);

        for (int i = 0; i < lookupNames.Length; i++)
        {
            var lookupName         = lookupNames[i];
            var expectedLookupCode = lookupCodes[i].ToUnixLineEndings();;
            files.Any(f => f.fileName == lookupName).should_be_true();
            var file = files.Single(f => f.fileName == lookupName);
            if (logResults)
            {
                Console.WriteLine("should:\n" + expectedLookupCode);
                Console.WriteLine("was:\n" + file.fileContent);
            }
            file.fileContent.should_be(expectedLookupCode);
        }
    }