title: How to declare a generic protocol property requirement in a protocol
body: <p>Struggling for a while with, it will be really helpful if you can shed some light on this:</p>
  
  <p>I have an <code>APIWorkerProtocol</code> which has a property requirement, the required property is a protocol i.e <code>DataParserProtocol</code> </p>
  
  <pre><code>protocol APIWorkerProtocol {
      var apiRequestProvider : APIRequestGeneratorProtocol {get}
      var dataParser : DataParserProtocol{get}
      func callAPI(completionHandler: @escaping (APICallResult&lt;Self.ResultType&gt;) -&gt; Void)
  }
  
  protocol DataParserProtocol {
      associatedtype ExpectedRawDataType
      associatedtype ResultType
      func parseFetchedData(fetchedData : ExpectedRawDataType) -&gt; APICallResult&lt;ResultType&gt;
  }
  </code></pre>
  
  <p>How can I achieve this?</p>
  
  <p>In this current implementation, this causes an error <code>Protocol 'DataParserProtocol' can only be used as a generic constraint because it has Self or associated type requirements</code>.</p>
  
  <p>Thanks in advance</p>
  
  <p>Ankit</p>