         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,


  // Grab the class object for the key path type we'll end up with.
  func openRoot<Root>(_: Root.Type) -> AnyKeyPath.Type {
    func openLeaf<Leaf>(_: Leaf.Type) -> AnyKeyPath.Type {
      switch capability {
      case .readOnly:

        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 {
