title: Overridden == function for Equatable type not called for custom class that subclasses NSCoding and NSObject
body: <p>The <code>FooBar</code> class below has to override the <code>==</code> function of the <code>Equatable</code> type.</p>
  
  <p>However, calling <code>contains</code> on an array of <code>FooBar</code> objects does not cause a breakpoint inside the custom <code>==</code> function to get invoked. Is it possible another <code>==</code> function is overriding this custom one?</p>
  
  <p>Note: Because FooBar must subclass from NSCoding and NSObject, FooBar does not list Equatable as a protocol because it causes this error:</p>
  
  <blockquote>
    <p>Redundant conformance of 'FooBar' to protocol 'Equatable'</p>
  </blockquote>
  
  <pre><code>func ==(lhs: FooBar, rhs: FooBar) -&gt; Bool {
      return lhs.id == rhs.id
  }
  
  class FooBar: NSObject, NSCoding {
       // Class def
  }
  
  // Both serverFooBars and gFooBars are [FooBar]
  let newFooBars = serverFooBars.filter { !gFooBars.contains($0) }
  </code></pre>