         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,

        let nextType = optNextType.unsafelyUnwrapped
        
        func project<NewValue>(_: NewValue.Type) -> Any {
          func project2<CurValue>(_ base: CurValue) -> Any {
            return rawComponent.projectReadOnly(base) as NewValue
          }

            let (rawComponent, optNextType) = buffer.next()
            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,
