 }
 
 extension CxxSequence {
+  @inlinable
   public func makeIterator() -> CxxIterator<Self> {
     return CxxIterator(sequence: self)
   }

    self.endIterator = self.sequence.__endUnsafe()
  }

  public func next() -> Element? {
    if self.rawIterator == self.endIterator {
      return nil

  // which would result in dangling pointers for some C++ sequence types.

  public typealias Element = T.RawIterator.Pointee

  @usableFromInline
  internal var sequence: T
  @usableFromInline
  internal var rawIterator: T.RawIterator
  @usableFromInline
  internal let endIterator: T.RawIterator

  public init(sequence: T) {
    self.sequence = sequence
