         let isLast = optNextType == nil
         
         func project<CurValue>(_ base: CurValue) -> Value? {
-          // FIXME: Opened archetype specialization fails to propagate uses
-          // in some cases. rdar://problem/31749245
-          @inline(never)
           func project2<NewValue>(_: NewValue.Type) -> Value? {
             let newBase: NewValue = rawComponent.projectReadOnly(base)
             if isLast {


  // Grab the class object for the key path type we'll end up with.
  func openRoot<Root>(_: Root.Type) -> AnyKeyPath.Type {
    // FIXME: Opened archetype specialization fails to propagate uses
    // in some cases. rdar://problem/31749245
    @inline(never)
    func openLeaf<Leaf>(_: Leaf.Type) -> AnyKeyPath.Type {
      switch capability {
      case .readOnly:

        let nextType = optNextType ?? Value.self
        
        func project<CurValue>(_: CurValue.Type) {
          func project2<NewValue>(_: NewValue.Type) {
            p = rawComponent.projectMutableAddress(p,
                                           from: CurValue.self,
