         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#instruction-set
// https://github.com/apple/swift/blob/master/include/swift/SIL/SILInstruction.h
public enum Operator {
    // https://github.com/apple/swift/blob/master/docs/SIL.rst#alloc-stack
    // alloc_stack $Float
    // alloc_stack $IndexingIterator<Range<Int>>, var, name "$inputIndex$generator"


// https://github.com/apple/swift/blob/master/include/swift/SIL/SILDeclRef.h
// https://github.com/apple/swift/blob/master/docs/SIL.rst#declaration-references
public struct DeclRef: Equatable {
    public let name: [String]
    public let kind: DeclKind?
    public let level: Int?
