         case invalidBuildScriptPath(target: String, path: String)
         case invalidTargetSchemeConfigVariant(target: String, configVariant: String, configType: ConfigType)
         case invalidTargetSchemeTest(target: String, testTarget: String)
+        case invalidFileGroup(String)
 
         public var description: String {
             switch self {
             case let .invalidTargetDependency(target, dependency): return "Target \(target.quoted) has invalid dependency: \(dependency.quoted)"
             case let .invalidTargetConfigFile(configFile, config, target): return "Target \(target.quoted) has invalid config file \(configFile.quoted) for config \(config.quoted)"
+            case let .invalidConfigFile(configFile, config): return "Invalid config file \(configFile.quoted) for config \(config.quoted)"
             case let .invalidSchemeTarget(scheme, target): return "Scheme \(scheme.quoted) has invalid build target \(target.quoted)"
             case let .invalidSchemeConfig(scheme, config): return "Scheme \(scheme.quoted) has invalid build configuration \(config.quoted)"
             case let .invalidBuildSettingConfig(config): return "Build setting has invalid build configuration \(config.quoted)"

        case invalidTargetDependency(target: String, dependency: String)
        case invalidSchemeTarget(scheme: String, target: String)
        case invalidSchemeConfig(scheme: String, config: String)
        case invalidTargetConfigFile(configFile: String, config: String, target: String)
        case invalidBuildSettingConfig(String)
        case invalidSettingsPreset(String)

                }
            }
            return errors
        }

        for fileGroup in fileGroups {
            if !(path + fileGroup).exists {
                errors.append(.invalidFileGroup(fileGroup))
            }
        }

        for (config, configFile) in configFiles {
            if !(path + configFile).exists {
                errors.append(.invalidConfigFile(configFile: configFile, config: config))
            }
        }

        for settings in settingGroups.values {
