             case .pattern(let pattern): return pattern
             }
         }
-
-        public static func == (lhs: FileType, rhs: FileType) -> Bool {
-            switch (lhs, rhs) {
-            case (.type(let lhsFileType), .type(let rhsFileType)):
-                return lhsFileType == rhsFileType
-            case (.pattern(let lhsPattern), .pattern(let rhsPattern)):
-                return lhsPattern == rhsPattern
-            default:
-                return false
-            }
-        }
     }
 
     public enum Action: Equatable {

        self.name = name
        self.outputFiles = outputFiles
        self.outputFilesCompilerFlags = outputFilesCompilerFlags
    }
}

extension BuildRule: Equatable {

    public static func == (lhs: BuildRule, rhs: BuildRule) -> Bool {
        return lhs.outputFiles == rhs.outputFiles &&
            lhs.outputFilesCompilerFlags == rhs.outputFilesCompilerFlags &&
            lhs.fileType == rhs.fileType &&
            lhs.action == rhs.action &&
            lhs.name == rhs.name
    }
}


            case .script(let script): return script
            }
        }
    }

    public var fileType: FileType
