         self.operatorDefs = operatorDefs
         self.terminatorDef = terminatorDef
     }
+
+    public static func ==(_ a: Block, _ b: Block) -> Bool {
+        return (a.identifier, a.arguments, a.operatorDefs, a.terminatorDef) == (b.identifier, b.arguments, b.operatorDefs, b.terminatorDef)
+    }
 }
 
 // https://github.com/apple/swift/blob/master/docs/SIL.rst#basic-blocks
-public class OperatorDef {
+public struct OperatorDef: Equatable {
     public let result: Result?
     public let `operator`: Operator
     public let sourceInfo: SourceInfo?

}

// https://github.com/apple/swift/blob/master/docs/SIL.rst#switch-enum
public enum Case {
    case `case`(_ declRef: DeclRef, _ identifier: String)
    case `default`(_ identifier: String)
}

}

// https://github.com/apple/swift/blob/master/docs/SIL.rst#basic-blocks
public struct SourceInfo: Equatable {
    public let scopeRef: Int?
    public let loc: Loc?

