<div>It is confusing in Swift what can be covariant and what is invariant, consider:</div><div><br></div><div><div> // Covarant arrays work</div><div> class A {}</div><div> class B: A {}</div><div> let a = A() // A</div><div> let b = B() // B</div><div> var arrayA = [a] // Array<A></div><div> arrayA[0] = b // OK</div><div> </div><div> // And arrays of arrays</div><div> var arrayArrayA = [arrayA] // Array<Array<A>></div><div> arrayArrayA[0][0] = b // OK</div><div> let arrayB = [b] // Array<B></div><div> arrayArrayA[0] = arrayB // OK, works out that an Array<B> is a Array<A></div><div> </div><div><div> // Covariant homebrew-collections work</div><div> class C<T: AnyObject> { </div><div> var e: T</div><div> init(_ e: T) { self.e = e }</div><div> }</div><div> var cA = C(a) // C<A></div><div> cA.e = b // OK</div><div> </div><div> // But not quite for homebrew-collections of homebrew-collections</div><div> var cCA = C(cA) // C<C<A>></div><div> cCA.e.e = b // OK</div><div> let cB = C(b) // C<B></div><div> // cCA.e = cB // Error - cannot work out that a C<B> is a C<A> but can do so for arrays</div></div><div><br></div><div>It is weird that the last line fails and the equivalent Array line doesn't. I suspect that there is some special typing going on for arrays, probably to make them play nice with Objective-C. However it would be simpler if everything was covariant when safe to be covariant, i.e. The last line should work.</div><div><br></div><div> -- Howard.</div><div><br></div><div class="gmail_quote"><div>On Mon, 20 Feb 2017 at 8:38 pm, Isaac Rivera via swift-users <<a href="mailto:swift-users@swift.org">swift-users@swift.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word" class="gmail_msg"><div class="gmail_msg"><font size="2" class="gmail_msg">I can see it is a (counter-intuitive) language design decision for type safety… but then why, in the code below I can:</font></div><div class="gmail_msg"><div style="margin:0px;line-height:normal;font-family:Menlo;min-height:18px" class="gmail_msg"><font size="2" class="gmail_msg"><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg"></span><br class="gmail_msg"></font></div><div style="margin:0px;line-height:normal;font-family:Menlo;color:rgb(97,34,174)" class="gmail_msg"><font size="2" class="gmail_msg"><span style="font-variant-ligatures:no-common-ligatures;color:#c42275" class="gmail_msg">class</span><span style="font-variant-ligatures:no-common-ligatures;color:#000000" class="gmail_msg"> OtherThing: </span><span style="font-variant-ligatures:no-common-ligatures;color:#3c828b" class="gmail_msg">Something</span><span style="font-variant-ligatures:no-common-ligatures;color:#000000" class="gmail_msg"><</span><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg">UIViewController</span><span style="font-variant-ligatures:no-common-ligatures;color:#000000" class="gmail_msg">> {</span></font></div><div style="margin:0px;line-height:normal;font-family:Menlo" class="gmail_msg"><font size="2" class="gmail_msg"><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg"><span class="m_-1818902889843361492Apple-tab-span gmail_msg" style="white-space:pre-wrap">        </span></span><span style="font-variant-ligatures:no-common-ligatures;color:#c42275" class="gmail_msg">override</span><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg"> </span><span style="font-variant-ligatures:no-common-ligatures;color:#c42275" class="gmail_msg">func</span><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg"> start(</span><span style="font-variant-ligatures:no-common-ligatures;color:#c42275" class="gmail_msg">_</span><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg"> completion: </span><span style="font-variant-ligatures:no-common-ligatures;color:#539aa4" class="gmail_msg">SomeCallback</span><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg">? = </span><span style="font-variant-ligatures:no-common-ligatures;color:#c42275" class="gmail_msg">nil</span><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg">) {</span></font></div><div style="margin:0px;line-height:normal;font-family:Menlo;color:rgb(30,148,33)" class="gmail_msg"><font size="2" class="gmail_msg"><span style="font-variant-ligatures:no-common-ligatures;color:#000000" class="gmail_msg"><span class="m_-1818902889843361492Apple-tab-span gmail_msg" style="white-space:pre-wrap">                </span></span><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg">// implementation details...</span></font></div><div style="margin:0px;line-height:normal;font-family:Menlo" class="gmail_msg"><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg"><font size="2" class="gmail_msg"><span class="m_-1818902889843361492Apple-tab-span gmail_msg" style="white-space:pre-wrap">        </span>}</font></span></div><div style="margin:0px;line-height:normal;font-family:Menlo" class="gmail_msg"><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg"><font size="2" class="gmail_msg">}</font></span></div><div style="margin:0px;line-height:normal;font-family:Menlo;min-height:18px" class="gmail_msg"><font size="2" class="gmail_msg"><br class="gmail_msg"><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg"></span></font></div><div style="margin:0px;line-height:normal;font-family:Menlo" class="gmail_msg"><font size="2" class="gmail_msg"><span style="font-variant-ligatures:no-common-ligatures;color:#c42275" class="gmail_msg">let</span><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg"> firstThing = </span><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg">OtherThing(viewController: </span><span style="font-variant-ligatures:no-common-ligatures;color:#6122ae" class="gmail_msg">UINavigationController</span><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg">())</span></font></div></div><div style="margin:0px;line-height:normal;font-family:Menlo" class="gmail_msg"><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg"><font size="2" class="gmail_msg"><br class="gmail_msg"></font></span></div><div style="margin:0px;line-height:normal;font-family:Menlo" class="gmail_msg"><font size="2" class="gmail_msg"><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg">OtherThing extends </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(60,130,139)" class="gmail_msg">Something</span><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg"><</span><span style="color:rgb(97,34,174);font-variant-ligatures:no-common-ligatures" class="gmail_msg">UIViewController</span><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg">>… but I can instantiate it with the subtype…</span></font></div><div style="margin:0px;line-height:normal;font-family:Menlo" class="gmail_msg"><font size="2" class="gmail_msg"><br class="gmail_msg"></font></div><div style="margin:0px;line-height:normal;font-family:Menlo" class="gmail_msg"><font size="2" class="gmail_msg">Ok you will say, UINavigationController is a subtype of UIViewController, but that still does not make <span style="font-variant-ligatures:no-common-ligatures;color:rgb(60,130,139)" class="gmail_msg">Something</span><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg"><</span><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg"><span style="color:rgb(97,34,174)" class="gmail_msg">UINavigationController</span>> a subtype of </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(60,130,139)" class="gmail_msg">Something</span><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg"><</span><span style="color:rgb(97,34,174);font-variant-ligatures:no-common-ligatures" class="gmail_msg">UIViewController</span><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg">>. </span></font></div><div style="margin:0px;line-height:normal;font-family:Menlo" class="gmail_msg"><font size="2" class="gmail_msg"><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg"><br class="gmail_msg"></span></font></div><div style="margin:0px;line-height:normal;font-family:Menlo" class="gmail_msg"><font size="2" class="gmail_msg"><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg">Fair enough, but:</span></font></div><div style="margin:0px;line-height:normal;font-family:Menlo" class="gmail_msg"><font size="2" class="gmail_msg"><br class="gmail_msg"></font></div><div style="margin:0px;line-height:normal;font-family:Menlo" class="gmail_msg"><div style="margin:0px;line-height:normal;color:rgb(97,34,174)" class="gmail_msg"><font size="2" class="gmail_msg"><span style="font-variant-ligatures:no-common-ligatures;color:#c42275" class="gmail_msg">let</span><span style="font-variant-ligatures:no-common-ligatures;color:#000000" class="gmail_msg"> c1: </span><span style="font-variant-ligatures:no-common-ligatures;color:#3c828b" class="gmail_msg">Something</span><span style="font-variant-ligatures:no-common-ligatures;color:#000000" class="gmail_msg"><</span><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg">UIViewController</span><span style="font-variant-ligatures:no-common-ligatures;color:#000000" class="gmail_msg">> = </span><span style="font-variant-ligatures:no-common-ligatures;color:#3c828b" class="gmail_msg">Something</span><span style="font-variant-ligatures:no-common-ligatures;color:#000000" class="gmail_msg">(viewController: </span><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg">UINavigationController</span><span style="font-variant-ligatures:no-common-ligatures;color:#000000" class="gmail_msg">())</span></font></div><div style="margin:0px;line-height:normal;color:rgb(97,34,174)" class="gmail_msg"><font size="2" class="gmail_msg"><span style="font-variant-ligatures:no-common-ligatures;color:#000000" class="gmail_msg">// c1 is of type "</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(60,130,139)" class="gmail_msg">Something</span><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg"><</span><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg">UIViewController</span><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg">>"</span></font></div><div style="margin:0px;line-height:normal;color:rgb(97,34,174)" class="gmail_msg"><span style="font-variant-ligatures:no-common-ligatures;color:#000000" class="gmail_msg"><font size="2" class="gmail_msg"><br class="gmail_msg"></font></span></div><div style="margin:0px;line-height:normal" class="gmail_msg"><font size="2" class="gmail_msg"><span style="font-variant-ligatures:no-common-ligatures;color:#c42275" class="gmail_msg">let</span><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg"> c2 = </span><span style="font-variant-ligatures:no-common-ligatures;color:#3c828b" class="gmail_msg">Something</span><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg">(viewController: </span><span style="font-variant-ligatures:no-common-ligatures;color:#6122ae" class="gmail_msg">UINavigationController</span><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg">())</span></font></div></div><div style="margin:0px;line-height:normal;font-family:Menlo" class="gmail_msg"><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg"><font size="2" class="gmail_msg"><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg">// c1 is of type "</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(60,130,139)" class="gmail_msg">Something</span><span style="color:rgb(97,34,174);font-variant-ligatures:no-common-ligatures" class="gmail_msg"><</span><span style="color:rgb(97,34,174);font-variant-ligatures:no-common-ligatures" class="gmail_msg">UINavigationController>”</span></font></span></div><div style="margin:0px;line-height:normal;font-family:Menlo" class="gmail_msg"><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg"><span style="color:rgb(97,34,174);font-variant-ligatures:no-common-ligatures" class="gmail_msg"><font size="2" class="gmail_msg"><br class="gmail_msg"></font></span></span></div><div style="margin:0px;line-height:normal;font-family:Menlo" class="gmail_msg"><font size="2" class="gmail_msg"><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg"><span style="color:rgb(97,34,174);font-variant-ligatures:no-common-ligatures" class="gmail_msg">So it appears </span></span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(60,130,139)" class="gmail_msg">Something</span><span style="color:rgb(97,34,174);font-variant-ligatures:no-common-ligatures" class="gmail_msg"><</span><span style="color:rgb(97,34,174);font-variant-ligatures:no-common-ligatures" class="gmail_msg">UINavigationController> can be cast to type </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(60,130,139)" class="gmail_msg">Something</span><span style="color:rgb(97,34,174);font-variant-ligatures:no-common-ligatures" class="gmail_msg"><</span><span style="color:rgb(97,34,174);font-variant-ligatures:no-common-ligatures" class="gmail_msg">UIViewController</span><span style="color:rgb(97,34,174);font-variant-ligatures:no-common-ligatures" class="gmail_msg">>…</span></font></div><div style="margin:0px;line-height:normal;font-family:Menlo" class="gmail_msg"><span style="color:rgb(97,34,174);font-variant-ligatures:no-common-ligatures" class="gmail_msg"><font size="2" class="gmail_msg"><br class="gmail_msg"></font></span></div><div style="margin:0px;line-height:normal;font-family:Menlo" class="gmail_msg"><font color="#6122ae" size="2" class="gmail_msg">Yet this is illegal?</font></div><div style="margin:0px;line-height:normal;font-family:Menlo" class="gmail_msg"><font color="#6122ae" size="2" class="gmail_msg"><br class="gmail_msg"></font></div><div style="margin:0px;line-height:normal;font-family:Menlo" class="gmail_msg"><div style="margin:0px;line-height:normal" class="gmail_msg"><font size="2" class="gmail_msg"><span style="font-variant-ligatures:no-common-ligatures;color:#c42275" class="gmail_msg">let</span><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg"> somethings: [</span><span style="font-variant-ligatures:no-common-ligatures;color:#3c828b" class="gmail_msg">Something</span><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg"><</span><span style="font-variant-ligatures:no-common-ligatures;color:#6122ae" class="gmail_msg">UIViewController</span><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg">>] = [</span><span style="font-variant-ligatures:no-common-ligatures;color:#539aa4" class="gmail_msg">c1</span><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg">, </span><span style="font-variant-ligatures:no-common-ligatures;color:#539aa4" class="gmail_msg">c2</span><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg">]</span></font></div><div style="margin:0px;line-height:normal" class="gmail_msg"><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg"><font size="2" class="gmail_msg"><br class="gmail_msg"></font></span></div><div style="margin:0px;line-height:normal" class="gmail_msg"><span style="font-variant-ligatures:no-common-ligatures" class="gmail_msg"><font size="2" class="gmail_msg">I dont know, something seems inconsistent.</font></span></div><div style="font-size:15px;margin:0px;line-height:normal" class="gmail_msg"><br class="gmail_msg"></div></div></div><div style="word-wrap:break-word" class="gmail_msg"><br class="gmail_msg"><div class="gmail_msg"><blockquote type="cite" class="gmail_msg"><div class="gmail_msg">On Feb 16, 2017, at 10:59 PM, Slava Pestov <<a href="mailto:spestov@apple.com" class="gmail_msg" target="_blank">spestov@apple.com</a>> wrote:</div><br class="m_-1818902889843361492Apple-interchange-newline gmail_msg"><div class="gmail_msg"><div class="gmail_msg">Hi Isaac,<br class="gmail_msg"><br class="gmail_msg">This is not about associated types. Rather, the issue is that a ‘Thing’ is a ‘Something<UINavigationController>’, but you are casting it to ‘Something<UIViewController>’. The two types are not related; in general, if A is a subtype of B, then G<A> is not a subtype of G<B>.<br class="gmail_msg"><br class="gmail_msg"><a href="https://en.wikipedia.org/wiki/Covariance_and_contravariance_(computer_science)" class="gmail_msg" target="_blank">https://en.wikipedia.org/wiki/Covariance_and_contravariance_(computer_science)</a><br class="gmail_msg"><br class="gmail_msg">Slava<br class="gmail_msg"><br class="gmail_msg"><blockquote type="cite" class="gmail_msg">On Feb 16, 2017, at 9:05 AM, Isaac Rivera via swift-users <<a href="mailto:swift-users@swift.org" class="gmail_msg" target="_blank">swift-users@swift.org</a>> wrote:<br class="gmail_msg"><br class="gmail_msg">Hello, list!<br class="gmail_msg"><br class="gmail_msg">I am trying to find my way around Swift’s protocol limitations. It appears that in general, any protocol with declared associatedtype will break polymorphism?<br class="gmail_msg"><br class="gmail_msg">Take the case below which does not compile. All "Thing” instances are "Something<VC: UIViewController>” but they can’t be passed around or coerced as so.<br class="gmail_msg"><br class="gmail_msg">How is it that I can legally write the code:<br class="gmail_msg"><br class="gmail_msg">class Thing: Something<UINavigationController> { }<br class="gmail_msg"><br class="gmail_msg">and instantiate it, but it is not the very thing it implements? <br class="gmail_msg"><br class="gmail_msg">All Thing instances conform to the public interfaces of Something<UIViewController> so why can’t they be recognized as such and coerced as such?<br class="gmail_msg"><br class="gmail_msg">What is the work-around of this break in Polymorphism?<br class="gmail_msg"><br class="gmail_msg">import UIKit<br class="gmail_msg"><br class="gmail_msg">protocol Anything: class, NSObjectProtocol {<br class="gmail_msg"><span class="m_-1818902889843361492Apple-tab-span gmail_msg" style="white-space:pre-wrap">        </span><br class="gmail_msg"><span class="m_-1818902889843361492Apple-tab-span gmail_msg" style="white-space:pre-wrap">        </span>associatedtype ViewControllerType: UIViewController<br class="gmail_msg"><span class="m_-1818902889843361492Apple-tab-span gmail_msg" style="white-space:pre-wrap">        </span><br class="gmail_msg"><span class="m_-1818902889843361492Apple-tab-span gmail_msg" style="white-space:pre-wrap">        </span>var viewController: ViewControllerType { get }<br class="gmail_msg"><span class="m_-1818902889843361492Apple-tab-span gmail_msg" style="white-space:pre-wrap">        </span><br class="gmail_msg"><span class="m_-1818902889843361492Apple-tab-span gmail_msg" style="white-space:pre-wrap">        </span>init(viewController: ViewControllerType)<br class="gmail_msg"><span class="m_-1818902889843361492Apple-tab-span gmail_msg" style="white-space:pre-wrap">        </span><br class="gmail_msg"><span class="m_-1818902889843361492Apple-tab-span gmail_msg" style="white-space:pre-wrap">        </span>func addAnything(anything: Something<UIViewController>) -> Bool<br class="gmail_msg">}<br class="gmail_msg"><br class="gmail_msg">class Something<VC: UIViewController>: NSObject, Anything {<br class="gmail_msg"><span class="m_-1818902889843361492Apple-tab-span gmail_msg" style="white-space:pre-wrap">        </span><br class="gmail_msg"><span class="m_-1818902889843361492Apple-tab-span gmail_msg" style="white-space:pre-wrap">        </span>typealias ViewControllerType = VC<br class="gmail_msg"><span class="m_-1818902889843361492Apple-tab-span gmail_msg" style="white-space:pre-wrap">        </span><br class="gmail_msg"><span class="m_-1818902889843361492Apple-tab-span gmail_msg" style="white-space:pre-wrap">        </span>private(set) var viewController: ViewControllerType<br class="gmail_msg"><span class="m_-1818902889843361492Apple-tab-span gmail_msg" style="white-space:pre-wrap">        </span><br class="gmail_msg"><span class="m_-1818902889843361492Apple-tab-span gmail_msg" style="white-space:pre-wrap">        </span>required init(viewController: ViewControllerType) { self.viewController = viewController }<br class="gmail_msg"><span class="m_-1818902889843361492Apple-tab-span gmail_msg" style="white-space:pre-wrap">        </span><br class="gmail_msg"><span class="m_-1818902889843361492Apple-tab-span gmail_msg" style="white-space:pre-wrap">        </span>final private var things = [String: Something<UIViewController>]()<br class="gmail_msg"><span class="m_-1818902889843361492Apple-tab-span gmail_msg" style="white-space:pre-wrap">        </span><br class="gmail_msg"><span class="m_-1818902889843361492Apple-tab-span gmail_msg" style="white-space:pre-wrap">        </span>final internal func addAnything(anything: Something<UIViewController>) -> Bool {<br class="gmail_msg"><span class="m_-1818902889843361492Apple-tab-span gmail_msg" style="white-space:pre-wrap">        </span><span class="m_-1818902889843361492Apple-tab-span gmail_msg" style="white-space:pre-wrap">        </span>// implementation details...<br class="gmail_msg"><span class="m_-1818902889843361492Apple-tab-span gmail_msg" style="white-space:pre-wrap">        </span><span class="m_-1818902889843361492Apple-tab-span gmail_msg" style="white-space:pre-wrap">        </span>return true<br class="gmail_msg"><span class="m_-1818902889843361492Apple-tab-span gmail_msg" style="white-space:pre-wrap">        </span>}<br class="gmail_msg">}<br class="gmail_msg"><br class="gmail_msg">class Thing: Something<UINavigationController> { }<br class="gmail_msg"><br class="gmail_msg">let firstThing = Thing(viewController: UINavigationController())<br class="gmail_msg">let secondThing = Thing(viewController: UINavigationController())<br class="gmail_msg"><br class="gmail_msg">firstThing.addAnything(anything: secondThing)<br class="gmail_msg"><br class="gmail_msg">// Playground execution failed: error: MyPlayground.playground:48:34: error: cannot convert value of type 'Thing' to expected argument type 'Something<UIViewController>'<br class="gmail_msg"><br class="gmail_msg">firstThing.addAnything(anything: secondThing as Something<UIViewController>)<br class="gmail_msg"><br class="gmail_msg">// Playground execution failed: error: MyPlayground.playground:48:34: error: cannot convert value of type 'Thing' to type 'Something<UIViewController>' in coercion<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg">_______________________________________________<br class="gmail_msg">swift-users mailing list<br class="gmail_msg"><a href="mailto:swift-users@swift.org" class="gmail_msg" target="_blank">swift-users@swift.org</a><br class="gmail_msg"><a href="https://lists.swift.org/mailman/listinfo/swift-users" class="gmail_msg" target="_blank">https://lists.swift.org/mailman/listinfo/swift-users</a><br class="gmail_msg"></blockquote><br class="gmail_msg"></div></div></blockquote></div><br class="gmail_msg"></div>_______________________________________________<br class="gmail_msg">
swift-users mailing list<br class="gmail_msg">
<a href="mailto:swift-users@swift.org" class="gmail_msg" target="_blank">swift-users@swift.org</a><br class="gmail_msg">
<a href="https://lists.swift.org/mailman/listinfo/swift-users" rel="noreferrer" class="gmail_msg" target="_blank">https://lists.swift.org/mailman/listinfo/swift-users</a><br class="gmail_msg">
</blockquote></div></div><div dir="ltr">-- <br></div><div data-smartmail="gmail_signature">-- Howard.</div>