title: Swift protocol with generic method: invalid redeclaration of implementation
body: <p>I'm playing with some protocol/generic stuff in Swift and I'm curious why following code is refusing to be compiled:</p>
  
  <pre><code>protocol MyProtocol {
      func value&lt;T&gt;() -&gt; T
  }
  
  class StringImpl: MyProtocol {
      var string: String
  
      init() {
          self.string = "..."
      }
  
      init(string: String) {
          self.string = string
      }
  
      func value&lt;String&gt;() -&gt; String {
          return self.string as! String
      }
  }
  
  class BoolImpl: MyProtocol {
      var value: Bool
  
      init() {
          self.value = false
      }
  
      init(value: Bool) {
          self.value = value
      }
  
      func value&lt;Bool&gt;() -&gt; Bool {
          return self.value as! Bool
      }
  }
  </code></pre>
  
  <p>with particular error </p>
  
  <pre><code>error: invalid redeclaration of 'value()'
  func value&lt;Bool&gt;() -&gt; Bool {
  </code></pre>
  
  <p>It may imply that I cannot have different implementations of protocol generic method, but I don't see clear reason why.</p>
  
  <p>(I'm not speaking of force type cast as generic type shadows existing one)</p>
  
  <p>P.S. For those who are curious I may tell that I'm trying to make protocol that is not messed with associatedtype and still is generic to some degree.</p>