             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 {

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

        public static func == (lhs: Action, rhs: Action) -> Bool {
            switch (lhs, rhs) {
            case (.compilerSpec(let lhsCompilerSpec), .compilerSpec(let rhsCompilerSpec)):
                return lhsCompilerSpec == rhsCompilerSpec
            case (.script(let lhsScript), .script(let rhsScript)):
                return lhsScript == rhsScript
            default:
                return false
            }
        }
    }

    public var fileType: FileType

import Foundation
import JSONUtilities

public struct BuildRule: Equatable {

    public static let scriptCompilerSpec = "com.apple.compilers.proxy.script"
    public static let filePatternFileType = "pattern.proxy"
