         let nextType = optNextType ?? Value.self
         
         func project<CurValue>(_: CurValue.Type) {
-          // FIXME: Opened archetype specialization fails to propagate uses
-          // in some cases. rdar://problem/31749245
-          @inline(never)
           func project2<NewValue>(_: NewValue.Type) {
             p = rawComponent.projectMutableAddress(p,
                                            from: CurValue.self,

  
  func open<Root>(_: Root.Type) -> Result {
    func open2<Value>(_: Value.Type) -> Result {
      // FIXME: Opened archetype specialization fails to propagate uses
      // in some cases. rdar://problem/31749245
      @inline(never)
      func open3<AppendedValue>(_: AppendedValue.Type) -> Result {
        let typedRoot = unsafeDowncast(root, to: KeyPath<Root, Value>.self)
        let typedLeaf = unsafeDowncast(leaf,

        let isLast = optNextType == nil
        
        func project<CurValue>(_ base: CurValue) -> Value? {
          func project2<NewValue>(_: NewValue.Type) -> Value? {
            let newBase: NewValue = rawComponent.projectReadOnly(base)
            if isLast {
