title: Protocol Extension in Swift Where Object Is a Class and conforms to a Protocol
body: <p>I have two protocols (<code>Archivable</code> and <code>Serializable</code>) and a class (<code>Model</code>) that is subclassed multiple times. Many of the subclasses implement either <code>Archivable</code> or <code>Serializable</code> (or both). I'd like to define a function on all children of <code>Model</code> that implement both <code>Archivable</code> and <code>Serializable</code>. Both of these work:</p>
  
  <pre><code>extension Serializable where Self: Model {
    func fetch() { ... }
  }
  </code></pre>
  
  <p><strong>or</strong></p>
  
  <pre><code>extension Serializable where Self: Archivable {
    func fetch() { ... }
  }
  </code></pre>
  
  <p>However I can't figure out how to extend where both protocols are required. Are there any other options outside of creating a third protocol that conforms to the first two?</p>