title: Protocol functions with Any and Associated Type
body: <pre><code>protocol TableRow {
      func configure(with model: Any) // line a
  }
  protocol Row: TableRow {
      associatedtype Model
      func configure(with model: Model) // line b
      func configure(with model: String) // line z
  
  }
  extension TableRow {
      func configure(with model: Any) { 
          fatalError()
      }
  }
      
  struct Product { }
  
  struct ProductCell: Row {
      typealias Model = Product // line c
      func configure(with model: Product) { } // line d
  }
  </code></pre>
  <p>Hello, hope my question make sense. The function is <code>line a</code> and <code>line b</code> looks like same. Is it ?</p>
  <p>Even if i delete <code>line c</code> and <code>line d</code> compiler is okay. BUT if i added <code>line z</code> compiler complain not conforming to add at <code>line z</code> function. What i am missing ? Do i have to <code>associatedtype String</code> under the associated Model ? Why ?</p>
  <p>If different why compiler looks ok at below code</p>
  <pre><code>struct ProductCell: Row {}
  </code></pre>
  <p>You can test at your playground file</p>