static void generateIndicesLookup(Type[] components)
        {
            var generator = new IndicesLookupGenerator();
            var lookups   = generator.GenerateIndicesLookup(components);

            writeFiles(lookups);
        }
    void generates(Type[] types, string lookupName, string lookupCode)
    {
        var files = new IndicesLookupGenerator().Generate(types);
        files.Length.should_be(1);

        files.Any(f => f.fileName == lookupName).should_be_true();

        var file = files.First(f => f.fileName == lookupName);

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

        file.fileContent.should_be(lookupCode);
    }
    void generates(Type[] types, string[] lookupNames, string[] lookupCodes) {
        var files = new IndicesLookupGenerator().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);
        }
    }
    void generatesEmptyLookup(string[] poolNames, string[] lookupNames, string[] lookupCodes) {
        var files = new IndicesLookupGenerator().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);
        }
    }