title: Can't invoke generic initializer from protocol extension in Swift
body: <p>I'm trying to call a <code>struct</code> I made from a protocol extension method I also made:</p>
  
  <pre><code>public struct AdjacentDifferenceArrayGenerator&lt;T: Strideable where T.Stride == T&gt;: GeneratorType {
      private var array: [T]
      public init&lt;U: SequenceType where U.Generator.Element == T&gt;(source: U) {
          self.array = source.adjacentDifference()
      }
      public mutating func next() -&gt; [T]? {
          guard !array.isEmpty else {
              return nil
          }
          defer {
              self.array = self.array.adjacentDifference()
          }
          return self.array
      }
  }
  
  public extension SequenceType where Generator.Element: Strideable {
      public func adjacentDifference() -&gt; [Self.Generator.Element.Stride] {
          var result: [Self.Generator.Element.Stride] = []
          var generator = AdjacentDifferenceGenerator(generator: self.generate())
          while let difference = generator.next() {
              result.append(difference)
          }
          return result
      }
  }
  
  public extension SequenceType where Generator.Element: Strideable, Generator.Element.Stride: Strideable, Generator.Element.Stride.Stride == Generator.Element.Stride {
      public func pyramidOfAdjacentDifferences() -&gt; [[Self.Generator.Element.Stride]] {
          var result: [[Self.Generator.Element.Stride]] = []
          var array = self.adjacentDifference()
          while !array.isEmpty {
              result.append(array)
              array = array.adjacentDifference()
          }
          //var generator = AdjacentDifferenceArrayGenerator(source: self)
          //while let differences = generator.next() {
              //result.append(differences)
          //}
          return result
      }
  </code></pre>
  
  <p>The four lines that are commented near the end, after the substitute algorithm, are trying to use the same algorithm as the method in the first extension.  When I uncomment out the first of those lines, the cursor waits at "<code>AdjacentDifferenceArrayGenerator</code>" and says: "Cannot invoke initializer for type 'AdjacentDifferenceArrayGenerator&lt;_>' with an argument list of type '(source: Self)'"  That last "Self" is capitalized in the error message although it's uncapitalized in code.  Adding an explicit template bracket between the type and initializer arguments didn't help.  Any ideas?</p>