<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Dec 11, 2015, at 7:48 PM, Drew Crawford &lt;<a href="mailto:drew@sealedabstract.com" class="">drew@sealedabstract.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html charset=us-ascii" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div class=""><blockquote type="cite" class=""><div class="">On Dec 11, 2015, at 9:01 PM, Joe Groff &lt;<a href="mailto:jgroff@apple.com" class="">jgroff@apple.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><span style="font-family: HelveticaNeue; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">with its Product type generalized to Any.<span class="Apple-converted-space">&nbsp;</span></span></div></blockquote></div><br class=""><div class=""><br class=""></div><div class="">In the alternate example</div><div class=""><br class=""></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;" class=""><div class="">protocol&nbsp;Factory {</div><div class="">&nbsp; &nbsp;&nbsp;typealias&nbsp;Product: ProductProtocol</div><div class="">&nbsp; &nbsp;&nbsp;func&nbsp;make() -&gt;&nbsp;Product</div><div class="">&nbsp; &nbsp;&nbsp;var&nbsp;description :&nbsp;String&nbsp;{&nbsp;get&nbsp;}</div><div class="">}</div></blockquote><br class=""><div class="">would it generalize to ProductProtocol (e.g. not Any)?</div></div></div></blockquote><div><br class=""></div><div>Yeah, when generalizing a protocol type, we ought to be able to either generalize the associated types to their upper bounds, for use cases like yours, or constrain them to specific types, for the AnyGenerator&lt;T&gt; kind of case.</div><div><br class=""></div><div>-Joe</div></div></body></html>