Merge pull request #7727 from practicalswift/typos-20170223

[gardening] Fix typos
diff --git a/cmake/modules/AddSwift.cmake b/cmake/modules/AddSwift.cmake
index 50e5714..993c156 100644
--- a/cmake/modules/AddSwift.cmake
+++ b/cmake/modules/AddSwift.cmake
@@ -97,17 +97,18 @@
     ""
     ${ARGN})
 
-  set(result
-    ${${CFLAGS_RESULT_VAR_NAME}}
-    "-target" "${SWIFT_SDK_${CFLAGS_SDK}_ARCH_${CFLAGS_ARCH}_TRIPLE}")
+  set(result ${${CFLAGS_RESULT_VAR_NAME}})
+
+  # MSVC and clang-cl dont't understand -target.
+  if (NOT SWIFT_COMPILER_IS_MSVC_LIKE)
+     list(APPEND result "-target" "${SWIFT_SDK_${CFLAGS_SDK}_ARCH_${CFLAGS_ARCH}_TRIPLE}")
+  endif()
 
   is_darwin_based_sdk("${CFLAGS_SDK}" IS_DARWIN)
   if(IS_DARWIN)
     list(APPEND result "-isysroot" "${SWIFT_SDK_${CFLAGS_SDK}_PATH}")
-  else()
-    if(NOT "${SWIFT_SDK_${CFLAGS_SDK}_PATH}" STREQUAL "/")
-      list(APPEND result "--sysroot=${SWIFT_SDK_${CFLAGS_SDK}_PATH}")
-    endif()
+  elseif(NOT SWIFT_COMPILER_IS_MSVC_LIKE AND NOT "${SWIFT_SDK_${CFLAGS_SDK}_PATH}" STREQUAL "/")
+    list(APPEND result "--sysroot=${SWIFT_SDK_${CFLAGS_SDK}_PATH}")
   endif()
 
   if("${CFLAGS_SDK}" STREQUAL "ANDROID")
diff --git a/include/swift/AST/Decl.h b/include/swift/AST/Decl.h
index fa2f32f..1fddf63 100644
--- a/include/swift/AST/Decl.h
+++ b/include/swift/AST/Decl.h
@@ -1213,7 +1213,7 @@
                                   SourceLoc LAngleLoc,
                                   ArrayRef<GenericTypeParamDecl *> Params,
                                   SourceLoc WhereLoc,
-                                  MutableArrayRef<RequirementRepr> Requirements,
+                                  ArrayRef<RequirementRepr> Requirements,
                                   SourceLoc RAngleLoc);
 
   MutableArrayRef<GenericTypeParamDecl *> getParams() {
@@ -1332,6 +1332,11 @@
     return depth;
   }
 
+  /// Create a copy of the generic parameter list and all of its generic
+  /// parameter declarations. The copied generic parameters are re-parented
+  /// to the given DeclContext.
+  GenericParamList *clone(DeclContext *dc) const;
+
   void print(raw_ostream &OS);
   void dump();
 };
@@ -2501,6 +2506,8 @@
   unsigned Index : 16;
 
 public:
+  static const unsigned InvalidDepth = 0xFFFF;
+
   /// Construct a new generic type parameter.
   ///
   /// \param dc The DeclContext in which the generic type parameter's owner
diff --git a/include/swift/Parse/Parser.h b/include/swift/Parse/Parser.h
index d0f9ffc..5496801 100644
--- a/include/swift/Parse/Parser.h
+++ b/include/swift/Parse/Parser.h
@@ -791,13 +791,17 @@
   };
 
   bool parseGetSetImpl(ParseDeclOptions Flags,
-                       ParameterList *Indices, TypeLoc ElementTy,
+                       GenericParamList *GenericParams,
+                       ParameterList *Indices,
+                       TypeLoc ElementTy,
                        ParsedAccessors &accessors,
                        SourceLoc &LastValidLoc,
                        SourceLoc StaticLoc, SourceLoc VarLBLoc,
                        SmallVectorImpl<Decl *> &Decls);
   bool parseGetSet(ParseDeclOptions Flags,
-                   ParameterList *Indices, TypeLoc ElementTy,
+                   GenericParamList *GenericParams,
+                   ParameterList *Indices,
+                   TypeLoc ElementTy,
                    ParsedAccessors &accessors,
                    SourceLoc StaticLoc, SmallVectorImpl<Decl *> &Decls);
   void recordAccessors(AbstractStorageDecl *storage, ParseDeclOptions flags,
diff --git a/include/swift/Syntax/Trivia.h b/include/swift/Syntax/Trivia.h
index 975c2a0..615a176 100644
--- a/include/swift/Syntax/Trivia.h
+++ b/include/swift/Syntax/Trivia.h
@@ -120,9 +120,6 @@
 
   /// A backtick '`' character, used to escape identifiers.
   Backtick,
-
-  /// A semicolon ';' character, used for delimiting statements.
-  Semicolon
 };
 
 /// A contiguous stretch of a single kind of trivia. The constituent part of
@@ -187,11 +184,6 @@
     return TriviaPiece {TriviaKind::Backtick, 1, OwnedString{}};
   }
 
-  /// Return a piece of trivia for some number of semicolons in a row.
-  static TriviaPiece semicolon(unsigned Count) {
-    return TriviaPiece {TriviaKind::Semicolon, Count, OwnedString{}};
-  }
-
   void accumulateAbsolutePosition(AbsolutePosition &Pos) const;
 
   /// Print a debug representation of this trivia piece to the provided output
@@ -200,6 +192,16 @@
 
   /// Print this piece of trivia to the provided output stream.
   void print(llvm::raw_ostream &OS) const;
+
+  bool operator==(const TriviaPiece &Other) const {
+    return Kind == Other.Kind &&
+           Count == Other.Count &&
+           Text.str().compare(Other.Text.str()) == 0;
+  }
+
+  bool operator!=(const TriviaPiece &Other) const {
+    return !(*this == Other);
+  }
 };
 
 using TriviaList = std::deque<TriviaPiece>;
@@ -233,6 +235,7 @@
   ///
   /// Precondition: !empty()
   const TriviaPiece &front() const {
+    assert(!empty());
     return Pieces.front();
   }
 
@@ -240,6 +243,7 @@
   ///
   /// Precondition: !empty()
   const TriviaPiece &back() const  {
+    assert(!empty());
     return Pieces.back();
   }
 
@@ -247,6 +251,7 @@
   ///
   /// Precondition: !empty()
   void pop_back() {
+    assert(!empty());
     Pieces.pop_back();
   }
 
@@ -283,41 +288,74 @@
     return find(Kind) != end();
   }
 
+  bool operator==(const Trivia &Other) const {
+    if (Pieces.size() != Other.size()) {
+      return false;
+    }
+
+    for (size_t i = 0; i < Pieces.size(); ++i) {
+      if (Pieces[i] != Other.Pieces[i]) {
+        return false;
+      }
+    }
+
+    return true;
+  }
+
+  bool operator!=(const Trivia &Other) const {
+    return !(*this == Other);
+  }
+
   /// Return a collection of trivia of some number of space characters in a row.
   static Trivia spaces(unsigned Count) {
+    if (Count == 0) {
+      return {};
+    }
     return {{ TriviaPiece {TriviaKind::Space, Count, OwnedString{}} }};
   }
 
   /// Return a collection of trivia of some number of tab characters in a row.
   static Trivia tabs(unsigned Count) {
+    if (Count == 0) {
+      return {};
+    }
     return {{ TriviaPiece {TriviaKind::Tab, Count, OwnedString{}} }};
   }
 
   /// Return a collection of trivia of some number of newline characters
   // in a row.
   static Trivia newlines(unsigned Count) {
+    if (Count == 0) {
+      return {};
+    }
     return {{ TriviaPiece {TriviaKind::Newline, Count, OwnedString{}} }};
   }
 
   /// Return a collection of trivia with a single line of ('//')
   // developer comment.
   static Trivia lineComment(const OwnedString Text) {
+    assert(Text.str().startswith("//"));
     return {{ TriviaPiece {TriviaKind::LineComment, 1, Text} }};
   }
 
   /// Return a collection of trivia with a block comment ('/* ... */')
   static Trivia blockComment(const OwnedString Text) {
+    assert(Text.str().startswith("/*"));
+    assert(Text.str().endswith("*/"));
     return {{ TriviaPiece {TriviaKind::BlockComment, 1, Text} }};
   }
 
   /// Return a collection of trivia with a single line of ('///') doc comment.
   static Trivia docLineComment(const OwnedString Text) {
+    assert(Text.str().startswith("///"));
     return {{ TriviaPiece {TriviaKind::DocLineComment, 1, Text} }};
   }
 
   /// Return a collection of trivia with a documentation block
   // comment ('/** ... */')
   static Trivia docBlockComment(const OwnedString Text) {
+    assert(Text.str().startswith("/**"));
+    assert(Text.str().endswith("*/"));
     return {{ TriviaPiece {TriviaKind::DocBlockComment, 1, Text} }};
   }
 
@@ -326,11 +364,6 @@
   static Trivia backtick() {
     return {{ TriviaPiece {TriviaKind::Backtick, 1, OwnedString{}} }};
   }
-
-  /// Return a piece of trivia for some number of semicolons in a row.
-  static Trivia semicolon() {
-    return {{ TriviaPiece {TriviaKind::Semicolon, 1, OwnedString{}} }};
-  }
 };
 }
 }
diff --git a/lib/AST/ASTDumper.cpp b/lib/AST/ASTDumper.cpp
index 8b56df6..0f7e463 100644
--- a/lib/AST/ASTDumper.cpp
+++ b/lib/AST/ASTDumper.cpp
@@ -104,20 +104,6 @@
       return printer.OS;
     }
 
-    friend raw_ostream &operator<<(PrintWithColorRAII &&printer,
-                                   AccessSemantics accessKind){
-      switch (accessKind) {
-      case AccessSemantics::Ordinary:
-        return printer.OS;
-      case AccessSemantics::DirectToStorage:
-        return printer.OS << " direct_to_storage";
-      case AccessSemantics::DirectToAccessor:
-        return printer.OS << " direct_to_accessor";
-      case AccessSemantics::BehaviorInitialization:
-        return printer.OS << " behavior_init";
-      }
-      llvm_unreachable("bad access kind");
-    }
   };
 } // end anonymous namespace
 
@@ -208,13 +194,23 @@
   Params->print(OS);
 }
 
-//===----------------------------------------------------------------------===//
-//  Decl printing.
-//===----------------------------------------------------------------------===//
 
 static StringRef
-getStorageKindName(AbstractStorageDecl::StorageKindTy storageKind) {
-  switch (storageKind) {
+getSILFunctionTypeRepresentationString(SILFunctionType::Representation value) {
+  switch (value) {
+  case SILFunctionType::Representation::Thick: return "thick";
+  case SILFunctionType::Representation::Block: return "block";
+  case SILFunctionType::Representation::CFunctionPointer: return "c";
+  case SILFunctionType::Representation::Thin: return "thin";
+  case SILFunctionType::Representation::Method: return "method";
+  case SILFunctionType::Representation::ObjCMethod: return "objc_method";
+  case SILFunctionType::Representation::WitnessMethod: return "witness_method";
+  case SILFunctionType::Representation::Closure: return "closure";
+  }
+}
+static StringRef
+getAbstractStorageDeclKindString(AbstractStorageDecl::StorageKindTy value) {
+  switch (value) {
   case AbstractStorageDecl::Stored:
     return "stored";
   case AbstractStorageDecl::StoredWithTrivialAccessors:
@@ -234,8 +230,139 @@
   case AbstractStorageDecl::Computed:
     return "computed";
   }
-  llvm_unreachable("bad storage kind");
 }
+static StringRef getImportKindString(ImportKind value) {
+  switch (value) {
+  case ImportKind::Module: return "module";
+  case ImportKind::Type: return "type";
+  case ImportKind::Struct: return "struct";
+  case ImportKind::Class: return "class";
+  case ImportKind::Enum: return "enum";
+  case ImportKind::Protocol: return "protocol";
+  case ImportKind::Var: return "var";
+  case ImportKind::Func: return "func";
+  }
+}
+static StringRef getAccessibilityString(Accessibility value) {
+  switch (value) {
+  case Accessibility::Private: return "private";
+  case Accessibility::FilePrivate: return "fileprivate";
+  case Accessibility::Internal: return "internal";
+  case Accessibility::Public: return "public";
+  case Accessibility::Open: return "open";
+  }
+}
+static StringRef
+getForeignErrorConventionKindString(ForeignErrorConvention::Kind value) {
+  switch (value) {
+  case ForeignErrorConvention::ZeroResult: return "ZeroResult";
+  case ForeignErrorConvention::NonZeroResult: return "NonZeroResult";
+  case ForeignErrorConvention::ZeroPreservedResult: return "ZeroPreservedResult";
+  case ForeignErrorConvention::NilResult: return "NilResult";
+  case ForeignErrorConvention::NonNilError: return "NonNilError";
+  }
+}
+static StringRef getDefaultArgumentKindString(DefaultArgumentKind value) {
+  switch (value) {
+    case DefaultArgumentKind::None: return "none";
+    case DefaultArgumentKind::Column: return "#column";
+    case DefaultArgumentKind::DSOHandle: return "#dsohandle";
+    case DefaultArgumentKind::File: return "#file";
+    case DefaultArgumentKind::Function: return "#function";
+    case DefaultArgumentKind::Inherited: return "inherited";
+    case DefaultArgumentKind::Line: return "#line";
+    case DefaultArgumentKind::Nil: return "nil";
+    case DefaultArgumentKind::EmptyArray: return "[]";
+    case DefaultArgumentKind::EmptyDictionary: return "[:]";
+    case DefaultArgumentKind::Normal: return "normal";
+  }
+}
+static StringRef getAccessorKindString(AccessorKind value) {
+  switch (value) {
+    case AccessorKind::NotAccessor: return "notAccessor";
+    case AccessorKind::IsGetter: return "getter";
+    case AccessorKind::IsSetter: return "setter";
+    case AccessorKind::IsWillSet: return "willSet";
+    case AccessorKind::IsDidSet: return "didSet";
+    case AccessorKind::IsMaterializeForSet: return "materializeForSet";
+    case AccessorKind::IsAddressor: return "addressor";
+    case AccessorKind::IsMutableAddressor: return "mutableAddressor";
+  }
+}
+static StringRef getAccessKindString(AccessKind value) {
+  switch (value) {
+    case AccessKind::Read: return "read";
+    case AccessKind::Write: return "write";
+    case AccessKind::ReadWrite: return "readwrite";
+  }
+}
+static StringRef
+getMagicIdentifierLiteralExprKindString(MagicIdentifierLiteralExpr::Kind value) {
+  switch (value) {
+    case MagicIdentifierLiteralExpr::File: return "#file";
+    case MagicIdentifierLiteralExpr::Function: return "#function";
+    case MagicIdentifierLiteralExpr::Line: return "#line";
+    case MagicIdentifierLiteralExpr::Column: return "#column";
+    case MagicIdentifierLiteralExpr::DSOHandle: return "#dsohandle";
+  }
+}
+static StringRef
+getObjCSelectorExprKindString(ObjCSelectorExpr::ObjCSelectorKind value) {
+  switch (value) {
+    case ObjCSelectorExpr::Method: return "method";
+    case ObjCSelectorExpr::Getter: return "getter";
+    case ObjCSelectorExpr::Setter: return "setter";
+  }
+}
+static StringRef getAccessSemanticsString(AccessSemantics value) {
+  switch (value) {
+    case AccessSemantics::Ordinary: return "ordinary";
+    case AccessSemantics::DirectToStorage: return "direct_to_storage";
+    case AccessSemantics::DirectToAccessor: return "direct_to_accessor";
+    case AccessSemantics::BehaviorInitialization: return "behavior_init";
+  }
+}
+static StringRef getMetatypeRepresentationString(MetatypeRepresentation value) {
+  switch (value) {
+    case MetatypeRepresentation::Thin: return "thin";
+    case MetatypeRepresentation::Thick: return "thick";
+    case MetatypeRepresentation::ObjC: return "@objc";
+  }
+}
+static StringRef
+getStringLiteralExprEncodingString(StringLiteralExpr::Encoding value) {
+  switch (value) {
+    case StringLiteralExpr::UTF8: return "utf8";
+    case StringLiteralExpr::UTF16: return "utf16";
+    case StringLiteralExpr::OneUnicodeScalar: return "unicodeScalar";
+  }
+}
+static StringRef getCtorInitializerKindString(CtorInitializerKind value) {
+  switch (value) {
+    case CtorInitializerKind::Designated: return "designated";
+    case CtorInitializerKind::Convenience: return "convenience";
+    case CtorInitializerKind::ConvenienceFactory: return "convenience_factory";
+    case CtorInitializerKind::Factory: return "factory";
+  }
+}
+static StringRef getOptionalTypeKindString(OptionalTypeKind value) {
+  switch (value) {
+    case OTK_None: return "none";
+    case OTK_Optional: return "Optional";
+    case OTK_ImplicitlyUnwrappedOptional: return "ImplicitlyUnwrappedOptional";
+  }
+}
+static StringRef getAssociativityString(Associativity value) {
+  switch (value) {
+    case Associativity::None: return "none";
+    case Associativity::Left: return "left";
+    case Associativity::Right: return "right";
+  }
+}
+
+//===----------------------------------------------------------------------===//
+//  Decl printing.
+//===----------------------------------------------------------------------===//
 
 // Print a name.
 static void printName(raw_ostream &os, Identifier name) {
@@ -435,35 +562,8 @@
       if (ID->isExported())
         OS << " exported";
 
-      const char *KindString;
-      switch (ID->getImportKind()) {
-      case ImportKind::Module:
-        KindString = nullptr;
-        break;
-      case ImportKind::Type:
-        KindString = "type";
-        break;
-      case ImportKind::Struct:
-        KindString = "struct";
-        break;
-      case ImportKind::Class:
-        KindString = "class";
-        break;
-      case ImportKind::Enum:
-        KindString = "enum";
-        break;
-      case ImportKind::Protocol:
-        KindString = "protocol";
-        break;
-      case ImportKind::Var:
-        KindString = "var";
-        break;
-      case ImportKind::Func:
-        KindString = "func";
-        break;
-      }
-      if (KindString)
-        OS << " kind=" << KindString;
+      if (ID->getImportKind() != ImportKind::Module)
+        OS << " kind=" << getImportKindString(ID->getImportKind());
 
       OS << " '";
       interleave(ID->getFullAccessPath(),
@@ -571,24 +671,8 @@
       }
 
       if (VD->hasAccessibility()) {
-        PrintWithColorRAII(OS, AccessibilityColor) << " access=";
-        switch (VD->getFormalAccess()) {
-        case Accessibility::Private:
-          PrintWithColorRAII(OS, AccessibilityColor) << "private";
-          break;
-        case Accessibility::FilePrivate:
-          PrintWithColorRAII(OS, AccessibilityColor) << "fileprivate";
-          break;
-        case Accessibility::Internal:
-          PrintWithColorRAII(OS, AccessibilityColor) << "internal";
-          break;
-        case Accessibility::Public:
-          PrintWithColorRAII(OS, AccessibilityColor) << "public";
-          break;
-        case Accessibility::Open:
-          PrintWithColorRAII(OS, AccessibilityColor) << "open";
-          break;
-        }
+        PrintWithColorRAII(OS, AccessibilityColor) << " access="
+          << getAccessibilityString(VD->getFormalAccess());
       }
 
       if (auto Overridden = VD->getOverriddenDecl()) {
@@ -637,7 +721,8 @@
       if (VD->hasNonPatternBindingInit())
         PrintWithColorRAII(OS, DeclModifierColor) << " non_pattern_init";
       PrintWithColorRAII(OS, DeclModifierColor)
-        << " storage_kind=" << getStorageKindName(VD->getStorageKind());
+        << " storage_kind="
+        << getAbstractStorageDeclKindString(VD->getStorageKind());
       if (VD->getAttrs().hasAttribute<LazyAttr>())
         PrintWithColorRAII(OS, DeclModifierColor) << " lazy";
 
@@ -744,7 +829,8 @@
 
     void visitSubscriptDecl(SubscriptDecl *SD) {
       printCommon(SD, "subscript_decl");
-      OS << " storage_kind=" << getStorageKindName(SD->getStorageKind());
+      OS << " storage_kind="
+         << getAbstractStorageDeclKindString(SD->getStorageKind());
       printAccessors(SD);
       PrintWithColorRAII(OS, ParenthesisColor) << ')';
     }
@@ -758,30 +844,10 @@
 
       if (auto fec = D->getForeignErrorConvention()) {
         OS << " foreign_error=";
-        bool wantResultType = false;
-        switch (fec->getKind()) {
-        case ForeignErrorConvention::ZeroResult:
-          OS << "ZeroResult";
-          wantResultType = true;
-          break;
-
-        case ForeignErrorConvention::NonZeroResult:
-          OS << "NonZeroResult";
-          wantResultType = true;
-          break;
-
-        case ForeignErrorConvention::ZeroPreservedResult:
-          OS << "ZeroPreservedResult";
-          break;
-
-        case ForeignErrorConvention::NilResult:
-          OS << "NilResult";
-          break;
-
-        case ForeignErrorConvention::NonNilError:
-          OS << "NonNilError";
-          break;
-        }
+        OS << getForeignErrorConventionKindString(fec->getKind());
+        bool wantResultType = (
+          fec->getKind() == ForeignErrorConvention::ZeroResult ||
+          fec->getKind() == ForeignErrorConvention::NonZeroResult);
 
         OS << ((fec->isErrorOwned() == ForeignErrorConvention::IsOwned)
                 ? ",owned"
@@ -821,39 +887,9 @@
       if (P->isVariadic())
         OS << " variadic";
 
-      switch (P->getDefaultArgumentKind()) {
-      case DefaultArgumentKind::None: break;
-      case DefaultArgumentKind::Column:
-        printField("default_arg", "#column");
-        break;
-      case DefaultArgumentKind::DSOHandle:
-        printField("default_arg", "#dsohandle");
-        break;
-      case DefaultArgumentKind::File:
-        printField("default_arg", "#file");
-        break;
-      case DefaultArgumentKind::Function:
-        printField("default_arg", "#function");
-        break;
-      case DefaultArgumentKind::Inherited:
-        printField("default_arg", "inherited");
-        break;
-      case DefaultArgumentKind::Line:
-        printField("default_arg", "#line");
-        break;
-      case DefaultArgumentKind::Nil:
-        printField("default_arg", "nil");
-        break;
-      case DefaultArgumentKind::EmptyArray:
-        printField("default_arg", "[]");
-        break;
-      case DefaultArgumentKind::EmptyDictionary:
-        printField("default_arg", "[:]");
-        break;
-      case DefaultArgumentKind::Normal:
-        printField("default_arg", "normal");
-        break;
-      }
+      if (P->getDefaultArgumentKind() != DefaultArgumentKind::None)
+        printField("default_arg",
+                   getDefaultArgumentKindString(P->getDefaultArgumentKind()));
 
       if (auto init = P->getDefaultValue()) {
         OS << " expression=\n";
@@ -906,17 +942,7 @@
       if (FD->isStatic())
         OS << " type";
       if (auto *ASD = FD->getAccessorStorageDecl()) {
-        switch (FD->getAccessorKind()) {
-        case AccessorKind::NotAccessor: llvm_unreachable("Isn't an accessor?");
-        case AccessorKind::IsGetter: OS << " getter"; break;
-        case AccessorKind::IsSetter: OS << " setter"; break;
-        case AccessorKind::IsWillSet: OS << " willset"; break;
-        case AccessorKind::IsDidSet: OS << " didset"; break;
-        case AccessorKind::IsMaterializeForSet: OS << " materializeForSet"; break;
-        case AccessorKind::IsAddressor: OS << " addressor"; break;
-        case AccessorKind::IsMutableAddressor: OS << " mutableAddressor"; break;
-        }
-
+        OS << " " << getAccessorKindString(FD->getAccessorKind());
         OS << "_for=" << ASD->getFullName();
       }
 
@@ -938,38 +964,11 @@
       printCommonAFD(CD, "constructor_decl");
       if (CD->isRequired())
         PrintWithColorRAII(OS, DeclModifierColor) << " required";
-      switch (CD->getInitKind()) {
-      case CtorInitializerKind::Designated:
-        PrintWithColorRAII(OS, DeclModifierColor) << " designated";
-        break;
-
-      case CtorInitializerKind::Convenience:
-        PrintWithColorRAII(OS, DeclModifierColor) << " convenience";
-        break;
-
-      case CtorInitializerKind::ConvenienceFactory:
-        PrintWithColorRAII(OS, DeclModifierColor) << " convenience_factory";
-        break;
-
-      case CtorInitializerKind::Factory:
-        PrintWithColorRAII(OS, DeclModifierColor) << " factory";
-        break;
-      }
-
-      switch (CD->getFailability()) {
-      case OTK_None:
-        break;
-
-      case OTK_Optional:
-        PrintWithColorRAII(OS, DeclModifierColor) << " failable=Optional";
-        break;
-
-      case OTK_ImplicitlyUnwrappedOptional:
-        PrintWithColorRAII(OS, DeclModifierColor)
-          << " failable=ImplicitlyUnwrappedOptional";
-        break;
-      }
-
+      PrintWithColorRAII(OS, DeclModifierColor) << " "
+        << getCtorInitializerKindString(CD->getInitKind());
+      if (CD->getFailability() != OTK_None)
+        PrintWithColorRAII(OS, DeclModifierColor) << " failable="
+          << getOptionalTypeKindString(CD->getFailability());
       printAbstractFunctionDecl(CD);
       PrintWithColorRAII(OS, ParenthesisColor) << ')';
     }
@@ -1022,12 +1021,8 @@
       OS << PGD->getName() << "\n";
 
       OS.indent(Indent+2);
-      OS << "associativity ";
-      switch (PGD->getAssociativity()) {
-      case Associativity::None: OS << "none\n"; break;
-      case Associativity::Left: OS << "left\n"; break;
-      case Associativity::Right: OS << "right\n"; break;
-      }
+      OS << "associativity "
+         << getAssociativityString(PGD->getAssociativity()) << "\n";
 
       OS.indent(Indent+2);
       OS << "assignment " << (PGD->isAssignment() ? "true" : "false");
@@ -1610,15 +1605,6 @@
     conf.dump(OS, Indent + 2);
   }
 
-  static const char *getAccessKindString(AccessKind kind) {
-    switch (kind) {
-    case AccessKind::Read: return "read";
-    case AccessKind::Write: return "write";
-    case AccessKind::ReadWrite: return "readwrite";
-    }
-    llvm_unreachable("bad access kind");
-  }
-
   raw_ostream &printCommon(Expr *E, const char *C) {
     OS.indent(Indent);
     PrintWithColorRAII(OS, ParenthesisColor) << '(';
@@ -1697,25 +1683,10 @@
     PrintWithColorRAII(OS, ParenthesisColor) << ')';
   }
 
-  void printStringEncoding(StringLiteralExpr::Encoding encoding) {
-    switch (encoding) {
-    case StringLiteralExpr::UTF8:
-      PrintWithColorRAII(OS, LiteralValueColor) << "utf8";
-      break;
-    case StringLiteralExpr::UTF16:
-      PrintWithColorRAII(OS, LiteralValueColor) << "utf16";
-      break;
-    case StringLiteralExpr::OneUnicodeScalar:
-      PrintWithColorRAII(OS, LiteralValueColor) << "unicodeScalar";
-      break;
-    }
-  }
-
   void visitStringLiteralExpr(StringLiteralExpr *E) {
     printCommon(E, "string_literal_expr");
-    PrintWithColorRAII(OS, LiteralValueColor) << " encoding=";
-    printStringEncoding(E->getEncoding());
-    PrintWithColorRAII(OS, LiteralValueColor)
+    PrintWithColorRAII(OS, LiteralValueColor) << " encoding="
+      << getStringLiteralExprEncodingString(E->getEncoding())
       << " value=" << QuotedString(E->getValue())
       << " builtin_initializer=";
     E->getBuiltinInitializer().dump(
@@ -1733,25 +1704,13 @@
     PrintWithColorRAII(OS, ParenthesisColor) << ')';
   }
   void visitMagicIdentifierLiteralExpr(MagicIdentifierLiteralExpr *E) {
-    printCommon(E, "magic_identifier_literal_expr") << " kind=";
-    switch (E->getKind()) {
-    case MagicIdentifierLiteralExpr::File:
-      OS << "#file encoding=";
-      printStringEncoding(E->getStringEncoding());
-      break;
-
-    case MagicIdentifierLiteralExpr::Function:
-      OS << "#function encoding=";
-      printStringEncoding(E->getStringEncoding());
-      break;
-        
-    case MagicIdentifierLiteralExpr::Line:  OS << "#line"; break;
-    case MagicIdentifierLiteralExpr::Column:  OS << "#column"; break;
-    case MagicIdentifierLiteralExpr::DSOHandle:  OS << "#dsohandle"; break;
-    }
+    printCommon(E, "magic_identifier_literal_expr")
+      << " kind=" << getMagicIdentifierLiteralExprKindString(E->getKind());
 
     if (E->isString()) {
-      OS << " builtin_initializer=";
+      OS << " encoding="
+         << getStringLiteralExprEncodingString(E->getStringEncoding())
+         << " builtin_initializer=";
       E->getBuiltinInitializer().dump(OS);
       OS << " initializer=";
       E->getInitializer().dump(OS);
@@ -1776,7 +1735,9 @@
     printCommon(E, "declref_expr");
     PrintWithColorRAII(OS, DeclColor) << " decl=";
     E->getDeclRef().dump(PrintWithColorRAII(OS, DeclColor).getOS());
-    PrintWithColorRAII(OS, AccessibilityColor) << E->getAccessSemantics();
+    if (E->getAccessSemantics() != AccessSemantics::Ordinary)
+      PrintWithColorRAII(OS, AccessibilityColor)
+        << " " << getAccessSemanticsString(E->getAccessSemantics());
     PrintWithColorRAII(OS, ExprModifierColor)
       << " function_ref=" << getFunctionRefKindStr(E->getFunctionRefKind())
       << " specialized=" << (E->isSpecialized()? "yes" : "no");
@@ -1845,8 +1806,9 @@
     printCommon(E, "member_ref_expr")
       << " decl=";
     E->getMember().dump(OS);
-
-    PrintWithColorRAII(OS, AccessibilityColor) << E->getAccessSemantics();
+    if (E->getAccessSemantics() != AccessSemantics::Ordinary)
+      PrintWithColorRAII(OS, AccessibilityColor)
+        << " " << getAccessSemanticsString(E->getAccessSemantics());
     if (E->isSuper())
       OS << " super";
 
@@ -1929,7 +1891,9 @@
   }
   void visitSubscriptExpr(SubscriptExpr *E) {
     printCommon(E, "subscript_expr");
-    PrintWithColorRAII(OS, AccessibilityColor) << E->getAccessSemantics();
+    if (E->getAccessSemantics() != AccessSemantics::Ordinary)
+      PrintWithColorRAII(OS, AccessibilityColor)
+        << " " << getAccessSemanticsString(E->getAccessSemantics());
     if (E->isSuper())
       OS << " super";
     if (E->hasDecl()) {
@@ -2388,18 +2352,7 @@
   }
   void visitObjCSelectorExpr(ObjCSelectorExpr *E) {
     printCommon(E, "objc_selector_expr");
-    OS << " kind=";
-    switch (E->getSelectorKind()) {
-      case ObjCSelectorExpr::Method:
-        OS << "method";
-        break;
-      case ObjCSelectorExpr::Getter:
-        OS << "getter";
-        break;
-      case ObjCSelectorExpr::Setter:
-        OS << "setter";
-        break;
-    }
+    OS << " kind=" << getObjCSelectorExprKindString(E->getSelectorKind());
     OS << " decl=";
     if (auto method = E->getMethod()) {
       method->dumpRef(OS);
@@ -2743,12 +2696,9 @@
     }
 
     void dumpParameterFlags(ParameterTypeFlags paramFlags) {
-      if (paramFlags.isVariadic())
-        printFlag("vararg");
-      if (paramFlags.isAutoClosure())
-        printFlag("autoclosure");
-      if (paramFlags.isEscaping())
-        printFlag("escaping");
+      printFlag(paramFlags.isVariadic(), "vararg");
+      printFlag(paramFlags.isAutoClosure(), "autoclosure");
+      printFlag(paramFlags.isEscaping(), "escaping");
     }
 
   public:
@@ -2893,25 +2843,10 @@
       OS << ")";
     }
 
-    void printMetatypeRepresentation(MetatypeRepresentation representation) {
-      OS << " ";
-      switch (representation) {
-      case MetatypeRepresentation::Thin:
-        OS << "@thin";
-        break;
-      case MetatypeRepresentation::Thick:
-        OS << "@thick";
-        break;
-      case MetatypeRepresentation::ObjC:
-        OS << "@objc";
-        break;
-      }
-    }
-
     void visitMetatypeType(MetatypeType *T, StringRef label) {
       printCommon(T, label, "metatype_type");
       if (T->hasRepresentation())
-        printMetatypeRepresentation(T->getRepresentation());
+        OS << " " << getMetatypeRepresentationString(T->getRepresentation());
       printRec(T->getInstanceType());
       OS << ")";
     }
@@ -2920,7 +2855,7 @@
                                       StringRef label) {
       printCommon(T, label, "existential_metatype_type");
       if (T->hasRepresentation())
-        printMetatypeRepresentation(T->getRepresentation());
+        OS << " " << getMetatypeRepresentationString(T->getRepresentation());
       printRec(T->getInstanceType());
       OS << ")";
     }
@@ -3008,39 +2943,12 @@
     void printAnyFunctionTypeCommon(AnyFunctionType *T, StringRef label,
                                     StringRef name) {
       printCommon(T, label, name);
+      SILFunctionType::Representation representation =
+        T->getExtInfo().getSILRepresentation();
 
-      switch (T->getExtInfo().getSILRepresentation()) {
-      case SILFunctionType::Representation::Thick:
-        break;
-
-      case SILFunctionType::Representation::Block:
-        printField("representation", "block");
-        break;
-
-      case SILFunctionType::Representation::CFunctionPointer:
-        printField("representation", "c");
-        break;
-
-      case SILFunctionType::Representation::Thin:
-        printField("representation", "thin");
-        break;
-
-      case SILFunctionType::Representation::Method:
-        printField("representation", "method");
-        break;
-        
-      case SILFunctionType::Representation::ObjCMethod:
-        printField("representation", "objc_method");
-        break;
-        
-      case SILFunctionType::Representation::WitnessMethod:
-        printField("representation", "witness_method");
-        break;
-
-      case SILFunctionType::Representation::Closure:
-        printField("representation", "closure");
-        break;
-      }
+      if (representation != SILFunctionType::Representation::Thick)
+        printField("representation",
+                   getSILFunctionTypeRepresentationString(representation));
 
       printFlag(T->isAutoClosure(), "autoclosure");
       printFlag(!T->isNoEscape(), "escaping");
diff --git a/lib/AST/Decl.cpp b/lib/AST/Decl.cpp
index e491cc1..b6eeb2b 100644
--- a/lib/AST/Decl.cpp
+++ b/lib/AST/Decl.cpp
@@ -496,7 +496,7 @@
                          SourceLoc LAngleLoc,
                          ArrayRef<GenericTypeParamDecl *> Params,
                          SourceLoc WhereLoc,
-                         MutableArrayRef<RequirementRepr> Requirements,
+                         ArrayRef<RequirementRepr> Requirements,
                          SourceLoc RAngleLoc) {
   unsigned Size = totalSizeToAlloc<GenericTypeParamDecl *>(Params.size());
   void *Mem = Context.Allocate(Size, alignof(GenericParamList));
@@ -506,6 +506,66 @@
                                     RAngleLoc);
 }
 
+GenericParamList *
+GenericParamList::clone(DeclContext *dc) const {
+  auto &ctx = dc->getASTContext();
+  SmallVector<GenericTypeParamDecl *, 2> params;
+  for (auto param : getParams()) {
+    auto *newParam = new (ctx) GenericTypeParamDecl(
+      dc, param->getName(), param->getNameLoc(),
+      GenericTypeParamDecl::InvalidDepth,
+      param->getIndex());
+    params.push_back(newParam);
+
+    SmallVector<TypeLoc, 2> inherited;
+    for (auto loc : param->getInherited())
+      inherited.push_back(loc.clone(ctx));
+    newParam->setInherited(ctx.AllocateCopy(inherited));
+  }
+
+  SmallVector<RequirementRepr, 2> requirements;
+  for (auto reqt : getRequirements()) {
+    switch (reqt.getKind()) {
+    case RequirementReprKind::TypeConstraint: {
+      auto first = reqt.getSubjectLoc();
+      auto second = reqt.getConstraintLoc();
+      reqt = RequirementRepr::getTypeConstraint(
+          first.clone(ctx),
+          reqt.getColonLoc(),
+          second.clone(ctx));
+      break;
+    }
+    case RequirementReprKind::SameType: {
+      auto first = reqt.getFirstTypeLoc();
+      auto second = reqt.getSecondTypeLoc();
+      reqt = RequirementRepr::getSameType(
+          first.clone(ctx),
+          reqt.getEqualLoc(),
+          second.clone(ctx));
+      break;
+    }
+    case RequirementReprKind::LayoutConstraint: {
+      auto first = reqt.getSubjectLoc();
+      auto layout = reqt.getLayoutConstraintLoc();
+      reqt = RequirementRepr::getLayoutConstraint(
+          first.clone(ctx),
+          reqt.getColonLoc(),
+          layout);
+      break;
+    }
+    }
+
+    requirements.push_back(reqt);
+  }
+
+  return GenericParamList::create(ctx,
+                                  getLAngleLoc(),
+                                  params,
+                                  getWhereLoc(),
+                                  requirements,
+                                  getRAngleLoc());
+}
+
 void GenericParamList::addTrailingWhereClause(
        ASTContext &ctx,
        SourceLoc trailingWhereLoc,
@@ -3812,7 +3872,7 @@
     DefaultValueAndIsVariadic(nullptr, PD->DefaultValueAndIsVariadic.getInt()),
     IsTypeLocImplicit(PD->IsTypeLocImplicit),
     defaultArgumentKind(PD->defaultArgumentKind) {
-  typeLoc = PD->getTypeLoc();
+  typeLoc = PD->getTypeLoc().clone(PD->getASTContext());
   if (PD->hasInterfaceType())
     setInterfaceType(PD->getInterfaceType());
 }
diff --git a/lib/AST/GenericSignatureBuilder.cpp b/lib/AST/GenericSignatureBuilder.cpp
index 3081c06..30e0cba 100644
--- a/lib/AST/GenericSignatureBuilder.cpp
+++ b/lib/AST/GenericSignatureBuilder.cpp
@@ -343,6 +343,7 @@
 
 void RequirementSource::dump() const {
   dump(llvm::errs(), nullptr, 0);
+  llvm::errs() << "\n";
 }
 
 /// Dump the constraint source.
@@ -351,7 +352,6 @@
   // FIXME: Implement for real, so we actually dump the structure.
   out.indent(indent);
   print(out, srcMgr);
-  out.flush();
 }
 
 void RequirementSource::print() const {
@@ -1916,32 +1916,35 @@
   // Make sure the concrete type fulfills the requirements on the archetype.
   // FIXME: Move later...
   DenseMap<ProtocolDecl *, ProtocolConformanceRef> conformances;
-  if (!Concrete->is<ArchetypeType>()) {
-    CanType depTy = rep->getDependentType({ }, /*allowUnresolved=*/true)
-                      ->getCanonicalType();
-    for (auto &conforms : rep->getConformsTo()) {
-      auto protocol = conforms.first;
-      auto conformance =
-        getLookupConformanceFn()(depTy, Concrete,
-                                 protocol->getDeclaredInterfaceType()
-                                   ->castTo<ProtocolType>());
-      if (!conformance) {
-        Diags.diagnose(Source->getLoc(),
-                       diag::requires_generic_param_same_type_does_not_conform,
-                       Concrete, protocol->getName());
-        return true;
-      }
-
-      conformances.insert({protocol, *conformance});
-
-      // Update the requirement source now that we know it's concrete.
-      // FIXME: Bad concrete source info.
-      auto concreteSource = Source->viaConcrete(*this,
-                                                conformance->getConcrete());
-      updateRequirementSource(conforms.second, concreteSource);
+  CanType depTy = rep->getDependentType({ }, /*allowUnresolved=*/true)
+                    ->getCanonicalType();
+  for (auto &conforms : rep->getConformsTo()) {
+    auto protocol = conforms.first;
+    auto conformance =
+      getLookupConformanceFn()(depTy, Concrete,
+                               protocol->getDeclaredInterfaceType()
+                                 ->castTo<ProtocolType>());
+    if (!conformance) {
+      Diags.diagnose(Source->getLoc(),
+                     diag::requires_generic_param_same_type_does_not_conform,
+                     Concrete, protocol->getName());
+      return true;
     }
+
+    conformances.insert({protocol, *conformance});
+
+    // Abstract conformances are acceptable for existential types.
+    assert(conformance->isConcrete() || Concrete->isExistentialType());
+
+    // Update the requirement source now that we know it's concrete.
+    // FIXME: Bad concrete source info.
+    auto concreteSource = Source->viaConcrete(*this,
+                                              conformance->isConcrete()
+                                                ? conformance->getConcrete()
+                                                : nullptr);
+    updateRequirementSource(conforms.second, concreteSource);
   }
-  
+
   // Record the requirement.
   rep->ConcreteType = Concrete;
 
diff --git a/lib/AST/NameLookup.cpp b/lib/AST/NameLookup.cpp
index 0d76213..96f27d1 100644
--- a/lib/AST/NameLookup.cpp
+++ b/lib/AST/NameLookup.cpp
@@ -980,9 +980,6 @@
   /// Create a new member lookup table.
   explicit MemberLookupTable(ASTContext &ctx);
 
-  /// Destroy the lookup table.
-  void destroy();
-
   /// Update a lookup table with members from newly-added extensions.
   void updateLookupTable(NominalTypeDecl *nominal);
 
@@ -1039,10 +1036,6 @@
                                 StoredObjCMethods>
 {
 public:
-  void destroy() {
-    this->~ObjCMethodLookupTable();
-  }
-
   // Only allow allocation of member lookup tables using the allocator in
   // ASTContext or by doing a placement new.
   void *operator new(size_t Bytes, ASTContext &C,
@@ -1059,7 +1052,7 @@
   // Register a cleanup with the ASTContext to call the lookup table
   // destructor.
   ctx.addCleanup([this]() {
-    this->destroy();
+    this->~MemberLookupTable();
   });
 }
 
@@ -1127,10 +1120,6 @@
   }
 }
 
-void MemberLookupTable::destroy() {
-  this->~MemberLookupTable();
-}
-
 void NominalTypeDecl::addedMember(Decl *member) {
   // If we have a lookup table, add the new member to it.
   if (LookupTable.getPointer()) {
@@ -1218,7 +1207,7 @@
   // Register a cleanup with the ASTContext to call the lookup table
   // destructor.
   ctx.addCleanup([this]() {
-    this->ObjCMethodLookup->destroy();
+    this->ObjCMethodLookup->~ObjCMethodLookupTable();
   });
 }
 
diff --git a/lib/AST/Type.cpp b/lib/AST/Type.cpp
index 1a4288d..521fcb2 100644
--- a/lib/AST/Type.cpp
+++ b/lib/AST/Type.cpp
@@ -1181,7 +1181,8 @@
   case TypeKind::GenericTypeParam: {
     GenericTypeParamType *gp = cast<GenericTypeParamType>(this);
     auto gpDecl = gp->getDecl();
-    assert(gpDecl->getDepth() != 0xFFFF && "parameter hasn't been validated");
+    assert(gpDecl->getDepth() != GenericTypeParamDecl::InvalidDepth &&
+           "parameter hasn't been validated");
     Result = GenericTypeParamType::get(gpDecl->getDepth(), gpDecl->getIndex(),
                                        gpDecl->getASTContext());
     break;
diff --git a/lib/AST/USRGeneration.cpp b/lib/AST/USRGeneration.cpp
index a67f0ea..d568648 100644
--- a/lib/AST/USRGeneration.cpp
+++ b/lib/AST/USRGeneration.cpp
@@ -210,31 +210,10 @@
   if (isa<ParamDecl>(VD) && isa<DestructorDecl>(VD->getDeclContext()))
     return true;
 
-  std::string Old = getUSRSpacePrefix().str();
-  Mangler Mangler;
-
-  Mangler.bindGenericParameters(VD->getDeclContext());
-
-  if (auto Ctor = dyn_cast<ConstructorDecl>(VD)) {
-    Mangler.mangleConstructorEntity(Ctor, /*isAllocating=*/false,
-                                    /*uncurryingLevel=*/0);
-  } else if (auto Dtor = dyn_cast<DestructorDecl>(VD)) {
-    Mangler.mangleDestructorEntity(Dtor, /*isDeallocating=*/false);
-  } else if (auto NTD = dyn_cast<NominalTypeDecl>(VD)) {
-    Mangler.mangleNominalType(NTD);
-  } else if (isa<TypeAliasDecl>(VD) || isa<AssociatedTypeDecl>(VD)) {
-    Mangler.mangleContextOf(VD);
-    Mangler.mangleDeclName(VD);
-  } else {
-    Mangler.mangleEntity(VD, /*uncurryingLevel=*/0);
-  }
-
-  Old += Mangler.finalize();
-
   NewMangling::ASTMangler NewMangler;
-  std::string New = NewMangler.mangleDeclAsUSR(VD, getUSRSpacePrefix());
+  std::string Mangled = NewMangler.mangleDeclAsUSR(VD, getUSRSpacePrefix());
 
-  OS << NewMangling::selectMangling(Old, New);
+  OS << Mangled;
 
   return false;
 }
@@ -260,16 +239,11 @@
     return printObjCUSRForAccessor(SD, AccKind, OS);
   }
 
-  std::string Old = getUSRSpacePrefix().str();
-  Mangler Mangler;
-  Mangler.mangleAccessorEntity(AccKind, AddressorKind::NotAddressor, SD);
-  Old += Mangler.finalize();
-
   NewMangling::ASTMangler NewMangler;
-  std::string New = NewMangler.mangleAccessorEntityAsUSR(AccKind,
+  std::string Mangled = NewMangler.mangleAccessorEntityAsUSR(AccKind,
                           AddressorKind::NotAddressor, SD, getUSRSpacePrefix());
 
-  OS << NewMangling::selectMangling(Old, New);
+  OS << Mangled;
 
   return false;
 }
diff --git a/lib/IDE/TypeReconstruction.cpp b/lib/IDE/TypeReconstruction.cpp
index 5386cd6..e34f50d 100644
--- a/lib/IDE/TypeReconstruction.cpp
+++ b/lib/IDE/TypeReconstruction.cpp
@@ -2139,11 +2139,7 @@
   // This relies on USR generation being very close to symbol mangling; if we
   // need to support entities with customized USRs (e.g. extensions), we will
   // need to do something smarter here.
-#ifdef USE_NEW_MANGLING
   mangledName.replace(0, 2, MANGLING_PREFIX_STR);
-#else
-  mangledName.replace(0, 2, "_T");
-#endif
 
   return getDeclFromMangledSymbolName(context, mangledName, error);
 }
diff --git a/lib/Parse/ParseDecl.cpp b/lib/Parse/ParseDecl.cpp
index 5ee406f..0b449e6 100644
--- a/lib/Parse/ParseDecl.cpp
+++ b/lib/Parse/ParseDecl.cpp
@@ -3270,8 +3270,10 @@
 /// This function creates an accessor function (with no body) for a computed
 /// property or subscript.
 static FuncDecl *createAccessorFunc(SourceLoc DeclLoc, ParameterList *param,
+                                    GenericParamList *GenericParams,
+                                    ParameterList *Indices,
                                     TypeLoc ElementTy,
-                                    ParameterList *Indices, SourceLoc StaticLoc,
+                                    SourceLoc StaticLoc,
                                     Parser::ParseDeclOptions Flags,
                                     AccessorKind Kind,
                                     AddressorKind addressorKind,
@@ -3399,8 +3401,11 @@
                              /*FIXME FuncLoc=*/DeclLoc, Identifier(),
                              /*NameLoc=*/DeclLoc, /*Throws=*/false,
                              /*ThrowsLoc=*/SourceLoc(), AccessorKeywordLoc,
-                             /*GenericParams=*/nullptr,
-                             Params, ReturnType, P->CurDeclContext);
+                             (GenericParams
+                              ? GenericParams->clone(P->CurDeclContext)
+                              : nullptr),
+                             Params, ReturnType,
+                             P->CurDeclContext);
 
   // Non-static set/willSet/didSet/materializeForSet/mutableAddress
   // default to mutating.  get/address default to
@@ -3644,7 +3649,9 @@
 /// \brief Parse a get-set clause, optionally containing a getter, setter,
 /// willSet, and/or didSet clauses.  'Indices' is a paren or tuple pattern,
 /// specifying the index list for a subscript.
-bool Parser::parseGetSetImpl(ParseDeclOptions Flags, ParameterList *Indices,
+bool Parser::parseGetSetImpl(ParseDeclOptions Flags,
+                             GenericParamList *GenericParams,
+                             ParameterList *Indices,
                              TypeLoc ElementTy, ParsedAccessors &accessors,
                              SourceLoc &LastValidLoc, SourceLoc StaticLoc,
                              SourceLoc VarLBLoc,
@@ -3718,7 +3725,8 @@
         = parseOptionalAccessorArgument(Loc, ElementTy, *this, Kind);
 
       // Set up a function declaration.
-      TheDecl = createAccessorFunc(Loc, ValueNameParams, ElementTy, Indices,
+      TheDecl = createAccessorFunc(Loc, ValueNameParams,
+                                   GenericParams, Indices, ElementTy,
                                    StaticLoc, Flags, Kind, addressorKind, this,
                                    AccessorKeywordLoc);
       TheDecl->getAttrs() = Attributes;
@@ -3849,7 +3857,8 @@
     }
 
     // Set up a function declaration.
-    TheDecl = createAccessorFunc(Loc, ValueNamePattern, ElementTy, Indices,
+    TheDecl = createAccessorFunc(Loc, ValueNamePattern,
+                                 GenericParams, Indices, ElementTy,
                                  StaticLoc, Flags, Kind, addressorKind, this,
                                  AccessorKeywordLoc);
     TheDecl->getAttrs() = Attributes;
@@ -3862,6 +3871,10 @@
       for (auto PL : TheDecl->getParameterLists())
         addParametersToScope(PL);
 
+      if (TheDecl->isGeneric())
+        for (auto *GP : TheDecl->getGenericParams()->getParams())
+          addToScope(GP);
+
       // Establish the new context.
       ParseFunctionBody CC(*this, TheDecl);
 
@@ -3896,15 +3909,17 @@
   return false;
 }
 
-bool Parser::parseGetSet(ParseDeclOptions Flags, ParameterList *Indices,
+bool Parser::parseGetSet(ParseDeclOptions Flags,
+                         GenericParamList *GenericParams,
+                         ParameterList *Indices,
                          TypeLoc ElementTy, ParsedAccessors &accessors,
                          SourceLoc StaticLoc,
                          SmallVectorImpl<Decl *> &Decls) {
   accessors.LBLoc = consumeToken(tok::l_brace);
   SourceLoc LastValidLoc = accessors.LBLoc;
-  bool Invalid = parseGetSetImpl(Flags, Indices, ElementTy, accessors,
-                                 LastValidLoc, StaticLoc, accessors.LBLoc,
-                                 Decls);
+  bool Invalid = parseGetSetImpl(Flags, GenericParams, Indices, ElementTy,
+                                 accessors, LastValidLoc, StaticLoc,
+                                 accessors.LBLoc, Decls);
 
   // Parse the final '}'.
   if (Invalid)
@@ -3990,7 +4005,8 @@
 
   // Parse getter and setter.
   ParsedAccessors accessors;
-  if (parseGetSet(Flags, /*Indices=*/nullptr, TyLoc, accessors, StaticLoc,
+  if (parseGetSet(Flags, /*GenericParams=*/nullptr,
+                  /*Indices=*/nullptr, TyLoc, accessors, StaticLoc,
                   Decls))
     Invalid = true;
 
@@ -4058,11 +4074,16 @@
     }
   };
 
+  GenericParamList *genericParams = nullptr;
+  if (auto *subscript = dyn_cast<SubscriptDecl>(storage))
+    genericParams = subscript->getGenericParams();
+
   // Create an implicit accessor declaration.
   auto createImplicitAccessor =
   [&](AccessorKind kind, AddressorKind addressorKind,
       ParameterList *argList) -> FuncDecl* {
-    auto accessor = createAccessorFunc(SourceLoc(), argList, elementTy, indices,
+    auto accessor = createAccessorFunc(SourceLoc(), argList,
+                                       genericParams, indices, elementTy,
                                        staticLoc, flags, kind, addressorKind,
                                        &P, SourceLoc());
     accessor->setImplicit();
@@ -5409,7 +5430,7 @@
 ///   decl-subscript:
 ///     subscript-head get-set
 ///   subscript-head
-///     'subscript' attribute-list parameter-clause '->' type
+///     attribute-list? 'subscript' parameter-clause '->' type
 /// \endverbatim
 ParserResult<SubscriptDecl>
 Parser::parseDeclSubscript(ParseDeclOptions Flags,
@@ -5418,6 +5439,20 @@
   ParserStatus Status;
   SourceLoc SubscriptLoc = consumeToken(tok::kw_subscript);
 
+  // Parse the generic-params, if present.
+  Optional<Scope> GenericsScope;
+  GenericsScope.emplace(this, ScopeKind::Generics);
+  GenericParamList *GenericParams;
+  bool GPHasCodeCompletion = false;
+
+  auto Result = maybeParseGenericParams();
+  GenericParams = Result.getPtrOrNull();
+  GPHasCodeCompletion |= Result.hasCodeCompletion();
+
+  if (GPHasCodeCompletion && !CodeCompletion)
+    return makeParserCodeCompletionStatus();
+
+  // Parse the parameter list.
   SmallVector<Identifier, 4> argumentNames;
   ParserResult<ParameterList> Indices
     = parseSingleParameterClause(ParameterContextKind::Subscript,
@@ -5438,19 +5473,32 @@
   if (ElementTy.isNull() || ElementTy.hasCodeCompletion())
     return ParserStatus(ElementTy);
 
-  
+  diagnoseWhereClauseInGenericParamList(GenericParams);
+
+  // Parse a 'where' clause if present, adding it to our GenericParamList.
+  if (Tok.is(tok::kw_where)) {
+    auto whereStatus = parseFreestandingGenericWhereClause(GenericParams);
+    if (whereStatus.shouldStopParsing())
+      return whereStatus;
+  }
+
   // Build an AST for the subscript declaration.
   DeclName name = DeclName(Context, Context.Id_subscript, argumentNames);
   auto *Subscript = new (Context) SubscriptDecl(name,
                                                 SubscriptLoc, Indices.get(),
                                                 ArrowLoc, ElementTy.get(),
                                                 CurDeclContext,
-                                                /*GenericParams=*/nullptr);
+                                                GenericParams);
   Subscript->getAttrs() = Attributes;
-  
+
+  // Code completion for the generic type params.
+  //
+  // FIXME: What is this?
+  if (GPHasCodeCompletion)
+    CodeCompletion->setDelayedParsedDecl(Subscript);
+
   Decls.push_back(Subscript);
 
-  
   // '{'
   // Parse getter and setter.
   ParsedAccessors accessors;
@@ -5464,7 +5512,8 @@
       diagnose(Tok, diag::expected_lbrace_subscript);
     Status.setIsParseError();
   } else {
-    if (parseGetSet(Flags, Indices.get(), ElementTy.get(),
+    if (parseGetSet(Flags, GenericParams,
+                    Indices.get(), ElementTy.get(),
                     accessors, /*StaticLoc=*/SourceLoc(), Decls))
       Status.setIsParseError();
   }
diff --git a/lib/Parse/ParseGeneric.cpp b/lib/Parse/ParseGeneric.cpp
index 1f9da27..fcf8428 100644
--- a/lib/Parse/ParseGeneric.cpp
+++ b/lib/Parse/ParseGeneric.cpp
@@ -94,10 +94,10 @@
     // We always create generic type parameters with a depth of zero.
     // Semantic analysis fills in the depth when it processes the generic
     // parameter list.
-    auto Param = new (Context) GenericTypeParamDecl(CurDeclContext, Name,
-                                                    NameLoc,
-                                                    /*Bogus depth=*/0xFFFF,
-                                                    GenericParams.size());
+    auto Param = new (Context) GenericTypeParamDecl(
+        CurDeclContext, Name, NameLoc,
+        GenericTypeParamDecl::InvalidDepth,
+        GenericParams.size());
     if (!Inherited.empty())
       Param->setInherited(Context.AllocateCopy(Inherited));
     GenericParams.push_back(Param);
diff --git a/lib/SIL/SILOwnershipVerifier.cpp b/lib/SIL/SILOwnershipVerifier.cpp
index 6f31804..b8c1344 100644
--- a/lib/SIL/SILOwnershipVerifier.cpp
+++ b/lib/SIL/SILOwnershipVerifier.cpp
@@ -382,6 +382,7 @@
 CONSTANT_OWNERSHIP_INST(Owned, true, StrongUnpin)
 CONSTANT_OWNERSHIP_INST(Owned, true, UnownedRelease)
 CONSTANT_OWNERSHIP_INST(Owned, true, InitExistentialRef)
+CONSTANT_OWNERSHIP_INST(Owned, true, OpenExistentialOpaque)
 CONSTANT_OWNERSHIP_INST(Trivial, false, AddressToPointer)
 CONSTANT_OWNERSHIP_INST(Trivial, false, BindMemory)
 CONSTANT_OWNERSHIP_INST(Trivial, false, CheckedCastAddrBranch)
@@ -396,7 +397,6 @@
 CONSTANT_OWNERSHIP_INST(Trivial, false, InitBlockStorageHeader)
 CONSTANT_OWNERSHIP_INST(Trivial, false, InitEnumDataAddr)
 CONSTANT_OWNERSHIP_INST(Trivial, false, InitExistentialAddr)
-CONSTANT_OWNERSHIP_INST(Trivial, false, InitExistentialOpaque)
 CONSTANT_OWNERSHIP_INST(Trivial, false, InitExistentialMetatype)
 CONSTANT_OWNERSHIP_INST(Trivial, false, InjectEnumAddr)
 CONSTANT_OWNERSHIP_INST(Trivial, false, IsNonnull)
@@ -412,7 +412,6 @@
 CONSTANT_OWNERSHIP_INST(Trivial, false, ObjCMetatypeToObject)
 CONSTANT_OWNERSHIP_INST(Trivial, false, ObjCToThickMetatype)
 CONSTANT_OWNERSHIP_INST(Trivial, false, OpenExistentialAddr)
-CONSTANT_OWNERSHIP_INST(Trivial, false, OpenExistentialOpaque)
 CONSTANT_OWNERSHIP_INST(Trivial, false, OpenExistentialMetatype)
 CONSTANT_OWNERSHIP_INST(Trivial, false, PointerToAddress)
 CONSTANT_OWNERSHIP_INST(Trivial, false, PointerToThinFunction)
@@ -457,6 +456,7 @@
   }
 CONSTANT_OR_TRIVIAL_OWNERSHIP_INST(Owned, true, CheckedCastBranch)
 CONSTANT_OR_TRIVIAL_OWNERSHIP_INST(Owned, true, SwitchEnum)
+CONSTANT_OR_TRIVIAL_OWNERSHIP_INST(Owned, true, InitExistentialOpaque)
 #undef CONSTANT_OR_TRIVIAL_OWNERSHIP_INST
 
 #define ACCEPTS_ANY_OWNERSHIP_INST(INST)                                       \
diff --git a/lib/SIL/SILValue.cpp b/lib/SIL/SILValue.cpp
index 6c3575d..7de3009 100644
--- a/lib/SIL/SILValue.cpp
+++ b/lib/SIL/SILValue.cpp
@@ -200,6 +200,7 @@
 CONSTANT_OWNERSHIP_INST(Owned, PartialApply)
 CONSTANT_OWNERSHIP_INST(Owned, StrongPin)
 CONSTANT_OWNERSHIP_INST(Owned, ThinToThickFunction)
+CONSTANT_OWNERSHIP_INST(Owned, InitExistentialOpaque)
 
 // One would think that these /should/ be unowned. In truth they are owned since
 // objc metatypes do not go through the retain/release fast path. In their
@@ -227,7 +228,6 @@
 CONSTANT_OWNERSHIP_INST(Trivial, InitBlockStorageHeader)
 CONSTANT_OWNERSHIP_INST(Trivial, InitEnumDataAddr)
 CONSTANT_OWNERSHIP_INST(Trivial, InitExistentialAddr)
-CONSTANT_OWNERSHIP_INST(Trivial, InitExistentialOpaque)
 CONSTANT_OWNERSHIP_INST(Trivial, InitExistentialMetatype)
 CONSTANT_OWNERSHIP_INST(Trivial, IntegerLiteral)
 CONSTANT_OWNERSHIP_INST(Trivial, IsNonnull)
@@ -241,7 +241,6 @@
 CONSTANT_OWNERSHIP_INST(Trivial, OpenExistentialAddr)
 CONSTANT_OWNERSHIP_INST(Trivial, OpenExistentialBox)
 CONSTANT_OWNERSHIP_INST(Trivial, OpenExistentialMetatype)
-CONSTANT_OWNERSHIP_INST(Trivial, OpenExistentialOpaque)
 CONSTANT_OWNERSHIP_INST(Trivial, PointerToAddress)
 CONSTANT_OWNERSHIP_INST(Trivial, PointerToThinFunction)
 CONSTANT_OWNERSHIP_INST(Trivial, ProjectBlockStorage)
@@ -411,6 +410,7 @@
 FORWARDING_OWNERSHIP_INST(ConvertFunction)
 FORWARDING_OWNERSHIP_INST(InitExistentialRef)
 FORWARDING_OWNERSHIP_INST(OpenExistentialRef)
+FORWARDING_OWNERSHIP_INST(OpenExistentialOpaque)
 FORWARDING_OWNERSHIP_INST(RefToBridgeObject)
 FORWARDING_OWNERSHIP_INST(SelectValue)
 FORWARDING_OWNERSHIP_INST(Struct)
diff --git a/lib/SILOptimizer/Transforms/PerformanceInliner.cpp b/lib/SILOptimizer/Transforms/PerformanceInliner.cpp
index 4c794ec..ebd9d0c 100644
--- a/lib/SILOptimizer/Transforms/PerformanceInliner.cpp
+++ b/lib/SILOptimizer/Transforms/PerformanceInliner.cpp
@@ -398,24 +398,6 @@
 
         SmallVector<Substitution, 32> NewSubs;
         SubstitutionMap SubstMap;
-        GenericSignature *GenSig = nullptr;
-
-        if (auto FRI = dyn_cast<FunctionRefInst>(def)) {
-          auto Callee = FRI->getReferencedFunction();
-          if (Callee) {
-            GenSig = Callee->getLoweredFunctionType()->getGenericSignature();
-          }
-        } else if (auto CMI = dyn_cast<ClassMethodInst>(def)) {
-          GenSig = CMI->getType()
-                       .getSwiftRValueType()
-                       ->castTo<SILFunctionType>()
-                       ->getGenericSignature();
-        } else if (auto WMI = dyn_cast<WitnessMethodInst>(def)) {
-          GenSig = WMI->getType()
-                       .getSwiftRValueType()
-                       ->castTo<SILFunctionType>()
-                       ->getGenericSignature();
-        }
 
         // It is a generic call inside the callee. Check if after inlining
         // it will be possible to perform a generic specialization or
diff --git a/lib/Sema/CSSolver.cpp b/lib/Sema/CSSolver.cpp
index f79cb06..94d4dee 100644
--- a/lib/Sema/CSSolver.cpp
+++ b/lib/Sema/CSSolver.cpp
@@ -2151,8 +2151,7 @@
       }
     } else {
       // Get the orphaned constraint.
-      assert(InactiveConstraints.size() == 1 && "supposed to be an orphan!");
-      orphaned = &InactiveConstraints.front();
+      orphaned = allOrphanedConstraints[component - firstOrphanedConstraint];
     }
     CG.setOrphanedConstraint(orphaned);
 
diff --git a/lib/Sema/CodeSynthesis.cpp b/lib/Sema/CodeSynthesis.cpp
index 8b059a5..2756738 100644
--- a/lib/Sema/CodeSynthesis.cpp
+++ b/lib/Sema/CodeSynthesis.cpp
@@ -326,10 +326,20 @@
   };
   Type retTy = TupleType::get(retElts, ctx);
 
+  // Accessors of generic subscripts get a copy of the subscript's
+  // generic parameter list, because they're not nested inside the
+  // subscript.
+  GenericParamList *genericParams = nullptr;
+  if (auto *subscript = dyn_cast<SubscriptDecl>(storage))
+    genericParams = subscript->getGenericParams();
+
   auto *materializeForSet = FuncDecl::create(
       ctx, /*StaticLoc=*/SourceLoc(), StaticSpellingKind::None, loc,
       Identifier(), loc, /*Throws=*/false, /*ThrowsLoc=*/SourceLoc(),
-      /*AccessorKeywordLoc=*/SourceLoc(), /*GenericParams=*/nullptr,
+      /*AccessorKeywordLoc=*/SourceLoc(),
+      (genericParams
+       ? genericParams->clone(DC)
+       : nullptr),
       params, TypeLoc::withoutLoc(retTy), DC);
   materializeForSet->setImplicit();
   
diff --git a/lib/Sema/ConstraintSystem.cpp b/lib/Sema/ConstraintSystem.cpp
index 28bc4fd..0bb78c5 100644
--- a/lib/Sema/ConstraintSystem.cpp
+++ b/lib/Sema/ConstraintSystem.cpp
@@ -18,12 +18,15 @@
 #include "ConstraintSystem.h"
 #include "ConstraintGraph.h"
 #include "swift/AST/GenericEnvironment.h"
+#include "swift/Basic/Statistic.h"
 #include "llvm/ADT/SmallString.h"
 #include "llvm/Support/Compiler.h"
 
 using namespace swift;
 using namespace constraints;
 
+#define DEBUG_TYPE "ConstraintSystem"
+
 ConstraintSystem::ConstraintSystem(TypeChecker &tc, DeclContext *dc,
                                    ConstraintSystemOptions options)
   : TC(tc), DC(dc), Options(options),
@@ -37,6 +40,11 @@
   delete &CG;
 }
 
+void ConstraintSystem::incrementScopeCounter() {
+  SWIFT_FUNC_STAT;
+  CountScopes++;
+}
+
 bool ConstraintSystem::hasFreeTypeVariables() {
   // Look for any free type variables.
   for (auto tv : TypeVariables) {
diff --git a/lib/Sema/ConstraintSystem.h b/lib/Sema/ConstraintSystem.h
index 524ef18..82a3e5b 100644
--- a/lib/Sema/ConstraintSystem.h
+++ b/lib/Sema/ConstraintSystem.h
@@ -1285,9 +1285,7 @@
     return TypeCounter++;
   }
 
-  void incrementScopeCounter() {
-    CountScopes++;
-  }
+  void incrementScopeCounter();
 
 public:
   /// \brief Introduces a new solver scope, which any changes to the
diff --git a/lib/Sema/TypeCheckGeneric.cpp b/lib/Sema/TypeCheckGeneric.cpp
index 5246eda..737fa2f 100644
--- a/lib/Sema/TypeCheckGeneric.cpp
+++ b/lib/Sema/TypeCheckGeneric.cpp
@@ -788,7 +788,11 @@
   if (initFuncTy)
     cast<ConstructorDecl>(func)->setInitializerInterfaceType(initFuncTy);
 
-  checkReferencedGenericParams(func, sig, *this);
+  // We get bogus errors here with generic subscript materializeForSet.
+  if (!isa<FuncDecl>(func) ||
+      cast<FuncDecl>(func)->getAccessorKind() !=
+        AccessorKind::IsMaterializeForSet)
+    checkReferencedGenericParams(func, sig, *this);
 }
 
 ///
diff --git a/lib/Syntax/Trivia.cpp b/lib/Syntax/Trivia.cpp
index ed74519..ce1008c 100644
--- a/lib/Syntax/Trivia.cpp
+++ b/lib/Syntax/Trivia.cpp
@@ -80,9 +80,6 @@
   case TriviaKind::Backtick:
     OS << "backtick " << Count;
     break;
-  case TriviaKind::Semicolon:
-    OS << "semicolon " << Count;
-    break;
   }
   OS << ')';
 }
@@ -100,7 +97,6 @@
     break;
   case TriviaKind::Space:
   case TriviaKind::Backtick:
-  case TriviaKind::Semicolon:
   case TriviaKind::Tab:
   case TriviaKind::VerticalTab:
   case TriviaKind::Formfeed:
@@ -135,8 +131,6 @@
   case TriviaKind::Backtick:
     printRepeated(OS, '`', Count);
     break;
-  case TriviaKind::Semicolon:
-    printRepeated(OS, ';', Count);
   }
 }
 
diff --git a/stdlib/public/SDK/CloudKit/CMakeLists.txt b/stdlib/public/SDK/CloudKit/CMakeLists.txt
index 7e75415..4e0403d 100644
--- a/stdlib/public/SDK/CloudKit/CMakeLists.txt
+++ b/stdlib/public/SDK/CloudKit/CMakeLists.txt
@@ -4,10 +4,19 @@
   SWIFT_COMPILE_FLAGS "${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS}"
   LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
   TARGET_SDKS ALL_APPLE_PLATFORMS
+
+  # The dependency on the 'os' module only appears in particular Apple-internal
+  # configurations, but it causes no harm to specify it unconditionally.
+  # The ./utils/find-overlay-dependencies.sh tool only touches the
+  # OSX|IOS|TVOS|WATCHOS lines, so the standalone "os" lines remain.
   SWIFT_MODULE_DEPENDS_OSX Darwin Contacts CoreGraphics CoreLocation Dispatch Foundation IOKit ObjectiveC # auto-updated
+    os
   SWIFT_MODULE_DEPENDS_IOS Darwin Contacts CoreLocation Dispatch Foundation ObjectiveC # auto-updated
+    os
   SWIFT_MODULE_DEPENDS_TVOS Darwin CoreLocation Dispatch Foundation ObjectiveC # auto-updated
+    os
   SWIFT_MODULE_DEPENDS_WATCHOS Darwin CoreLocation Dispatch Foundation ObjectiveC # auto-updated
+    os
   FRAMEWORK_DEPENDS_WEAK CloudKit
 
   DEPLOYMENT_VERSION_OSX ${SWIFTLIB_DEPLOYMENT_VERSION_CLOUDKIT_OSX}
diff --git a/test/Constraints/invalid_constraint_lookup.swift b/test/Constraints/invalid_constraint_lookup.swift
index 4d85c03..46db4fb 100644
--- a/test/Constraints/invalid_constraint_lookup.swift
+++ b/test/Constraints/invalid_constraint_lookup.swift
@@ -9,7 +9,8 @@
 }
 
 struct Zzz<T> {
-  subscript (a: Foo) -> Zzz<T> { // expected-error {{use of undeclared type 'Foo'}}
+  // FIXME: Duplicate diagnostics
+  subscript (a: Foo) -> Zzz<T> { // expected-error 2{{use of undeclared type 'Foo'}}
   get: // expected-error {{expected '{' to start getter definition}}
   set:
     for i in value {}
diff --git a/test/Constraints/optional.swift b/test/Constraints/optional.swift
index 1cfe594..db7f254 100644
--- a/test/Constraints/optional.swift
+++ b/test/Constraints/optional.swift
@@ -178,3 +178,21 @@
 
   takeAnyObjects(lhs, rhs)
 }
+
+// SR-4056
+protocol P1 { }
+
+class C1: P1 { }
+
+protocol P2 {
+    var prop: C1? { get }
+}
+
+class C2 {
+    var p1: P1?
+    var p2: P2?
+
+    var computed: P1? {
+        return p1 ?? p2?.prop
+    }
+}
diff --git a/test/Generics/requirement_inference.swift b/test/Generics/requirement_inference.swift
index b9b558c..2491c55 100644
--- a/test/Generics/requirement_inference.swift
+++ b/test/Generics/requirement_inference.swift
@@ -230,3 +230,20 @@
 	// CHECK: Canonical generic signature: <τ_0_0, τ_0_1, τ_1_0 where τ_0_0 : P12, τ_0_1 == X10, τ_0_0.B == X10>
 	func upperSameTypeConstraint<V>(_: V) where U == X10 { }
 }
+
+#if _runtime(_ObjC)
+// rdar://problem/30610428
+@objc protocol P14 { }
+
+class X12<S: AnyObject> {
+  func bar<V>(v: V) where S == P14 {
+  }
+}
+
+@objc protocol P15: P14 { }
+
+class X13<S: P14> {
+  func bar<V>(v: V) where S == P15 {
+  }
+}
+#endif
diff --git a/test/IDE/reconstruct_type_from_mangled_name.swift b/test/IDE/reconstruct_type_from_mangled_name.swift
index 75f2d57..df5b0f5 100644
--- a/test/IDE/reconstruct_type_from_mangled_name.swift
+++ b/test/IDE/reconstruct_type_from_mangled_name.swift
@@ -49,7 +49,7 @@
 
   if let ifletf1 = Int?(1) {
 // FIXME: lookup incorrect for if let binding.
-// CHECK: decl: struct Int : {{.*}} for 'ifletf1' usr=s:vF14swift_ide_test2f1FT_T_L_7ifletf1Si
+// CHECK: decl: struct Int : {{.*}} for 'ifletf1' usr=s:14swift_ide_test2f1yyF7ifletf1L_Siv
   }
 }
 
@@ -64,7 +64,7 @@
 
     arr1.append(1)
 // FIXME: missing append()
-// CHECK: dref: FAILURE	for 'append' usr=s:FSa6appendFxT_
+// CHECK: dref: FAILURE	for 'append' usr=s:Sa6appendyxF
 // CHECK: type: (@lvalue Array<Int>) -> (Int) -> ()
 
     var arr2 : [Mystruct1]
@@ -89,9 +89,10 @@
 struct MyGenStruct1<T, U: ExpressibleByStringLiteral, V: Sequence> {
 // CHECK: decl: struct MyGenStruct1<T, U, V> where U : ExpressibleByStringLiteral, V : Sequence
 // FIXME: why are these references to the base type?
-// CHECK: decl: struct MyGenStruct1<{{.*}}> where {{.*}} for 'T' usr=s:tV14swift_ide_test12MyGenStruct11TMx
-// CHECK: decl: struct MyGenStruct1<{{.*}}> where {{.*}} for 'U' usr=s:tV14swift_ide_test12MyGenStruct11UMq_
-// CHECK: decl: struct MyGenStruct1<{{.*}}> where {{.*}} for 'V' usr=s:tV14swift_ide_test12MyGenStruct11VMq0_
+// FIXME: TypeReconstruction should support Node::Kind::GenericTypeParamDecl ('fp')
+// CHECK: decl: FAILURE for 'T' usr=s:14swift_ide_test12MyGenStruct1V1Txmfp
+// CHECK: decl: FAILURE for 'U' usr=s:14swift_ide_test12MyGenStruct1V1Uq_mfp
+// CHECK: decl: FAILURE for 'V' usr=s:14swift_ide_test12MyGenStruct1V1Vq0_mfp
 
   let x: T
 // CHECK: decl: let x: T
@@ -132,6 +133,6 @@
 
 protocol P1 {}
 func foo1(p : P1) {}
-// CHECK: decl: protocol P1  for 'P1' usr=s:P14swift_ide_test2P1
-// CHECK: decl: func foo1(p: P1)  for 'foo1' usr=s:F14swift_ide_test4foo1FT1pPS_2P1__T_
-// CHECK: decl: let p: P1 for 'p' usr=s:vF14swift_ide_test4foo1FT1pPS_2P1__T_L_1pPS0__
+// CHECK: decl: protocol P1  for 'P1' usr=s:14swift_ide_test2P1P
+// CHECK: decl: func foo1(p: P1)  for 'foo1' usr=s:14swift_ide_test4foo1yAA2P1_p1p_tF
+// CHECK: decl: let p: P1 for 'p' usr=s:14swift_ide_test4foo1yAA2P1_p1p_tFADL_AaC_pv
diff --git a/test/IDE/reconstruct_type_from_mangled_name_invalid.swift b/test/IDE/reconstruct_type_from_mangled_name_invalid.swift
index b1a5988..f001da0 100644
--- a/test/IDE/reconstruct_type_from_mangled_name_invalid.swift
+++ b/test/IDE/reconstruct_type_from_mangled_name_invalid.swift
@@ -1,9 +1,10 @@
 // RUN: %target-swift-ide-test -reconstruct-type -source-filename %s | %FileCheck %s -implicit-check-not="FAILURE"
+// REQUIRES: rdar://problem/30680565
 
 struct GS<T> {
 // CHECK: decl: struct GS<T> for 'GS'
 // FIXME: why do we get this?
-// CHECK: decl: struct GS<T> for 'T' usr=s:tV14swift_ide_test2GS1TMx
+// CHECK: decl: struct GS<T> for 'T' usr=s:14swift_ide_test2GSVD1TMx
 
   let a: T.Nope
 // CHECK: decl: let a: <<error type>>
@@ -20,15 +21,15 @@
 
 protocol P {
 // FIXME: missing protocol entries?
-// CHECK: decl: protocol P for 'P' usr=s:P14swift_ide_test1P
+// CHECK: decl: protocol P for 'P' usr=s:14swift_ide_test1PP
   associatedtype T
-// CHECK: decl: protocol P for 'T' usr=s:P14swift_ide_test1P1T
+// CHECK: decl: protocol P for 'T' usr=s:14swift_ide_test1PP1T
   func foo() -> T
-// CHECK: decl: func foo() -> Self.T	for 'foo' usr=s:FP14swift_ide_test1P3fooFT_wx1T
+// CHECK: decl: func foo() -> Self.T	for 'foo' usr=s:14swift_ide_test1PP3foo1TQzyF
 }
 struct SP: P {
 // CHECK: decl: struct SP : P for 'SP'
   typealias TT = Self.T
 // FIXME: should be the typealias decl
-// CHECK: decl: struct SP : P for 'TT' usr=s:V14swift_ide_test2SP2TT
+// CHECK: decl: struct SP : P for 'TT' usr=s:14swift_ide_test2SPV2TT
 }
diff --git a/test/Index/roles.swift b/test/Index/roles.swift
index 45eeba8..ba39b63 100644
--- a/test/Index/roles.swift
+++ b/test/Index/roles.swift
@@ -5,108 +5,108 @@
 // RUN: %target-swift-ide-test -print-indexed-symbols -source-filename %s -I %t | %FileCheck %s
 
 import func imported_swift_module.importedFunc
-// CHECK: [[@LINE-1]]:35 | function/Swift | importedFunc() | s:F21imported_swift_module12importedFuncFT_T_ | Ref | rel: 0
+// CHECK: [[@LINE-1]]:35 | function/Swift | importedFunc() | s:21imported_swift_module0A4FuncyyF | Ref | rel: 0
 import var imported_swift_module.importedGlobal
-// CHECK: [[@LINE-1]]:34 | variable/Swift | importedGlobal | s:v21imported_swift_module14importedGlobalSi | Ref | rel: 0
+// CHECK: [[@LINE-1]]:34 | variable/Swift | importedGlobal | s:21imported_swift_module0A6GlobalSiv | Ref | rel: 0
 
 // Definition
 let x = 2
-// CHECK: [[@LINE-1]]:5 | variable/Swift | x | s:v14swift_ide_test1xSi | Def | rel: 0
+// CHECK: [[@LINE-1]]:5 | variable/Swift | x | s:14swift_ide_test1xSiv | Def | rel: 0
 
 // Definition + Read of x
 var y = x + 1
-// CHECK: [[@LINE-1]]:5 | variable/Swift | y | s:v14swift_ide_test1ySi | Def | rel: 0
-// CHECK: [[@LINE-2]]:9 | variable/Swift | x | s:v14swift_ide_test1xSi | Ref,Read | rel: 0
-// CHECK: [[@LINE-3]]:11 | function/infix-operator/Swift | +(_:_:) | s:Fsoi1pFTSiSi_Si | Ref,Call | rel: 0
+// CHECK: [[@LINE-1]]:5 | variable/Swift | y | s:14swift_ide_test1ySiv | Def | rel: 0
+// CHECK: [[@LINE-2]]:9 | variable/Swift | x | s:14swift_ide_test1xSiv | Ref,Read | rel: 0
+// CHECK: [[@LINE-3]]:11 | function/infix-operator/Swift | +(_:_:) | s:s1poiSiSi_SitF | Ref,Call | rel: 0
 
 // Read of x + Write of y
 y = x + 1
-// CHECK: [[@LINE-1]]:1 | variable/Swift | y | s:v14swift_ide_test1ySi | Ref,Writ | rel: 0
-// CHECK: [[@LINE-2]]:5 | variable/Swift | x | s:v14swift_ide_test1xSi | Ref,Read | rel: 0
-// CHECK: [[@LINE-3]]:7 | function/infix-operator/Swift | +(_:_:) | s:Fsoi1pFTSiSi_Si | Ref,Call | rel: 0
+// CHECK: [[@LINE-1]]:1 | variable/Swift | y | s:14swift_ide_test1ySiv | Ref,Writ | rel: 0
+// CHECK: [[@LINE-2]]:5 | variable/Swift | x | s:14swift_ide_test1xSiv | Ref,Read | rel: 0
+// CHECK: [[@LINE-3]]:7 | function/infix-operator/Swift | +(_:_:) | s:s1poiSiSi_SitF | Ref,Call | rel: 0
 
 // Read of y + Write of y
 y += x
-// CHECK: [[@LINE-1]]:1 | variable/Swift | y | s:v14swift_ide_test1ySi | Ref,Read,Writ | rel: 0
-// CHECK: [[@LINE-2]]:3 | function/infix-operator/Swift | +=(_:_:) | s:Fsoi2peFTRSiSi_T_ | Ref,Call | rel: 0
-// CHECK: [[@LINE-3]]:6 | variable/Swift | x | s:v14swift_ide_test1xSi | Ref,Read | rel: 0
+// CHECK: [[@LINE-1]]:1 | variable/Swift | y | s:14swift_ide_test1ySiv | Ref,Read,Writ | rel: 0
+// CHECK: [[@LINE-2]]:3 | function/infix-operator/Swift | +=(_:_:) | s:s2peoiySiz_SitF | Ref,Call | rel: 0
+// CHECK: [[@LINE-3]]:6 | variable/Swift | x | s:14swift_ide_test1xSiv | Ref,Read | rel: 0
 
 var z: Int {
-// CHECK: [[@LINE-1]]:5 | variable/Swift | z | s:v14swift_ide_test1zSi | Def | rel: 0
+// CHECK: [[@LINE-1]]:5 | variable/Swift | z | s:14swift_ide_test1zSiv | Def | rel: 0
   get {
-    // CHECK: [[@LINE-1]]:3 | function/acc-get/Swift | getter:z | s:F14swift_ide_testg1zSi | Def,RelChild,RelAcc | rel: 1
+    // CHECK: [[@LINE-1]]:3 | function/acc-get/Swift | getter:z | s:14swift_ide_test1zSifg | Def,RelChild,RelAcc | rel: 1
 
     return y
-    // CHECK: [[@LINE-1]]:12 | variable/Swift | y | s:v14swift_ide_test1ySi | Ref,Read | rel: 0
+    // CHECK: [[@LINE-1]]:12 | variable/Swift | y | s:14swift_ide_test1ySiv | Ref,Read | rel: 0
   }
   set {
-    // CHECK: [[@LINE-1]]:3 | function/acc-set/Swift | setter:z | s:F14swift_ide_tests1zSi | Def,RelChild,RelAcc | rel: 1
+    // CHECK: [[@LINE-1]]:3 | function/acc-set/Swift | setter:z | s:14swift_ide_test1zSifs | Def,RelChild,RelAcc | rel: 1
 
     y = newValue
-    // CHECK: [[@LINE-1]]:5 | variable/Swift | y | s:v14swift_ide_test1ySi | Ref,Writ | rel: 0
+    // CHECK: [[@LINE-1]]:5 | variable/Swift | y | s:14swift_ide_test1ySiv | Ref,Writ | rel: 0
   }
 }
 // Write + Read of z
 z = z + 1
-// CHECK: [[@LINE-1]]:1 | variable/Swift | z | s:v14swift_ide_test1zSi | Ref,Writ | rel: 0
-// CHECK: [[@LINE-2]]:1 | function/acc-set/Swift | setter:z | s:F14swift_ide_tests1zSi | Ref,Call,Impl | rel: 0
-// CHECK: [[@LINE-3]]:5 | variable/Swift | z | s:v14swift_ide_test1zSi | Ref,Read | rel: 0
-// CHECK: [[@LINE-4]]:5 | function/acc-get/Swift | getter:z | s:F14swift_ide_testg1zSi | Ref,Call,Impl | rel: 0
+// CHECK: [[@LINE-1]]:1 | variable/Swift | z | s:14swift_ide_test1zSiv | Ref,Writ | rel: 0
+// CHECK: [[@LINE-2]]:1 | function/acc-set/Swift | setter:z | s:14swift_ide_test1zSifs | Ref,Call,Impl | rel: 0
+// CHECK: [[@LINE-3]]:5 | variable/Swift | z | s:14swift_ide_test1zSiv | Ref,Read | rel: 0
+// CHECK: [[@LINE-4]]:5 | function/acc-get/Swift | getter:z | s:14swift_ide_test1zSifg | Ref,Call,Impl | rel: 0
 
 // Call
 func aCalledFunction() {}
-// CHECK: [[@LINE-1]]:6 | function/Swift | aCalledFunction() | s:F14swift_ide_test15aCalledFunctionFT_T_ | Def | rel: 0
+// CHECK: [[@LINE-1]]:6 | function/Swift | aCalledFunction() | s:14swift_ide_test15aCalledFunctionyyF | Def | rel: 0
 
 aCalledFunction()
-// CHECK: [[@LINE-1]]:1 | function/Swift | aCalledFunction() | s:F14swift_ide_test15aCalledFunctionFT_T_ | Ref,Call | rel: 0
+// CHECK: [[@LINE-1]]:1 | function/Swift | aCalledFunction() | s:14swift_ide_test15aCalledFunctionyyF | Ref,Call | rel: 0
 
 func aCaller() {
-  // CHECK: [[@LINE-1]]:6 | function/Swift | aCaller() | s:F14swift_ide_test7aCallerFT_T_ | Def | rel: 0
+  // CHECK: [[@LINE-1]]:6 | function/Swift | aCaller() | s:14swift_ide_test7aCalleryyF | Def | rel: 0
 
   aCalledFunction()
-  // CHECK: [[@LINE-1]]:3 | function/Swift | aCalledFunction() | s:F14swift_ide_test15aCalledFunctionFT_T_ | Ref,Call,RelCall | rel: 1
-  // CHECK-NEXT: RelCall | aCaller() | s:F14swift_ide_test7aCallerFT_T_
+  // CHECK: [[@LINE-1]]:3 | function/Swift | aCalledFunction() | s:14swift_ide_test15aCalledFunctionyyF | Ref,Call,RelCall | rel: 1
+  // CHECK-NEXT: RelCall | aCaller() | s:14swift_ide_test7aCalleryyF
 }
 
 let _ = aCalledFunction
-// CHECK: [[@LINE-1]]:9 | function/Swift | aCalledFunction() | s:F14swift_ide_test15aCalledFunctionFT_T_ | Ref | rel: 0
+// CHECK: [[@LINE-1]]:9 | function/Swift | aCalledFunction() | s:14swift_ide_test15aCalledFunctionyyF | Ref | rel: 0
 
 // RelationChildOf, Implicit
 struct AStruct {
   var x: Int
-  // CHECK: [[@LINE-1]]:7 | instance-property/Swift | x | s:vV14swift_ide_test7AStruct1xSi | Def,RelChild | rel: 1
-  // CHECK-NEXT: RelChild | AStruct | s:V14swift_ide_test7AStruct
+  // CHECK: [[@LINE-1]]:7 | instance-property/Swift | x | s:14swift_ide_test7AStructV1xSiv | Def,RelChild | rel: 1
+  // CHECK-NEXT: RelChild | AStruct | s:14swift_ide_test7AStructV
 
   mutating func aMethod() {
-    // CHECK: [[@LINE-1]]:17 | instance-method/Swift | aMethod() | s:FV14swift_ide_test7AStruct7aMethodFT_T_ | Def,RelChild | rel: 1
-    // CHECK-NEXT: RelChild | AStruct | s:V14swift_ide_test7AStruct
+    // CHECK: [[@LINE-1]]:17 | instance-method/Swift | aMethod() | s:14swift_ide_test7AStructV7aMethodyyF | Def,RelChild | rel: 1
+    // CHECK-NEXT: RelChild | AStruct | s:14swift_ide_test7AStructV
 
     x += 1
-    // CHECK: [[@LINE-1]]:5 | instance-property/Swift | x | s:vV14swift_ide_test7AStruct1xSi | Ref,Read,Writ | rel: 0
-    // CHECK: [[@LINE-2]]:5 | function/acc-get/Swift | getter:x | s:FV14swift_ide_test7AStructg1xSi | Ref,Call,Impl,RelRec,RelCall | rel: 2
-    // CHECK-NEXT: RelCall | aMethod() | s:FV14swift_ide_test7AStruct7aMethodFT_T_
-    // CHECK-NEXT: RelRec | AStruct | s:V14swift_ide_test7AStruct
-    // CHECK: [[@LINE-5]]:5 | function/acc-set/Swift | setter:x | s:FV14swift_ide_test7AStructs1xSi | Ref,Call,Impl,RelRec,RelCall | rel: 2
-    // CHECK-NEXT: RelCall | aMethod() | s:FV14swift_ide_test7AStruct7aMethodFT_T_
-    // CHECK-NEXT: RelRec | AStruct | s:V14swift_ide_test7AStruct
-    // CHECK: [[@LINE-8]]:7 | function/infix-operator/Swift | +=(_:_:) | s:Fsoi2peFTRSiSi_T_ | Ref,Call,RelCall | rel: 1
-    // CHECK-NEXT: RelCall | aMethod() | s:FV14swift_ide_test7AStruct7aMethodFT_T_
+    // CHECK: [[@LINE-1]]:5 | instance-property/Swift | x | s:14swift_ide_test7AStructV1xSiv | Ref,Read,Writ | rel: 0
+    // CHECK: [[@LINE-2]]:5 | function/acc-get/Swift | getter:x | s:14swift_ide_test7AStructV1xSifg | Ref,Call,Impl,RelRec,RelCall | rel: 2
+    // CHECK-NEXT: RelCall | aMethod() | s:14swift_ide_test7AStructV7aMethodyyF
+    // CHECK-NEXT: RelRec | AStruct | s:14swift_ide_test7AStructV
+    // CHECK: [[@LINE-5]]:5 | function/acc-set/Swift | setter:x | s:14swift_ide_test7AStructV1xSifs | Ref,Call,Impl,RelRec,RelCall | rel: 2
+    // CHECK-NEXT: RelCall | aMethod() | s:14swift_ide_test7AStructV7aMethodyyF
+    // CHECK-NEXT: RelRec | AStruct | s:14swift_ide_test7AStructV
+    // CHECK: [[@LINE-8]]:7 | function/infix-operator/Swift | +=(_:_:) | s:s2peoiySiz_SitF | Ref,Call,RelCall | rel: 1
+    // CHECK-NEXT: RelCall | aMethod() | s:14swift_ide_test7AStructV7aMethodyyF
   }
 
   // RelationChildOf, RelationAccessorOf
   subscript(index: Int) -> Int {
-    // CHECK: [[@LINE-1]]:3 | instance-property/subscript/Swift | subscript(_:) | s:iV14swift_ide_test7AStruct9subscriptFSiSi | Def,RelChild | rel: 1
-    // CHECK-NEXT: RelChild | AStruct | s:V14swift_ide_test7AStruct
+    // CHECK: [[@LINE-1]]:3 | instance-property/subscript/Swift | subscript(_:) | s:14swift_ide_test7AStructV9subscriptSiSici | Def,RelChild | rel: 1
+    // CHECK-NEXT: RelChild | AStruct | s:14swift_ide_test7AStructV
 
     get {
-      // CHECK: [[@LINE-1]]:5 | instance-method/acc-get/Swift | getter:subscript(_:) | s:FV14swift_ide_test7AStructg9subscriptFSiSi | Def,RelChild,RelAcc | rel: 1
-      // CHECK-NEXT: RelChild,RelAcc | subscript(_:) | s:iV14swift_ide_test7AStruct9subscriptFSiSi
+      // CHECK: [[@LINE-1]]:5 | instance-method/acc-get/Swift | getter:subscript(_:) | s:14swift_ide_test7AStructV9subscriptSiSicfg | Def,RelChild,RelAcc | rel: 1
+      // CHECK-NEXT: RelChild,RelAcc | subscript(_:) | s:14swift_ide_test7AStructV9subscriptSiSici
 
       return x
     }
     set {
-      // CHECK: [[@LINE-1]]:5 | instance-method/acc-set/Swift | setter:subscript(_:) | s:FV14swift_ide_test7AStructs9subscriptFSiSi | Def,RelChild,RelAcc | rel: 1
-      // CHECK-NEXT: RelChild,RelAcc | subscript(_:) | s:iV14swift_ide_test7AStruct9subscriptFSiSi
+      // CHECK: [[@LINE-1]]:5 | instance-method/acc-set/Swift | setter:subscript(_:) | s:14swift_ide_test7AStructV9subscriptSiSicfs | Def,RelChild,RelAcc | rel: 1
+      // CHECK-NEXT: RelChild,RelAcc | subscript(_:) | s:14swift_ide_test7AStructV9subscriptSiSici
 
       x = newValue
     }
@@ -137,36 +137,36 @@
 }
 
 let _ = AClass.foo
-// CHECK: [[@LINE-1]]:16 | instance-method/Swift | foo() | s:FC14swift_ide_test6AClass3fooFT_Si | Ref | rel: 0
+// CHECK: [[@LINE-1]]:16 | instance-method/Swift | foo() | s:14swift_ide_test6AClassC3fooSiyF | Ref | rel: 0
 let _ = AClass(x: 1).foo
-// CHECK: [[@LINE-1]]:22 | instance-method/Swift | foo() | s:FC14swift_ide_test6AClass3fooFT_Si | Ref | rel: 0
+// CHECK: [[@LINE-1]]:22 | instance-method/Swift | foo() | s:14swift_ide_test6AClassC3fooSiyF | Ref | rel: 0
 let _ = AClass(x: 1)[1]
-// CHECK: [[@LINE-1]]:21 | instance-property/subscript/Swift | subscript(_:) | s:iC14swift_ide_test6AClass9subscriptFSiSi | Ref,Read | rel: 0
-// CHECK: [[@LINE-2]]:21 | function/acc-get/Swift | getter:subscript(_:) | s:FC14swift_ide_test6AClassg9subscriptFSiSi | Ref,Call,Dyn,Impl,RelRec | rel: 1
+// CHECK: [[@LINE-1]]:21 | instance-property/subscript/Swift | subscript(_:) | s:14swift_ide_test6AClassC9subscriptSiSici | Ref,Read | rel: 0
+// CHECK: [[@LINE-2]]:21 | function/acc-get/Swift | getter:subscript(_:) | s:14swift_ide_test6AClassC9subscriptSiSicfg | Ref,Call,Dyn,Impl,RelRec | rel: 1
 let _ = AClass(x: 1)[1] = 2
-// CHECK: [[@LINE-1]]:21 | instance-property/subscript/Swift | subscript(_:) | s:iC14swift_ide_test6AClass9subscriptFSiSi | Ref,Writ | rel: 0
-// CHECK: [[@LINE-2]]:21 | function/acc-set/Swift | setter:subscript(_:) | s:FC14swift_ide_test6AClasss9subscriptFSiSi | Ref,Call,Dyn,Impl,RelRec | rel: 1
+// CHECK: [[@LINE-1]]:21 | instance-property/subscript/Swift | subscript(_:) | s:14swift_ide_test6AClassC9subscriptSiSici | Ref,Writ | rel: 0
+// CHECK: [[@LINE-2]]:21 | function/acc-set/Swift | setter:subscript(_:) | s:14swift_ide_test6AClassC9subscriptSiSicfs | Ref,Call,Dyn,Impl,RelRec | rel: 1
 
 protocol AProtocol {
   // CHECK: [[@LINE-1]]:10 | protocol/Swift | AProtocol | [[AProtocol_USR:.*]] | Def | rel: 0
   func foo() -> Int
-  // CHECK: [[@LINE-1]]:8 | instance-method/Swift | foo() | s:FP14swift_ide_test9AProtocol3fooFT_Si | Def,RelChild | rel: 1
-  // CHECK-NEXT: RelChild | AProtocol | s:P14swift_ide_test9AProtocol
+  // CHECK: [[@LINE-1]]:8 | instance-method/Swift | foo() | s:14swift_ide_test9AProtocolP3fooSiyF | Def,RelChild | rel: 1
+  // CHECK-NEXT: RelChild | AProtocol | s:14swift_ide_test9AProtocolP
 }
 
 // RelationBaseOf, RelationOverrideOf
 class ASubClass : AClass, AProtocol {
-// CHECK: [[@LINE-1]]:7 | class/Swift | ASubClass | s:C14swift_ide_test9ASubClass | Def | rel: 0
-// CHECK: [[@LINE-2]]:19 | class/Swift | AClass | s:C14swift_ide_test6AClass | Ref,RelBase | rel: 1
-// CHECK-NEXT: RelBase | ASubClass | s:C14swift_ide_test9ASubClass
-// CHECK: [[@LINE-4]]:27 | protocol/Swift | AProtocol | s:P14swift_ide_test9AProtocol | Ref,RelBase | rel: 1
-// CHECK-NEXT: RelBase | ASubClass | s:C14swift_ide_test9ASubClass
+// CHECK: [[@LINE-1]]:7 | class/Swift | ASubClass | s:14swift_ide_test9ASubClassC | Def | rel: 0
+// CHECK: [[@LINE-2]]:19 | class/Swift | AClass | s:14swift_ide_test6AClassC | Ref,RelBase | rel: 1
+// CHECK-NEXT: RelBase | ASubClass | s:14swift_ide_test9ASubClassC
+// CHECK: [[@LINE-4]]:27 | protocol/Swift | AProtocol | s:14swift_ide_test9AProtocolP | Ref,RelBase | rel: 1
+// CHECK-NEXT: RelBase | ASubClass | s:14swift_ide_test9ASubClassC
 
   override func foo() -> Int {
-    // CHECK: [[@LINE-1]]:17 | instance-method/Swift | foo() | s:FC14swift_ide_test9ASubClass3fooFT_Si | Def,RelChild,RelOver | rel: 3
-    // CHECK-NEXT: RelOver | foo() | s:FC14swift_ide_test6AClass3fooFT_Si
-    // CHECK-NEXT: RelOver | foo() | s:FP14swift_ide_test9AProtocol3fooFT_Si
-    // CHECK-NEXT: RelChild | ASubClass | s:C14swift_ide_test9ASubClass
+    // CHECK: [[@LINE-1]]:17 | instance-method/Swift | foo() | s:14swift_ide_test9ASubClassC3fooSiyF | Def,RelChild,RelOver | rel: 3
+    // CHECK-NEXT: RelOver | foo() | s:14swift_ide_test6AClassC3fooSiyF
+    // CHECK-NEXT: RelOver | foo() | s:14swift_ide_test9AProtocolP3fooSiyF
+    // CHECK-NEXT: RelChild | ASubClass | s:14swift_ide_test9ASubClassC
     return 1
   }
 }
@@ -174,11 +174,11 @@
 // RelationExtendedBy
 extension AClass {
   // CHECK: [[@LINE-1]]:11 | extension/ext-class/Swift | AClass | [[EXT_ACLASS_USR:.*]] | Def | rel: 0
-  // CHECK: [[@LINE-2]]:11 | class/Swift | AClass | s:C14swift_ide_test6AClass | Ref,RelExt | rel: 1
+  // CHECK: [[@LINE-2]]:11 | class/Swift | AClass | s:14swift_ide_test6AClassC | Ref,RelExt | rel: 1
   // CHECK-NEXT: RelExt | AClass | [[EXT_ACLASS_USR]]
 
   func bar() -> Int { return 2 }
-  // CHECK: [[@LINE-1]]:8 | instance-method/Swift | bar() | s:FC14swift_ide_test6AClass3barFT_Si | Def,RelChild | rel: 1
+  // CHECK: [[@LINE-1]]:8 | instance-method/Swift | bar() | s:14swift_ide_test6AClassC3barSiyF | Def,RelChild | rel: 1
   // CHECK-NEXT: RelChild | AClass | [[EXT_ACLASS_USR]]
 }
 
@@ -199,47 +199,47 @@
 }
 
 var anInstance = AClass(x: 1)
-// CHECK: [[@LINE-1]]:18 | class/Swift | AClass | s:C14swift_ide_test6AClass | Ref | rel: 0
-// CHECK: [[@LINE-2]]:18 | constructor/Swift | init(x:) | s:FC14swift_ide_test6AClasscFT1xSi_S0_ | Ref,Call | rel: 0
+// CHECK: [[@LINE-1]]:18 | class/Swift | AClass | s:14swift_ide_test6AClassC | Ref | rel: 0
+// CHECK: [[@LINE-2]]:18 | constructor/Swift | init(x:) | s:14swift_ide_test6AClassCACSi1x_tcfc | Ref,Call | rel: 0
 
 anInstance.y.x = anInstance.y.x
-// CHECK: [[@LINE-1]]:1 | variable/Swift | anInstance | s:v14swift_ide_test10anInstanceCS_6AClass | Ref,Read | rel: 0
-// CHECK: [[@LINE-2]]:12 | instance-property/Swift | y | s:vC14swift_ide_test6AClass1yVS_7AStruct | Ref,Read,Writ | rel: 0
-// CHECK: [[@LINE-3]]:14 | instance-property/Swift | x | s:vV14swift_ide_test7AStruct1xSi | Ref,Writ | rel: 0
-// CHECK: [[@LINE-4]]:18 | variable/Swift | anInstance | s:v14swift_ide_test10anInstanceCS_6AClass | Ref,Read | rel: 0
-// CHECK: [[@LINE-5]]:29 | instance-property/Swift | y | s:vC14swift_ide_test6AClass1yVS_7AStruct | Ref,Read | rel: 0
-// CHECK: [[@LINE-6]]:31 | instance-property/Swift | x | s:vV14swift_ide_test7AStruct1xSi | Ref,Read | rel: 0
+// CHECK: [[@LINE-1]]:1 | variable/Swift | anInstance | s:14swift_ide_test10anInstanceAA6AClassCv | Ref,Read | rel: 0
+// CHECK: [[@LINE-2]]:12 | instance-property/Swift | y | s:14swift_ide_test6AClassC1yAA7AStructVv | Ref,Read,Writ | rel: 0
+// CHECK: [[@LINE-3]]:14 | instance-property/Swift | x | s:14swift_ide_test7AStructV1xSiv | Ref,Writ | rel: 0
+// CHECK: [[@LINE-4]]:18 | variable/Swift | anInstance | s:14swift_ide_test10anInstanceAA6AClassCv | Ref,Read | rel: 0
+// CHECK: [[@LINE-5]]:29 | instance-property/Swift | y | s:14swift_ide_test6AClassC1yAA7AStructVv | Ref,Read | rel: 0
+// CHECK: [[@LINE-6]]:31 | instance-property/Swift | x | s:14swift_ide_test7AStructV1xSiv | Ref,Read | rel: 0
 
 anInstance.y.aMethod()
-// CHECK: [[@LINE-1]]:1 | variable/Swift | anInstance | s:v14swift_ide_test10anInstanceCS_6AClass | Ref,Read | rel: 0
-// CHECK: [[@LINE-2]]:12 | instance-property/Swift | y | s:vC14swift_ide_test6AClass1yVS_7AStruct | Ref,Read,Writ | rel: 0
-// CHECK: [[@LINE-3]]:14 | instance-method/Swift | aMethod() | s:FV14swift_ide_test7AStruct7aMethodFT_T_ | Ref,Call | rel: 0
+// CHECK: [[@LINE-1]]:1 | variable/Swift | anInstance | s:14swift_ide_test10anInstanceAA6AClassCv | Ref,Read | rel: 0
+// CHECK: [[@LINE-2]]:12 | instance-property/Swift | y | s:14swift_ide_test6AClassC1yAA7AStructVv | Ref,Read,Writ | rel: 0
+// CHECK: [[@LINE-3]]:14 | instance-method/Swift | aMethod() | s:14swift_ide_test7AStructV7aMethodyyF | Ref,Call | rel: 0
 
 // FIXME Write role of z occurrence on the RHS?
 anInstance.z[1] = anInstance.z[0]
-// CHECK: [[@LINE-1]]:1 | variable/Swift | anInstance | s:v14swift_ide_test10anInstanceCS_6AClass | Ref,Read | rel: 0
-// CHECK: [[@LINE-2]]:12 | instance-property/Swift | z | s:vC14swift_ide_test6AClass1zGSaSi_ | Ref,Read,Writ | rel: 0
-// CHECK: [[@LINE-3]]:19 | variable/Swift | anInstance | s:v14swift_ide_test10anInstanceCS_6AClass | Ref,Read | rel: 0
-// CHECK: [[@LINE-4]]:30 | instance-property/Swift | z | s:vC14swift_ide_test6AClass1zGSaSi_ | Ref,Read,Writ | rel: 0
+// CHECK: [[@LINE-1]]:1 | variable/Swift | anInstance | s:14swift_ide_test10anInstanceAA6AClassCv | Ref,Read | rel: 0
+// CHECK: [[@LINE-2]]:12 | instance-property/Swift | z | s:14swift_ide_test6AClassC1zSaySiGv | Ref,Read,Writ | rel: 0
+// CHECK: [[@LINE-3]]:19 | variable/Swift | anInstance | s:14swift_ide_test10anInstanceAA6AClassCv | Ref,Read | rel: 0
+// CHECK: [[@LINE-4]]:30 | instance-property/Swift | z | s:14swift_ide_test6AClassC1zSaySiGv | Ref,Read,Writ | rel: 0
 
 let otherInstance = AStruct(x: 1)
-// CHECK: [[@LINE-1]]:21 | struct/Swift | AStruct | s:V14swift_ide_test7AStruct | Ref | rel: 0
+// CHECK: [[@LINE-1]]:21 | struct/Swift | AStruct | s:14swift_ide_test7AStructV | Ref | rel: 0
 
 let _ = otherInstance[0]
-// CHECK: [[@LINE-1]]:9 | variable/Swift | otherInstance | s:v14swift_ide_test13otherInstanceVS_7AStruct | Ref,Read | rel: 0
-// CHECK: [[@LINE-2]]:22 | instance-property/subscript/Swift | subscript(_:) | s:iV14swift_ide_test7AStruct9subscriptFSiSi | Ref,Read | rel: 0
+// CHECK: [[@LINE-1]]:9 | variable/Swift | otherInstance | s:14swift_ide_test13otherInstanceAA7AStructVv | Ref,Read | rel: 0
+// CHECK: [[@LINE-2]]:22 | instance-property/subscript/Swift | subscript(_:) | s:14swift_ide_test7AStructV9subscriptSiSici | Ref,Read | rel: 0
 
 let _ = anInstance[0]
-// CHECK: [[@LINE-1]]:9 | variable/Swift | anInstance | s:v14swift_ide_test10anInstanceCS_6AClass | Ref,Read | rel: 0
-// CHECK: [[@LINE-2]]:19 | instance-property/subscript/Swift | subscript(_:) | s:iC14swift_ide_test6AClass9subscriptFSiSi | Ref,Read | rel: 0
+// CHECK: [[@LINE-1]]:9 | variable/Swift | anInstance | s:14swift_ide_test10anInstanceAA6AClassCv | Ref,Read | rel: 0
+// CHECK: [[@LINE-2]]:19 | instance-property/subscript/Swift | subscript(_:) | s:14swift_ide_test6AClassC9subscriptSiSici | Ref,Read | rel: 0
 
 let aSubInstance: AClass = ASubClass(x: 1)
-// CHECK: [[@LINE-1]]:5 | variable/Swift | aSubInstance | s:v14swift_ide_test12aSubInstanceCS_6AClass | Def | rel: 0
-// CHECK: [[@LINE-2]]:28 | class/Swift | ASubClass | s:C14swift_ide_test9ASubClass | Ref | rel: 0
+// CHECK: [[@LINE-1]]:5 | variable/Swift | aSubInstance | s:14swift_ide_test12aSubInstanceAA6AClassCv | Def | rel: 0
+// CHECK: [[@LINE-2]]:28 | class/Swift | ASubClass | s:14swift_ide_test9ASubClassC | Ref | rel: 0
 
 // Dynamic, RelationReceivedBy
 let _ = aSubInstance.foo()
-// CHECK: [[@LINE-1]]:9 | variable/Swift | aSubInstance | s:v14swift_ide_test12aSubInstanceCS_6AClass | Ref,Read | rel: 0
-// CHECK: [[@LINE-2]]:22 | instance-method/Swift | foo() | s:FC14swift_ide_test6AClass3fooFT_Si | Ref,Call,Dyn,RelRec | rel: 1
-// CHECK-NEXT: RelRec | AClass | s:C14swift_ide_test6AClass
+// CHECK: [[@LINE-1]]:9 | variable/Swift | aSubInstance | s:14swift_ide_test12aSubInstanceAA6AClassCv | Ref,Read | rel: 0
+// CHECK: [[@LINE-2]]:22 | instance-method/Swift | foo() | s:14swift_ide_test6AClassC3fooSiyF | Ref,Call,Dyn,RelRec | rel: 1
+// CHECK-NEXT: RelRec | AClass | s:14swift_ide_test6AClassC
 
diff --git a/test/Parse/subscripting.swift b/test/Parse/subscripting.swift
index 0351c5b..a81c6ae 100644
--- a/test/Parse/subscripting.swift
+++ b/test/Parse/subscripting.swift
@@ -59,7 +59,8 @@
 
 struct Y1 {
   var stored: Int
-  subscript(_: i, j: Int) -> Int { // expected-error {{use of undeclared type 'i'}}
+  // FIXME: Duplicate diagnostics
+  subscript(_: i, j: Int) -> Int { // expected-error 3{{use of undeclared type 'i'}}
     get {
       return stored + j
     }
diff --git a/test/SILGen/opaque_values_silgen.swift b/test/SILGen/opaque_values_silgen.swift
index f5324ad..0111b8f 100644
--- a/test/SILGen/opaque_values_silgen.swift
+++ b/test/SILGen/opaque_values_silgen.swift
@@ -1,7 +1,6 @@
 // RUN: %target-swift-frontend -enable-sil-opaque-values -emit-sorted-sil -Xllvm -new-mangling-for-tests -Xllvm -sil-full-demangle -emit-silgen %s | %FileCheck %s
 
 // UNSUPPORTED: resilient_stdlib
-// REQUIRES: talk_later_today
 
 protocol Foo {
   func foo()
diff --git a/test/SourceKit/CodeComplete/complete_constructor.swift.response b/test/SourceKit/CodeComplete/complete_constructor.swift.response
index e582f49..e4e9208 100644
--- a/test/SourceKit/CodeComplete/complete_constructor.swift.response
+++ b/test/SourceKit/CodeComplete/complete_constructor.swift.response
@@ -8,7 +8,7 @@
       key.typename: "Foo",
       key.context: source.codecompletion.context.thisclass,
       key.num_bytes_to_erase: 0,
-      key.associated_usrs: "s:FC20complete_constructor3FoocFT4arg1Si4arg2Si_S0_",
+      key.associated_usrs: "s:20complete_constructor3FooCACSi4arg1_Si4arg2tcfc",
       key.modulename: "complete_constructor"
     }
   ]
diff --git a/test/SourceKit/CodeComplete/complete_member.swift b/test/SourceKit/CodeComplete/complete_member.swift
index 5610737..0fdae65 100644
--- a/test/SourceKit/CodeComplete/complete_member.swift
+++ b/test/SourceKit/CodeComplete/complete_member.swift
@@ -52,7 +52,7 @@
 // CHECK-OPTIONAL-NEXT:       key.typename: "Double",
 // CHECK-OPTIONAL-NEXT:       key.context: source.codecompletion.context.thisclass,
 // CHECK-OPTIONAL-NEXT:       key.num_bytes_to_erase: 1,
-// CHECK-OPTIONAL-NEXT:       key.associated_usrs: "s:FP15complete_member11FooProtocol16fooInstanceFunc1FSiSd",
+// CHECK-OPTIONAL-NEXT:       key.associated_usrs: "s:15complete_member11FooProtocolP16fooInstanceFunc1SdSiF",
 // CHECK-OPTIONAL-NEXT:       key.modulename: "complete_member"
 // CHECK-OPTIONAL-NEXT:     },
 
@@ -73,6 +73,6 @@
 // CHECK-OVERRIDE_USR-NEXT:     key.typename: "Void",
 // CHECK-OVERRIDE_USR-NEXT:     key.context: source.codecompletion.context.thisclass,
 // CHECK-OVERRIDE_USR-NEXT:     key.num_bytes_to_erase: 0,
-// CHECK-OVERRIDE_USR-NEXT:     key.associated_usrs: "s:FC15complete_member7Derived3fooFT_T_ s:FC15complete_member4Base3fooFT_T_",
+// CHECK-OVERRIDE_USR-NEXT:     key.associated_usrs: "s:15complete_member7DerivedC3fooyyF s:15complete_member4BaseC3fooyyF",
 // CHECK-OVERRIDE_USR-NEXT:     key.modulename: "complete_member"
 // CHECK-OVERRIDE_USR-NEXT: }
diff --git a/test/SourceKit/CodeComplete/complete_member.swift.response b/test/SourceKit/CodeComplete/complete_member.swift.response
index e508eb0..7f5bfe0 100644
--- a/test/SourceKit/CodeComplete/complete_member.swift.response
+++ b/test/SourceKit/CodeComplete/complete_member.swift.response
@@ -8,7 +8,7 @@
       key.typename: "Double",
       key.context: source.codecompletion.context.thisclass,
       key.num_bytes_to_erase: 0,
-      key.associated_usrs: "s:FP15complete_member11FooProtocol16fooInstanceFunc0FT_Sd",
+      key.associated_usrs: "s:15complete_member11FooProtocolP16fooInstanceFunc0SdyF",
       key.modulename: "complete_member"
     },
     {
@@ -19,7 +19,7 @@
       key.typename: "Double",
       key.context: source.codecompletion.context.thisclass,
       key.num_bytes_to_erase: 0,
-      key.associated_usrs: "s:FP15complete_member11FooProtocol16fooInstanceFunc1FSiSd",
+      key.associated_usrs: "s:15complete_member11FooProtocolP16fooInstanceFunc1SdSiF",
       key.modulename: "complete_member"
     },
     {
@@ -31,7 +31,7 @@
       key.doc.brief: "fooInstanceVar Aaa. Bbb.",
       key.context: source.codecompletion.context.thisclass,
       key.num_bytes_to_erase: 0,
-      key.associated_usrs: "s:vP15complete_member11FooProtocol14fooInstanceVarSi",
+      key.associated_usrs: "s:15complete_member11FooProtocolP14fooInstanceVarSiv",
       key.modulename: "complete_member"
     }
   ]
diff --git a/test/SourceKit/CodeComplete/complete_moduleimportdepth.swift b/test/SourceKit/CodeComplete/complete_moduleimportdepth.swift
index ac44828..e3d60ba 100644
--- a/test/SourceKit/CodeComplete/complete_moduleimportdepth.swift
+++ b/test/SourceKit/CodeComplete/complete_moduleimportdepth.swift
@@ -18,7 +18,7 @@
 // CHECK-NEXT:   key.context: source.codecompletion.context.othermodule,
 // CHECK-NEXT:   key.moduleimportdepth: 1,
 // CHECK-NEXT:   key.num_bytes_to_erase: 0,
-// CHECK:   key.associated_usrs: "s:Fs3absuRxs12SignedNumberrFxx",
+// CHECK:   key.associated_usrs: "s:s3absxxs12SignedNumberRzlF",
 // CHECK-NEXT:   key.modulename: "Swift"
 // CHECK-NEXT: },
 
diff --git a/test/SourceKit/CodeComplete/complete_override.swift.response b/test/SourceKit/CodeComplete/complete_override.swift.response
index e14418d..87fb5e9 100644
--- a/test/SourceKit/CodeComplete/complete_override.swift.response
+++ b/test/SourceKit/CodeComplete/complete_override.swift.response
@@ -71,7 +71,7 @@
       key.typename: "",
       key.context: source.codecompletion.context.superclass,
       key.num_bytes_to_erase: 0,
-      key.associated_usrs: "s:FC17complete_override4Base1fFT5getMeSi1bSd_T_",
+      key.associated_usrs: "s:17complete_override4BaseC1fySi5getMe_Sd1btF",
       key.modulename: "complete_override"
     },
     {
@@ -136,7 +136,7 @@
       key.typename: "",
       key.context: source.codecompletion.context.superclass,
       key.num_bytes_to_erase: 0,
-      key.associated_usrs: "s:FC17complete_override4BasecFT_S0_",
+      key.associated_usrs: "s:17complete_override4BaseCACycfc",
       key.modulename: "complete_override"
     },
     {
diff --git a/test/SourceKit/CursorInfo/cursor_big_array.swift b/test/SourceKit/CursorInfo/cursor_big_array.swift
index f893e89..d7efcc8 100644
--- a/test/SourceKit/CursorInfo/cursor_big_array.swift
+++ b/test/SourceKit/CursorInfo/cursor_big_array.swift
@@ -1,5 +1,5 @@
 // RUN: %sourcekitd-test -req=cursor -pos=1:10 %S/../Inputs/big_array.swift -- %S/../Inputs/big_array.swift | %FileCheck %s
 // CHECK: source.lang.swift.decl.var.global (1:5-1:20)
 // CHECK: gCubeVertexData
-// CHECK: s:v9big_array15gCubeVertexDataGSaSf_
+// CHECK: s:9big_array15gCubeVertexDataSaySfGv
 // CHECK: [Float]
diff --git a/test/SourceKit/CursorInfo/cursor_generics.swift b/test/SourceKit/CursorInfo/cursor_generics.swift
index 6f10353..e0a898f 100644
--- a/test/SourceKit/CursorInfo/cursor_generics.swift
+++ b/test/SourceKit/CursorInfo/cursor_generics.swift
@@ -10,7 +10,7 @@
 }
 
 // RUN: %sourcekitd-test -req=cursor -pos=1:10 %s -- %s | %FileCheck -check-prefix=CHECK1 %s
-// CHECK1: <Declaration>func testGenerics&lt;T&gt;(x: <Type usr="s:tF15cursor_generics12testGenericsurFT1xx_T_L_1TMx">T</Type>)</Declaration>
+// CHECK1: <Declaration>func testGenerics&lt;T&gt;(x: <Type usr="s:15cursor_generics12testGenericsyx1x_tlF1TL_xmfp">T</Type>)</Declaration>
 
 // RUN: %sourcekitd-test -req=cursor -pos=5:10 %s -- %s | %FileCheck -check-prefix=CHECK2 %s
 // CHECK2: <Function
diff --git a/test/SourceKit/CursorInfo/cursor_info.swift b/test/SourceKit/CursorInfo/cursor_info.swift
index 86cf180..c0024ac 100644
--- a/test/SourceKit/CursorInfo/cursor_info.swift
+++ b/test/SourceKit/CursorInfo/cursor_info.swift
@@ -220,13 +220,13 @@
 // RUN: %sourcekitd-test -req=cursor -pos=9:8 %s -- -F %S/../Inputs/libIDE-mock-sdk %mcp_opt %s | %FileCheck -check-prefix=CHECK1 %s
 // CHECK1:      source.lang.swift.ref.var.global (4:5-4:9)
 // CHECK1-NEXT: glob
-// CHECK1-NEXT: s:v11cursor_info4globSi{{$}}
+// CHECK1-NEXT: s:11cursor_info4globSiv{{$}}
 // CHECK1-NEXT: Int
 
 // RUN: %sourcekitd-test -req=cursor -pos=9:11 %s -- -F %S/../Inputs/libIDE-mock-sdk -I %t.tmp %mcp_opt %s | %FileCheck -check-prefix=CHECK2 %s
 // CHECK2:      source.lang.swift.ref.function.operator.infix ()
 // CHECK2-NEXT: +
-// CHECK2-NEXT: s:Fsoi1pFTSiSi_Si
+// CHECK2-NEXT: s:s1poiSiSi_SitF
 // CHECK2-NEXT: (Int, Int) -> Int{{$}}
 // CHECK2-NEXT: _TtFTSiSi_Si
 // CHECK2-NEXT: Swift{{$}}
@@ -238,7 +238,7 @@
 // RUN: %sourcekitd-test -req=cursor -pos=9:12 %s -- -F %S/../Inputs/libIDE-mock-sdk -I %t.tmp %mcp_opt %s | %FileCheck -check-prefix=CHECK3 %s
 // CHECK3:      source.lang.swift.ref.var.local (8:12-8:13)
 // CHECK3-NEXT: x{{$}}
-// CHECK3-NEXT: s:vF11cursor_info3gooFSiT_L_1xSi{{$}}
+// CHECK3-NEXT: s:11cursor_info3gooySiF1xL_Siv{{$}}
 // CHECK3-NEXT: Int{{$}}
 // CHECK3-NEXT: _TtSi
 // CHECK3-NEXT: <Declaration>let x: <Type usr="s:Si">Int</Type></Declaration>
@@ -251,41 +251,41 @@
 // CHECK4-NEXT: Int32{{$}}
 // CHECK4-NEXT: _TtVs5Int32
 // CHECK4-NEXT: Foo{{$}}
-// CHECK4-NEXT: <Declaration>var fooIntVar: <Type usr="s:Vs5Int32">Int32</Type></Declaration>
-// CHECK4-NEXT: <decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>fooIntVar</decl.name>: <decl.var.type><ref.struct usr="s:Vs5Int32">Int32</ref.struct></decl.var.type></decl.var.global>
+// CHECK4-NEXT: <Declaration>var fooIntVar: <Type usr="s:s5Int32V">Int32</Type></Declaration>
+// CHECK4-NEXT: <decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>fooIntVar</decl.name>: <decl.var.type><ref.struct usr="s:s5Int32V">Int32</ref.struct></decl.var.type></decl.var.global>
 // CHECK4-NEXT: <Variable file="{{[^"]+}}Foo.h" line="{{[0-9]+}}" column="{{[0-9]+}}"><Name>fooIntVar</Name><USR>c:@fooIntVar</USR><Declaration>var fooIntVar: Int32</Declaration><Abstract><Para> Aaa. fooIntVar. Bbb.</Para></Abstract></Variable>
 
 // RUN: %sourcekitd-test -req=cursor -pos=8:7 %s -- -F %S/../Inputs/libIDE-mock-sdk -I %t.tmp %mcp_opt %s | %FileCheck -check-prefix=CHECK5 %s
 // CHECK5:      source.lang.swift.decl.function.free (8:6-8:19)
 // CHECK5-NEXT: goo(_:){{$}}
-// CHECK5-NEXT: s:F11cursor_info3gooFSiT_{{$}}
+// CHECK5-NEXT: s:11cursor_info3gooySiF{{$}}
 // CHECK5-NEXT: (Int) -> (){{$}}
 
 // RUN: %sourcekitd-test -req=cursor -pos=9:32 %s -- -F %S/../Inputs/libIDE-mock-sdk -I %t.tmp %mcp_opt %s | %FileCheck -check-prefix=CHECK6 %s
 // CHECK6:      source.lang.swift.ref.function.free ()
 // CHECK6-NEXT: fooSwiftFunc
-// CHECK6-NEXT: s:F14FooSwiftModule12fooSwiftFuncFT_Si
+// CHECK6-NEXT: s:14FooSwiftModule03fooB4FuncSiyF
 // CHECK6-NEXT: () -> Int
 // CHECK6-NEXT: _TtFT_Si
 // CHECK6-NEXT: FooSwiftModule
 // CHECK6-NEXT: <Declaration>func fooSwiftFunc() -&gt; <Type usr="s:Si">Int</Type></Declaration>
 // CHECK6-NEXT: <decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooSwiftFunc</decl.name>() -&gt; <decl.function.returntype><ref.struct usr="s:Si">Int</ref.struct></decl.function.returntype></decl.function.free>
-// CHECK6-NEXT: {{^}}<Function><Name>fooSwiftFunc()</Name><USR>s:F14FooSwiftModule12fooSwiftFuncFT_Si</USR><Declaration>func fooSwiftFunc() -&gt; Int</Declaration><Abstract><Para>This is ‘fooSwiftFunc’ from ‘FooSwiftModule’.</Para></Abstract></Function>{{$}}
+// CHECK6-NEXT: {{^}}<Function><Name>fooSwiftFunc()</Name><USR>s:14FooSwiftModule03fooB4FuncSiyF</USR><Declaration>func fooSwiftFunc() -&gt; Int</Declaration><Abstract><Para>This is ‘fooSwiftFunc’ from ‘FooSwiftModule’.</Para></Abstract></Function>{{$}}
 
 // RUN: %sourcekitd-test -req=cursor -pos=14:10 %s -- -F %S/../Inputs/libIDE-mock-sdk -I %t.tmp %mcp_opt %s | %FileCheck -check-prefix=CHECK7 %s
 // CHECK7:      source.lang.swift.ref.struct (13:8-13:10)
 // CHECK7-NEXT: S1
-// CHECK7-NEXT: s:V11cursor_info2S1
+// CHECK7-NEXT: s:11cursor_info2S1V
 // CHECK7-NEXT: S1.Type
 // CHECK7-NEXT: _Tt
 // CHECK7-NEXT: <Declaration>struct S1</Declaration>
 // CHECK7-NEXT: <decl.struct><syntaxtype.keyword>struct</syntaxtype.keyword> <decl.name>S1</decl.name></decl.struct>
-// CHECK7-NEXT: <Class file="{{[^"]+}}cursor_info.swift" line="13" column="8"><Name>S1</Name><USR>s:V11cursor_info2S1</USR><Declaration>struct S1</Declaration><Abstract><Para>Aaa.  S1.  Bbb.</Para></Abstract></Class>
+// CHECK7-NEXT: <Class file="{{[^"]+}}cursor_info.swift" line="13" column="8"><Name>S1</Name><USR>s:11cursor_info2S1V</USR><Declaration>struct S1</Declaration><Abstract><Para>Aaa.  S1.  Bbb.</Para></Abstract></Class>
 
 // RUN: %sourcekitd-test -req=cursor -pos=19:12 %s -- -F %S/../Inputs/libIDE-mock-sdk -I %t.tmp %mcp_opt %s | %FileCheck -check-prefix=CHECK8 %s
 // CHECK8:      source.lang.swift.ref.function.constructor (18:3-18:15)
 // CHECK8-NEXT: init
-// CHECK8-NEXT: s:FC11cursor_info2CCcFT1xSi_S0_
+// CHECK8-NEXT: s:11cursor_info2CCCACSi1x_tcfc
 // CHECK8-NEXT: (CC.Type) -> (Int) -> CC
 // CHECK8-NEXT: _TtFT1xSi_C11cursor_info2CC
 // CHECK8-NEXT: <Container>_TtC11cursor_info2CC</Container>
@@ -329,7 +329,7 @@
 // CHECK15: <Declaration>func myFunc(arg1: <Type usr="s:SS">String</Type>, options: <Type usr="s:Si">Int</Type>)</Declaration>
 // CHECK15: <decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>myFunc</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>arg1</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr="s:SS">String</ref.struct></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>options</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr="s:Si">Int</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.free>
 // CHECK15: RELATED BEGIN
-// CHECK15-NEXT: <RelatedName usr="s:F11cursor_info6myFuncFT4arg1SS_T_">myFunc(arg1:)</RelatedName>
+// CHECK15-NEXT: <RelatedName usr="s:11cursor_info6myFuncySS4arg1_tF">myFunc(arg1:)</RelatedName>
 // CHECK15-NEXT: RELATED END
 
 // RUN: %sourcekitd-test -req=cursor -pos=41:26 %s -- -F %S/../Inputs/libIDE-mock-sdk -I %t.tmp %mcp_opt %s | %FileCheck -check-prefix=CHECK16 %s
@@ -391,7 +391,7 @@
 // RUN: %sourcekitd-test -req=cursor -pos=74:3 %s -- -F %S/../Inputs/libIDE-mock-sdk -I %t.tmp %mcp_opt %s | %FileCheck %s -check-prefix=CHECK29
 // CHECK29: source.lang.swift.decl.function.destructor (74:3-74:9)
 // CHECK29-NEXT: deinit
-// CHECK29-NEXT: s:FC11cursor_info2C3d
+// CHECK29-NEXT: s:11cursor_info2C3Cfd
 // CHECK29-NEXT: (C3) -> ()
 // CHECK29-NEXT: _TtFT_T_
 // CHECK29-NEXT: <Declaration>deinit</Declaration>
@@ -400,7 +400,7 @@
 // RUN: %sourcekitd-test -req=cursor -pos=75:3 %s -- -F %S/../Inputs/libIDE-mock-sdk -I %t.tmp %mcp_opt %s | %FileCheck %s -check-prefix=CHECK30
 // CHECK30: source.lang.swift.decl.function.constructor (75:3-75:16)
 // CHECK30-NEXT: init(x:)
-// CHECK30-NEXT: s:FC11cursor_info2C3cFT1xSi_GSQS0__
+// CHECK30-NEXT: s:11cursor_info2C3CSQyACGSi1x_tcfc
 // CHECK30-NEXT: (C3.Type) -> (Int) -> C3!
 // CHECK30-NEXT: _TtFT1xSi_GSQC11cursor_info2C3_
 // CHECK30-NEXT: <Declaration>init!(x: <Type usr="s:Si">Int</Type>)</Declaration>
@@ -409,7 +409,7 @@
 // RUN: %sourcekitd-test -req=cursor -pos=76:3 %s -- -F %S/../Inputs/libIDE-mock-sdk -I %t.tmp %mcp_opt %s | %FileCheck %s -check-prefix=CHECK31
 // CHECK31: source.lang.swift.decl.function.constructor (76:3-76:16)
 // CHECK31-NEXT: init(y:)
-// CHECK31-NEXT: s:FC11cursor_info2C3cFT1ySi_GSqS0__
+// CHECK31-NEXT: s:11cursor_info2C3CACSgSi1y_tcfc
 // CHECK31-NEXT: (C3.Type) -> (Int) -> C3?
 // CHECK31-NEXT: _TtFT1ySi_GSqC11cursor_info2C3_
 // CHECK31-NEXT: <Declaration>init?(y: <Type usr="s:Si">Int</Type>)</Declaration>
@@ -418,7 +418,7 @@
 // RUN: %sourcekitd-test -req=cursor -pos=77:3 %s -- -F %S/../Inputs/libIDE-mock-sdk -I %t.tmp %mcp_opt %s | %FileCheck %s -check-prefix=CHECK32
 // CHECK32: source.lang.swift.decl.function.constructor (77:3-77:15)
 // CHECK32-NEXT: init(z:)
-// CHECK32-NEXT: s:FC11cursor_info2C3cFzT1zSi_S0_
+// CHECK32-NEXT: s:11cursor_info2C3CACSi1z_tKcfc
 // CHECK32-NEXT: (C3.Type) -> (Int) throws -> C3
 // CHECK32-NEXT: _TtFzT1zSi_C11cursor_info2C3
 // CHECK32-NEXT: <Declaration>init(z: <Type usr="s:Si">Int</Type>) throws</Declaration>
@@ -427,39 +427,39 @@
 // RUN: %sourcekitd-test -req=cursor -pos=80:8 %s -- -F %S/../Inputs/libIDE-mock-sdk -I %t.tmp %mcp_opt %s | %FileCheck %s -check-prefix=CHECK33
 // CHECK33: source.lang.swift.decl.struct (80:8-80:10)
 // CHECK33-NEXT: S2
-// CHECK33-NEXT: s:V11cursor_info2S2
+// CHECK33-NEXT: s:11cursor_info2S2V
 // CHECK33-NEXT: S2<T, U>.Type
 // CHECK33: <Declaration>struct S2&lt;T, U&gt; where T == U</Declaration>
-// CHECK33-NEXT: <decl.struct><syntaxtype.keyword>struct</syntaxtype.keyword> <decl.name>S2</decl.name>&lt;<decl.generic_type_param usr="s:tV11cursor_info2S21TMx"><decl.generic_type_param.name>T</decl.generic_type_param.name></decl.generic_type_param>, <decl.generic_type_param usr="s:tV11cursor_info2S21UMq_"><decl.generic_type_param.name>U</decl.generic_type_param.name></decl.generic_type_param>&gt; <syntaxtype.keyword>where</syntaxtype.keyword> <decl.generic_type_requirement>T == U</decl.generic_type_requirement></decl.struct>
+// CHECK33-NEXT: <decl.struct><syntaxtype.keyword>struct</syntaxtype.keyword> <decl.name>S2</decl.name>&lt;<decl.generic_type_param usr="s:11cursor_info2S2V1Txmfp"><decl.generic_type_param.name>T</decl.generic_type_param.name></decl.generic_type_param>, <decl.generic_type_param usr="s:11cursor_info2S2V1Uq_mfp"><decl.generic_type_param.name>U</decl.generic_type_param.name></decl.generic_type_param>&gt; <syntaxtype.keyword>where</syntaxtype.keyword> <decl.generic_type_requirement>T == U</decl.generic_type_requirement></decl.struct>
 
 // RUN: %sourcekitd-test -req=cursor -pos=81:8 %s -- -F %S/../Inputs/libIDE-mock-sdk -I %t.tmp %mcp_opt %s | %FileCheck %s -check-prefix=CHECK34
 // CHECK34: source.lang.swift.decl.function.method.instance (81:8-81:50)
 // CHECK34-NEXT: foo(_:)
-// CHECK34-NEXT: s:FV11cursor_info2S23foou0_Rd__zqd_0_rFFT_T_FT_T_
+// CHECK34-NEXT: s:11cursor_info2S2V3fooyycyycqd_0_Rsd__r0_lF
 // CHECK34-NEXT: <T, U, V, W where T == U, V == W> (S2<T, U>) -> (() -> ()) -> () -> ()
 // CHECK34: <Declaration>func foo&lt;V, W&gt;(_ closure: () -&gt; ()) -&gt; () -&gt; () where V == W</Declaration>
-// CHECK34-NEXT: <decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>foo</decl.name>&lt;<decl.generic_type_param usr="s:tFV11cursor_info2S23foou0_Rd__zqd_0_rFFT_T_FT_T_L_1VMqd__"><decl.generic_type_param.name>V</decl.generic_type_param.name></decl.generic_type_param>, <decl.generic_type_param usr="s:tFV11cursor_info2S23foou0_Rd__zqd_0_rFFT_T_FT_T_L_1WMqd_0_"><decl.generic_type_param.name>W</decl.generic_type_param.name></decl.generic_type_param>&gt;(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>closure</decl.var.parameter.name>: <decl.var.parameter.type>() -&gt; <decl.function.returntype><tuple>()</tuple></decl.function.returntype></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype>() -&gt; <decl.function.returntype><tuple>()</tuple></decl.function.returntype></decl.function.returntype> <syntaxtype.keyword>where</syntaxtype.keyword> <decl.generic_type_requirement>V == W</decl.generic_type_requirement></decl.function.method.instance>
+// CHECK34-NEXT: <decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>foo</decl.name>&lt;<decl.generic_type_param usr="s:11cursor_info2S2V3fooyycyycqd_0_Rsd__r0_lF1VL_qd__mfp"><decl.generic_type_param.name>V</decl.generic_type_param.name></decl.generic_type_param>, <decl.generic_type_param usr="s:11cursor_info2S2V3fooyycyycqd_0_Rsd__r0_lF1WL_qd_0_mfp"><decl.generic_type_param.name>W</decl.generic_type_param.name></decl.generic_type_param>&gt;(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>closure</decl.var.parameter.name>: <decl.var.parameter.type>() -&gt; <decl.function.returntype><tuple>()</tuple></decl.function.returntype></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype>() -&gt; <decl.function.returntype><tuple>()</tuple></decl.function.returntype></decl.function.returntype> <syntaxtype.keyword>where</syntaxtype.keyword> <decl.generic_type_requirement>V == W</decl.generic_type_requirement></decl.function.method.instance>
 
 // RUN: %sourcekitd-test -req=cursor -pos=83:7 %s -- -F %S/../Inputs/libIDE-mock-sdk -I %t.tmp %mcp_opt %s | %FileCheck %s -check-prefix=CHECK35
 // CHECK35: source.lang.swift.decl.class (83:7-83:9)
 // CHECK35-NEXT: C4
-// CHECK35-NEXT: s:C11cursor_info2C4
+// CHECK35-NEXT: s:11cursor_info2C4C
 // CHECK35-NEXT: C4<T, U>.Type
 // CHECK35: <Declaration>class C4&lt;T, U&gt; where T == U</Declaration>
-// CHECK35-NEXT: <decl.class><syntaxtype.keyword>class</syntaxtype.keyword> <decl.name>C4</decl.name>&lt;<decl.generic_type_param usr="s:tC11cursor_info2C41TMx"><decl.generic_type_param.name>T</decl.generic_type_param.name></decl.generic_type_param>, <decl.generic_type_param usr="s:tC11cursor_info2C41UMq_"><decl.generic_type_param.name>U</decl.generic_type_param.name></decl.generic_type_param>&gt; <syntaxtype.keyword>where</syntaxtype.keyword> <decl.generic_type_requirement>T == U</decl.generic_type_requirement></decl.class>
+// CHECK35-NEXT: <decl.class><syntaxtype.keyword>class</syntaxtype.keyword> <decl.name>C4</decl.name>&lt;<decl.generic_type_param usr="s:11cursor_info2C4C1Txmfp"><decl.generic_type_param.name>T</decl.generic_type_param.name></decl.generic_type_param>, <decl.generic_type_param usr="s:11cursor_info2C4C1Uq_mfp"><decl.generic_type_param.name>U</decl.generic_type_param.name></decl.generic_type_param>&gt; <syntaxtype.keyword>where</syntaxtype.keyword> <decl.generic_type_requirement>T == U</decl.generic_type_requirement></decl.class>
 
 // RUN: %sourcekitd-test -req=cursor -pos=84:6 %s -- -F %S/../Inputs/libIDE-mock-sdk -I %t.tmp %mcp_opt %s | %FileCheck %s -check-prefix=CHECK36
 // CHECK36: source.lang.swift.decl.enum (84:6-84:8)
 // CHECK36-NEXT: E1
-// CHECK36-NEXT: s:O11cursor_info2E1
+// CHECK36-NEXT: s:11cursor_info2E1O
 // CHECK36-NEXT: E1<T, U>.Type
 // CHECK36: <Declaration>enum E1&lt;T, U&gt; where T == U</Declaration>
-// CHECK36-NEXT: <decl.enum><syntaxtype.keyword>enum</syntaxtype.keyword> <decl.name>E1</decl.name>&lt;<decl.generic_type_param usr="s:tO11cursor_info2E11TMx"><decl.generic_type_param.name>T</decl.generic_type_param.name></decl.generic_type_param>, <decl.generic_type_param usr="s:tO11cursor_info2E11UMq_"><decl.generic_type_param.name>U</decl.generic_type_param.name></decl.generic_type_param>&gt; <syntaxtype.keyword>where</syntaxtype.keyword> <decl.generic_type_requirement>T == U</decl.generic_type_requirement></decl.enum>
+// CHECK36-NEXT: <decl.enum><syntaxtype.keyword>enum</syntaxtype.keyword> <decl.name>E1</decl.name>&lt;<decl.generic_type_param usr="s:11cursor_info2E1O1Txmfp"><decl.generic_type_param.name>T</decl.generic_type_param.name></decl.generic_type_param>, <decl.generic_type_param usr="s:11cursor_info2E1O1Uq_mfp"><decl.generic_type_param.name>U</decl.generic_type_param.name></decl.generic_type_param>&gt; <syntaxtype.keyword>where</syntaxtype.keyword> <decl.generic_type_requirement>T == U</decl.generic_type_requirement></decl.enum>
 
 // RUN: %sourcekitd-test -req=cursor -pos=86:6 %s -- -F %S/../Inputs/libIDE-mock-sdk -I %t.tmp %mcp_opt %s | %FileCheck %s -check-prefix=CHECK37
 // CHECK37: source.lang.swift.decl.function.free (86:6-86:111)
 // CHECK37-NEXT: nonDefaultArgNames(external1:_:external3:external4:_:)
-// CHECK37-NEXT: s:F11cursor_info18nonDefaultArgNamesFT9external1SiSi9external3Si9external4SiSi_T_
+// CHECK37-NEXT: s:11cursor_info18nonDefaultArgNamesySi9external1_SiSi9external3Si9external4SitF
 // CHECK37-NEXT: (Int, Int, Int, Int, Int) -> ()
 // CHECK37: <Declaration>func nonDefaultArgNames(external1 local1: <Type usr="s:Si">Int</Type>, _ local2: <Type usr="s:Si">Int</Type>, external3 local3: <Type usr="s:Si">Int</Type>, external4 _: <Type usr="s:Si">Int</Type>, _: <Type usr="s:Si">Int</Type>)</Declaration>
 // CHECK37-NEXT: <decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>nonDefaultArgNames</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>external1</decl.var.parameter.argument_label> <decl.var.parameter.name>local1</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr="s:Si">Int</ref.struct></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>local2</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr="s:Si">Int</ref.struct></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>external3</decl.var.parameter.argument_label> <decl.var.parameter.name>local3</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr="s:Si">Int</ref.struct></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>external4</decl.var.parameter.argument_label> <decl.var.parameter.name>_</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr="s:Si">Int</ref.struct></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr="s:Si">Int</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.free>
@@ -470,7 +470,7 @@
 // RUN: %sourcekitd-test -req=cursor -pos=91:8 %s -- -F %S/../Inputs/libIDE-mock-sdk -I %t.tmp %mcp_opt %s | %FileCheck %s -check-prefix=CHECK39
 // CHECK39: source.lang.swift.decl.enumelement (91:8-91:10)
 // CHECK39-NEXT: C1
-// CHECK39-NEXT: s:FO11cursor_info2E22C1FMS0_S0_
+// CHECK39-NEXT: s:11cursor_info2E2O2C1AcCmF
 // CHECK39-NEXT: (E2.Type) -> E2
 // CHECK39: <Declaration>case C1</Declaration>
 // CHECK39-NEXT: <decl.enumelement><syntaxtype.keyword>case</syntaxtype.keyword> <decl.name>C1</decl.name></decl.enumelement>
@@ -478,7 +478,7 @@
 // RUN: %sourcekitd-test -req=cursor -pos=92:8 %s -- -F %S/../Inputs/libIDE-mock-sdk -I %t.tmp %mcp_opt %s | %FileCheck %s -check-prefix=CHECK40
 // CHECK40: source.lang.swift.decl.enumelement (92:8-92:10)
 // CHECK40-NEXT: C2
-// CHECK40-NEXT: s:FO11cursor_info2E22C2FMS0_FT1xSi1ySS_S0_
+// CHECK40-NEXT: s:11cursor_info2E2O2C2ACSi1x_SS1ytcACmF
 // CHECK40-NEXT: (E2.Type) -> (Int, String) -> E2
 // CHECK40: <Declaration>case C2(x: <Type usr="s:Si">Int</Type>, y: <Type usr="s:SS">String</Type>)</Declaration>
 // CHECK40-NEXT: <decl.enumelement><syntaxtype.keyword>case</syntaxtype.keyword> <decl.name>C2</decl.name><tuple>(<tuple.element><tuple.element.argument_label>x</tuple.element.argument_label>: <tuple.element.type><ref.struct usr="s:Si">Int</ref.struct></tuple.element.type></tuple.element>, <tuple.element><tuple.element.argument_label>y</tuple.element.argument_label>: <tuple.element.type><ref.struct usr="s:SS">String</ref.struct></tuple.element.type></tuple.element>)</tuple></decl.enumelement>
@@ -486,7 +486,7 @@
 // RUN: %sourcekitd-test -req=cursor -pos=92:31 %s -- -F %S/../Inputs/libIDE-mock-sdk -I %t.tmp %mcp_opt %s | %FileCheck %s -check-prefix=CHECK41
 // CHECK41: source.lang.swift.decl.enumelement (92:31-92:33)
 // CHECK41-NEXT: C3
-// CHECK41-NEXT: s:FO11cursor_info2E22C3FMS0_FSiS0_
+// CHECK41-NEXT: s:11cursor_info2E2O2C3ACSicACmF
 // CHECK41-NEXT: (E2.Type) -> (Int) -> E2
 // CHECK41: <Declaration>case C3(<Type usr="s:Si">Int</Type>)</Declaration>
 // CHECK41-NEXT: <decl.enumelement><syntaxtype.keyword>case</syntaxtype.keyword> <decl.name>C3</decl.name>(<ref.struct usr="s:Si">Int</ref.struct>)</decl.enumelement>
@@ -495,7 +495,7 @@
 // RUN: %sourcekitd-test -req=cursor -pos=96:8 %s -- -F %S/../Inputs/libIDE-mock-sdk -I %t.tmp %mcp_opt %s | %FileCheck %s -check-prefix=CHECK42
 // CHECK42: source.lang.swift.decl.enumelement (96:8-96:9)
 // CHECK42-NEXT: C
-// CHECK42-NEXT: s:FO11cursor_info2E31CFMS0_S0_
+// CHECK42-NEXT: s:11cursor_info2E3O1CAcCmF
 // CHECK42-NEXT: (E3.Type) -> E3
 // CHECK42: <Declaration>case C = &quot;a&quot;</Declaration>
 // CHECK42-NEXT: <decl.enumelement><syntaxtype.keyword>case</syntaxtype.keyword> <decl.name>C</decl.name> = <syntaxtype.string>&quot;a&quot;</syntaxtype.string></decl.enumelement>
@@ -527,7 +527,7 @@
 // RUN: %sourcekitd-test -req=cursor -pos=80:11 %s -- -F %S/../Inputs/libIDE-mock-sdk -I %t.tmp %mcp_opt %s | %FileCheck %s -check-prefix=CHECK47
 // CHECK47: source.lang.swift.decl.generic_type_param (80:11-80:12)
 // CHECK47-NEXT: T
-// CHECK47-NEXT: s:tV11cursor_info2S21TMx
+// CHECK47-NEXT: s:11cursor_info2S2V1Txmfp
 // CHECK47-NEXT: T.Type
 // CHECK47: <Declaration>T</Declaration>
 // CHECK47-NEXT: <decl.generic_type_param><decl.generic_type_param.name>T</decl.generic_type_param.name></decl.generic_type_param>
@@ -551,7 +551,7 @@
 // RUN: %sourcekitd-test -req=cursor -pos=117:6 %s -- -F %S/../Inputs/libIDE-mock-sdk -I %t.tmp %mcp_opt %s | %FileCheck %s -check-prefix=CHECK52
 // CHECK52: source.lang.swift.decl.function.free (117:6-117:36)
 // CHECK52: <U, V where U == V.T, V : P1> (U, v: V) -> ()
-// CHECK52: <decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>genReq</decl.name>&lt;<decl.generic_type_param usr="s:tF11cursor_info6genRequ0_Rxzw_1T_S_2P1rFTx1vq__T_L_1UMx"><decl.generic_type_param.name>U</decl.generic_type_param.name></decl.generic_type_param>, <decl.generic_type_param usr="s:tF11cursor_info6genRequ0_Rxzw_1T_S_2P1rFTx1vq__T_L_1VMq_"><decl.generic_type_param.name>V</decl.generic_type_param.name></decl.generic_type_param>&gt;(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>u</decl.var.parameter.name>: <decl.var.parameter.type><ref.generic_type_param usr="s:tF11cursor_info6genRequ0_Rxzw_1T_S_2P1rFTx1vq__T_L_1UMx">U</ref.generic_type_param></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>v</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.generic_type_param usr="s:tF11cursor_info6genRequ0_Rxzw_1T_S_2P1rFTx1vq__T_L_1VMq_">V</ref.generic_type_param></decl.var.parameter.type></decl.var.parameter>) <syntaxtype.keyword>where</syntaxtype.keyword> <decl.generic_type_requirement>U == V.T</decl.generic_type_requirement>, <decl.generic_type_requirement>V : <ref.protocol usr="s:P11cursor_info2P1">P1</ref.protocol></decl.generic_type_requirement></decl.function.free>
+// CHECK52: <decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>genReq</decl.name>&lt;<decl.generic_type_param usr="s:11cursor_info6genReqyx_q_1vt1TQy_RszAA2P1R_r0_lF1UL_xmfp"><decl.generic_type_param.name>U</decl.generic_type_param.name></decl.generic_type_param>, <decl.generic_type_param usr="s:11cursor_info6genReqyx_q_1vt1TQy_RszAA2P1R_r0_lF1VL_q_mfp"><decl.generic_type_param.name>V</decl.generic_type_param.name></decl.generic_type_param>&gt;(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>u</decl.var.parameter.name>: <decl.var.parameter.type><ref.generic_type_param usr="s:11cursor_info6genReqyx_q_1vt1TQy_RszAA2P1R_r0_lF1UL_xmfp">U</ref.generic_type_param></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>v</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.generic_type_param usr="s:11cursor_info6genReqyx_q_1vt1TQy_RszAA2P1R_r0_lF1VL_q_mfp">V</ref.generic_type_param></decl.var.parameter.type></decl.var.parameter>) <syntaxtype.keyword>where</syntaxtype.keyword> <decl.generic_type_requirement>U == V.T</decl.generic_type_requirement>, <decl.generic_type_requirement>V : <ref.protocol usr="s:11cursor_info2P1P">P1</ref.protocol></decl.generic_type_requirement></decl.function.free>
 
 // RUN: %sourcekitd-test -req=cursor -pos=117:16 %s -- -F %S/../Inputs/libIDE-mock-sdk -I %t.tmp %mcp_opt %s | %FileCheck %s -check-prefix=CHECK53
 // CHECK53: source.lang.swift.decl.generic_type_param (117:16-117:17)
@@ -594,16 +594,16 @@
 // CHECK64: <decl.enumelement><syntaxtype.keyword>case</syntaxtype.keyword> <decl.name>B</decl.name> = <syntaxtype.number>1e10</syntaxtype.number></decl.enumelement>
 
 // RUN: %sourcekitd-test -req=cursor -pos=146:7 %s -- -F %S/../Inputs/libIDE-mock-sdk -I %t.tmp %mcp_opt %s | %FileCheck %s -check-prefix=CHECK65
-// CHECK65: <decl.class><syntaxtype.keyword>class</syntaxtype.keyword> <decl.name>C6</decl.name> : C4, <ref.protocol usr="s:P11cursor_info2P1">P1</ref.protocol></decl.class>
+// CHECK65: <decl.class><syntaxtype.keyword>class</syntaxtype.keyword> <decl.name>C6</decl.name> : C4, <ref.protocol usr="s:11cursor_info2P1P">P1</ref.protocol></decl.class>
 // FIXME: ref.class - rdar://problem/25014968
 
 // RUN: %sourcekitd-test -req=cursor -pos=150:10 %s -- -F %S/../Inputs/libIDE-mock-sdk -I %t.tmp %mcp_opt %s | %FileCheck %s -check-prefix=CHECK66
-// CHECK66: <decl.protocol><syntaxtype.keyword>protocol</syntaxtype.keyword> <decl.name>P2</decl.name> :  <syntaxtype.keyword>class</syntaxtype.keyword>, <ref.protocol usr="s:P11cursor_info2P1">P1</ref.protocol></decl.protocol>
+// CHECK66: <decl.protocol><syntaxtype.keyword>protocol</syntaxtype.keyword> <decl.name>P2</decl.name> :  <syntaxtype.keyword>class</syntaxtype.keyword>, <ref.protocol usr="s:11cursor_info2P1P">P1</ref.protocol></decl.protocol>
 
 // RUN: %sourcekitd-test -req=cursor -pos=114:18 %s -- -F %S/../Inputs/libIDE-mock-sdk -I %t.tmp %mcp_opt %s | %FileCheck %s -check-prefix=CHECK67
 // CHECK67: source.lang.swift.decl.associatedtype (114:18-114:19)
 // CHECK67-NEXT: T
-// CHECK67-NEXT: s:P11cursor_info2P11T
+// CHECK67-NEXT: s:11cursor_info2P1P1T
 // CHECK67-NEXT: T.Type
 // CHECK67: <Declaration>associatedtype T</Declaration>
 // CHECK67-NEXT: <decl.associatedtype><syntaxtype.keyword>associatedtype</syntaxtype.keyword> <decl.name>T</decl.name></decl.associatedtype>
@@ -613,7 +613,7 @@
 // CHECK68-NEXT: MyAlias
 // CHECK68-NEXT: s:11cursor_info7MyAlias
 // CHECK68-NEXT: (T, U, T, U).Type
-// CHECK68: <Declaration>typealias MyAlias&lt;T, U&gt; = (<Type usr="s:t11cursor_info1TMx">T</Type>, <Type usr="s:t11cursor_info1UMq_">U</Type>, <Type usr="s:t11cursor_info1TMx">T</Type>, <Type usr="s:t11cursor_info1UMq_">U</Type>)</Declaration>
+// CHECK68: <Declaration>typealias MyAlias&lt;T, U&gt; = (<Type usr="s:11cursor_info1Txmfp">T</Type>, <Type usr="s:11cursor_info1Uq_mfp">U</Type>, <Type usr="s:11cursor_info1Txmfp">T</Type>, <Type usr="s:11cursor_info1Uq_mfp">U</Type>)</Declaration>
 // CHECK68-NEXT: <decl.typealias><syntaxtype.keyword>typealias</syntaxtype.keyword> <decl.name>MyAlias</decl.name>&lt;<decl.generic_type_param usr="{{.*}}"><decl.generic_type_param.name>T</decl.generic_type_param.name></decl.generic_type_param>, <decl.generic_type_param usr="{{.*}}"><decl.generic_type_param.name>U</decl.generic_type_param.name></decl.generic_type_param>&gt; = <tuple>(<tuple.element><tuple.element.type><ref.generic_type_param usr="{{.*}}">T</ref.generic_type_param></tuple.element.type></tuple.element>, <tuple.element><tuple.element.type><ref.generic_type_param usr="{{.*}}">U</ref.generic_type_param></tuple.element.type></tuple.element>, <tuple.element><tuple.element.type><ref.generic_type_param usr="{{.*}}">T</ref.generic_type_param></tuple.element.type></tuple.element>, <tuple.element><tuple.element.type><ref.generic_type_param usr="{{.*}}">U</ref.generic_type_param></tuple.element.type></tuple.element>)</tuple></decl.typealias>
 
 // RUN: %sourcekitd-test -req=cursor -pos=153:28 %s -- -F %S/../Inputs/libIDE-mock-sdk -I %t.tmp %mcp_opt %s | %FileCheck %s -check-prefix=CHECK69
@@ -621,7 +621,7 @@
 // CHECK69-NEXT: MyAlias
 // CHECK69-NEXT: s:11cursor_info7MyAlias
 // CHECK69-NEXT: (T, U, T, U).Type
-// CHECK69: <Declaration>typealias MyAlias&lt;T, U&gt; = (<Type usr="s:t11cursor_info1TMx">T</Type>, <Type usr="s:t11cursor_info1UMq_">U</Type>, <Type usr="s:t11cursor_info1TMx">T</Type>, <Type usr="s:t11cursor_info1UMq_">U</Type>)</Declaration>
+// CHECK69: <Declaration>typealias MyAlias&lt;T, U&gt; = (<Type usr="s:11cursor_info1Txmfp">T</Type>, <Type usr="s:11cursor_info1Uq_mfp">U</Type>, <Type usr="s:11cursor_info1Txmfp">T</Type>, <Type usr="s:11cursor_info1Uq_mfp">U</Type>)</Declaration>
 // CHECK69-NEXT: <decl.typealias><syntaxtype.keyword>typealias</syntaxtype.keyword> <decl.name>MyAlias</decl.name>&lt;<decl.generic_type_param usr="{{.*}}"><decl.generic_type_param.name>T</decl.generic_type_param.name></decl.generic_type_param>, <decl.generic_type_param usr="{{.*}}"><decl.generic_type_param.name>U</decl.generic_type_param.name></decl.generic_type_param>&gt; = <tuple>(<tuple.element><tuple.element.type><ref.generic_type_param usr="{{.*}}">T</ref.generic_type_param></tuple.element.type></tuple.element>, <tuple.element><tuple.element.type><ref.generic_type_param usr="{{.*}}">U</ref.generic_type_param></tuple.element.type></tuple.element>, <tuple.element><tuple.element.type><ref.generic_type_param usr="{{.*}}">T</ref.generic_type_param></tuple.element.type></tuple.element>, <tuple.element><tuple.element.type><ref.generic_type_param usr="{{.*}}">U</ref.generic_type_param></tuple.element.type></tuple.element>)</tuple></decl.typealias>
 
 // RUN: %sourcekitd-test -req=cursor -pos=155:6 %s -- -F %S/../Inputs/libIDE-mock-sdk -I %t.tmp %mcp_opt %s | %FileCheck %s -check-prefix=CHECK70
@@ -650,22 +650,22 @@
 // RUN: %sourcekitd-test -req=cursor -pos=162:8 %s -- -F %S/../Inputs/libIDE-mock-sdk -I %t.tmp %mcp_opt %s | %FileCheck %s -check-prefix=CHECK74
 // CHECK74: source.lang.swift.decl.function.method.instance (162:8-162:20)
 // CHECK74: <Self where Self : P3> (Self) -> (Self) -> Self
-// CHECK74: <Declaration>func f(_ s: <Type usr="s:tP11cursor_info2P34SelfMx">Self</Type>) -&gt; <Type usr="s:tP11cursor_info2P34SelfMx">Self</Type></Declaration>
-// CHECK74: <decl.var.parameter.type><ref.generic_type_param usr="s:tP11cursor_info2P34SelfMx">Self</ref.generic_type_param></decl.var.parameter.type>
-// CHECK74-SAME: <decl.function.returntype><ref.generic_type_param usr="s:tP11cursor_info2P34SelfMx">Self</ref.generic_type_param></decl.function.returntype>
+// CHECK74: <Declaration>func f(_ s: <Type usr="s:11cursor_info2P3P4Selfxmfp">Self</Type>) -&gt; <Type usr="s:11cursor_info2P3P4Selfxmfp">Self</Type></Declaration>
+// CHECK74: <decl.var.parameter.type><ref.generic_type_param usr="s:11cursor_info2P3P4Selfxmfp">Self</ref.generic_type_param></decl.var.parameter.type>
+// CHECK74-SAME: <decl.function.returntype><ref.generic_type_param usr="s:11cursor_info2P3P4Selfxmfp">Self</ref.generic_type_param></decl.function.returntype>
 
 // RUN: %sourcekitd-test -req=cursor -pos=165:8 %s -- -F %S/../Inputs/libIDE-mock-sdk -I %t.tmp %mcp_opt %s | %FileCheck %s -check-prefix=CHECK75
 // CHECK75: source.lang.swift.decl.function.method.instance (165:8-165:20)
 // CHECK75: <Self where Self : P3> (Self) -> (Self) -> Self
-// CHECK75: <Declaration>func f(_ s: <Type usr="s:tE11cursor_infoPS_2P34SelfMx">Self</Type>) -&gt; <Type usr="s:tE11cursor_infoPS_2P34SelfMx">Self</Type></Declaration>
-// CHECK75: <decl.var.parameter.type><ref.generic_type_param usr="s:tE11cursor_infoPS_2P34SelfMx">Self</ref.generic_type_param></decl.var.parameter.type>
-// CHECK75-SAME: <decl.function.returntype><ref.generic_type_param usr="s:tE11cursor_infoPS_2P34SelfMx">Self</ref.generic_type_param></decl.function.returntype>
+// CHECK75: <Declaration>func f(_ s: <Type usr="s:11cursor_info2P3PAAE4Selfxmfp">Self</Type>) -&gt; <Type usr="s:11cursor_info2P3PAAE4Selfxmfp">Self</Type></Declaration>
+// CHECK75: <decl.var.parameter.type><ref.generic_type_param usr="s:11cursor_info2P3PAAE4Selfxmfp">Self</ref.generic_type_param></decl.var.parameter.type>
+// CHECK75-SAME: <decl.function.returntype><ref.generic_type_param usr="s:11cursor_info2P3PAAE4Selfxmfp">Self</ref.generic_type_param></decl.function.returntype>
 
 // RUN: %sourcekitd-test -req=cursor -pos=169:8 %s -- -F %S/../Inputs/libIDE-mock-sdk -I %t.tmp %mcp_opt %s | %FileCheck %s -check-prefix=CHECK76
 // CHECK76: source.lang.swift.decl.function.method.instance (169:8-169:11)
 // CHECK76: (C7) -> () -> Self
-// CHECK76: <Declaration>func f() -&gt; <Type usr="s:C11cursor_info2C7">Self</Type></Declaration>
-// CHECK76: <decl.function.returntype><ref.class usr="s:C11cursor_info2C7">Self</ref.class></decl.function.returntype>
+// CHECK76: <Declaration>func f() -&gt; <Type usr="s:11cursor_info2C7C">Self</Type></Declaration>
+// CHECK76: <decl.function.returntype><ref.class usr="s:11cursor_info2C7C">Self</ref.class></decl.function.returntype>
 
 // RUN: %sourcekitd-test -req=cursor -pos=188:7 %s -- -F %S/../Inputs/libIDE-mock-sdk -I %t.tmp %mcp_opt %s | %FileCheck -check-prefix=CHECK77 %s
 // RUN: %sourcekitd-test -req=cursor -pos=189:7 %s -- -F %S/../Inputs/libIDE-mock-sdk -I %t.tmp %mcp_opt %s | %FileCheck -check-prefix=CHECK78 %s
@@ -714,21 +714,21 @@
 // RUN: %sourcekitd-test -req=cursor -pos=212:8 %s -- -F %S/../Inputs/libIDE-mock-sdk -I %t.tmp %mcp_opt %s | %FileCheck -check-prefix=CHECK87 %s
 // CHECK87:      source.lang.swift.decl.struct (212:8-212:26)
 // CHECK87-NEXT: HasLocalizationKey
-// CHECK87-NEXT: s:V11cursor_info18HasLocalizationKey
+// CHECK87-NEXT: s:11cursor_info18HasLocalizationKeyV
 // CHECK87-NEXT: HasLocalizationKey.Type
 // CHECK87-NEXT: _Tt
 // CHECK87-NEXT: <Declaration>struct HasLocalizationKey</Declaration>
 // CHECK87-NEXT: <decl.struct><syntaxtype.keyword>struct</syntaxtype.keyword> <decl.name>HasLocalizationKey</decl.name></decl.struct>
-// CHECK87-NEXT: <Class file="{{[^"]+}}cursor_info.swift" line="212" column="8"><Name>HasLocalizationKey</Name><USR>s:V11cursor_info18HasLocalizationKey</USR><Declaration>struct HasLocalizationKey</Declaration><Abstract><Para>Brief.</Para></Abstract></Class>
+// CHECK87-NEXT: <Class file="{{[^"]+}}cursor_info.swift" line="212" column="8"><Name>HasLocalizationKey</Name><USR>s:11cursor_info18HasLocalizationKeyV</USR><Declaration>struct HasLocalizationKey</Declaration><Abstract><Para>Brief.</Para></Abstract></Class>
 // CHECK87-NEXT: <LocalizationKey>ABC</LocalizationKey>
 
 // RUN: %sourcekitd-test -req=cursor -pos=215:6 %s -- -F %S/../Inputs/libIDE-mock-sdk -I %t.tmp %mcp_opt %s | %FileCheck -check-prefix=CHECK88 %s
 // CHECK88:      source.lang.swift.decl.function.free (215:6-215:27)
 // CHECK88-NEXT: hasLocalizationKey2
-// CHECK88-NEXT: s:F11cursor_info19hasLocalizationKey2FT_T_
+// CHECK88-NEXT: s:11cursor_info19hasLocalizationKey2yyF
 // CHECK88-NEXT: () -> ()
 // CHECK88-NEXT: _Tt
 // CHECK88-NEXT: <Declaration>func hasLocalizationKey2()</Declaration>
 // CHECK88-NEXT: <decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>hasLocalizationKey2</decl.name>()</decl.function.free>
-// CHECK88-NEXT: <Function file="{{[^"]+}}cursor_info.swift" line="215" column="6"><Name>hasLocalizationKey2()</Name><USR>s:F11cursor_info19hasLocalizationKey2FT_T_</USR><Declaration>func hasLocalizationKey2()</Declaration></Function
+// CHECK88-NEXT: <Function file="{{[^"]+}}cursor_info.swift" line="215" column="6"><Name>hasLocalizationKey2()</Name><USR>s:11cursor_info19hasLocalizationKey2yyF</USR><Declaration>func hasLocalizationKey2()</Declaration></Function
 // CHECK88-NEXT: <LocalizationKey>ABC</LocalizationKey>
diff --git a/test/SourceKit/CursorInfo/cursor_invalid.swift b/test/SourceKit/CursorInfo/cursor_invalid.swift
index 846d55a..e37297c 100644
--- a/test/SourceKit/CursorInfo/cursor_invalid.swift
+++ b/test/SourceKit/CursorInfo/cursor_invalid.swift
@@ -55,7 +55,7 @@
 
 // RUN: %sourcekitd-test -req=cursor -pos=20:6 %s -- %s | %FileCheck -check-prefix=EQEQ2 %s
 // Note: we can't find the operator decl so the decl kind is a fallback.
-// EQEQ2: <decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>==</decl.name>(<decl.var.parameter><decl.var.parameter.name>x</decl.var.parameter.name>: <decl.var.parameter.type><ref.class usr="s:C14cursor_invalid1C">C</ref.class></decl.var.parameter.type></decl.var.parameter>)</decl.function.free>
+// EQEQ2: <decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>==</decl.name>(<decl.var.parameter><decl.var.parameter.name>x</decl.var.parameter.name>: <decl.var.parameter.type><ref.class usr="s:14cursor_invalid1CC">C</ref.class></decl.var.parameter.type></decl.var.parameter>)</decl.function.free>
 
 // RUN: %sourcekitd-test -req=cursor -pos=21:6 %s -- %s | %FileCheck -check-prefix=EQEQ3 %s
-// EQEQ3: <decl.function.operator.infix><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>==</decl.name>(<decl.var.parameter><decl.var.parameter.name>x</decl.var.parameter.name>: <decl.var.parameter.type><ref.class usr="s:C14cursor_invalid1C">C</ref.class></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.name>y</decl.var.parameter.name>: <decl.var.parameter.type><ref.class usr="s:C14cursor_invalid1C">C</ref.class></decl.var.parameter.type></decl.var.parameter>)</decl.function.operator.infix>
+// EQEQ3: <decl.function.operator.infix><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>==</decl.name>(<decl.var.parameter><decl.var.parameter.name>x</decl.var.parameter.name>: <decl.var.parameter.type><ref.class usr="s:14cursor_invalid1CC">C</ref.class></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.name>y</decl.var.parameter.name>: <decl.var.parameter.type><ref.class usr="s:14cursor_invalid1CC">C</ref.class></decl.var.parameter.type></decl.var.parameter>)</decl.function.operator.infix>
diff --git a/test/SourceKit/CursorInfo/cursor_overrides.swift b/test/SourceKit/CursorInfo/cursor_overrides.swift
index cfbb73b..e332c80 100644
--- a/test/SourceKit/CursorInfo/cursor_overrides.swift
+++ b/test/SourceKit/CursorInfo/cursor_overrides.swift
@@ -23,7 +23,7 @@
 // CHECK1: (SubCls) -> () -> ()
 // CHECK1:      OVERRIDES BEGIN
 // CHECK1-NEXT: c:objc(cs)Cls(im)meth
-// CHECK1-NEXT: s:FP16cursor_overrides4Prot4methFT_T_
+// CHECK1-NEXT: s:16cursor_overrides4ProtP4methyyF
 // CHECK1-NEXT: c:objc(cs)S1(im)meth
 // CHECK1-NEXT: c:objc(cs)B1(im)meth
 // CHECK1-NEXT: c:objc(pl)P1(im)meth
diff --git a/test/SourceKit/CursorInfo/cursor_stdlib.swift b/test/SourceKit/CursorInfo/cursor_stdlib.swift
index f2da082..746e730 100644
--- a/test/SourceKit/CursorInfo/cursor_stdlib.swift
+++ b/test/SourceKit/CursorInfo/cursor_stdlib.swift
@@ -24,7 +24,7 @@
 // RUN: %sourcekitd-test -req=cursor -pos=3:18 %s -- %s %mcp_opt %clang-importer-sdk | %FileCheck -check-prefix=CHECK-OVERLAY %s
 // CHECK-OVERLAY:      source.lang.swift.ref.var.global
 // CHECK-OVERLAY-NEXT: NSUTF8StringEncoding
-// CHECK-OVERLAY-NEXT: s:v10Foundation20NSUTF8StringEncodingSu
+// CHECK-OVERLAY-NEXT: s:10Foundation20NSUTF8StringEncodingSuv
 // CHECK-OVERLAY-NEXT: UInt
 // CHECK-OVERLAY-NEXT: _TtSu
 // CHECK-OVERLAY-NEXT: <Declaration>public let NSUTF8StringEncoding: <Type usr="s:Su">UInt</Type></Declaration>
@@ -48,14 +48,14 @@
 
 // RUN: %sourcekitd-test -req=cursor -pos=15:10 %s -- %s %mcp_opt %clang-importer-sdk | %FileCheck -check-prefix=CHECK-REPLACEMENT3 %s
 // CHECK-REPLACEMENT3: <Group>Collection/Array</Group>
-// CHECK-REPLACEMENT3: func sorted(by areInIncreasingOrder: (<Type usr="s:V13cursor_stdlib2S1">S1</Type>
+// CHECK-REPLACEMENT3: func sorted(by areInIncreasingOrder: (<Type usr="s:13cursor_stdlib2S1V">S1</Type>
 // CHECK-REPLACEMENT3: sorted() -&gt; [S1]</RelatedName>
 // CHECK-REPLACEMENT3: sorted() -&gt; [S1]</RelatedName>
 // CHECK-REPLACEMENT3: sorted(by: (S1, S1) -&gt; Bool) -&gt; [S1]</RelatedName>
 
 // RUN: %sourcekitd-test -req=cursor -pos=18:8 %s -- %s %mcp_opt %clang-importer-sdk | %FileCheck -check-prefix=CHECK-REPLACEMENT4 %s
 // CHECK-REPLACEMENT4: <Group>Collection/Array</Group>
-// CHECK-REPLACEMENT4: <Declaration>mutating func append(_ newElement: <Type usr="s:V13cursor_stdlib2S1">S1</Type>)</Declaration>
+// CHECK-REPLACEMENT4: <Declaration>mutating func append(_ newElement: <Type usr="s:13cursor_stdlib2S1V">S1</Type>)</Declaration>
 
 // RUN: %sourcekitd-test -req=cursor -pos=21:10 %s -- %s %mcp_opt %clang-importer-sdk | %FileCheck -check-prefix=CHECK-MODULE-GROUP1 %s
 // CHECK-MODULE-GROUP1: MODULE GROUPS BEGIN
diff --git a/test/SourceKit/CursorInfo/cursor_usr.swift b/test/SourceKit/CursorInfo/cursor_usr.swift
index 6643036..fabc996 100644
--- a/test/SourceKit/CursorInfo/cursor_usr.swift
+++ b/test/SourceKit/CursorInfo/cursor_usr.swift
@@ -14,13 +14,13 @@
 
 // Sanity check that we have identical responses when things work.
 // RUN: %sourcekitd-test -req=cursor -pos=5:5 %s -- -I %t -F %S/../Inputs/libIDE-mock-sdk %mcp_opt %s > %t.from_offset.txt
-// RUN: %sourcekitd-test -req=cursor -usr "s:v10cursor_usr6globalSi" %s -- -I %t -F %S/../Inputs/libIDE-mock-sdk %mcp_opt %s > %t.from_usr.txt
+// RUN: %sourcekitd-test -req=cursor -usr "s:10cursor_usr6globalSiv" %s -- -I %t -F %S/../Inputs/libIDE-mock-sdk %mcp_opt %s > %t.from_usr.txt
 // RUN: %FileCheck %s -check-prefix=CHECK_SANITY1 < %t.from_offset.txt
 // RUN: %FileCheck %s -check-prefix=CHECK_SANITY1 < %t.from_usr.txt
 // RUN: diff -u %t.from_usr.txt %t.from_offset.txt
 // CHECK_SANITY1: source.lang.swift.decl.var.global (5:5-5:11)
 // CHECK_SANITY1-NEXT: global
-// CHECK_SANITY1-NEXT: s:v10cursor_usr6globalSi
+// CHECK_SANITY1-NEXT: s:10cursor_usr6globalSiv
 // CHECK_SANITY1-NEXT: Int
 // CHECK_SANITY1-NEXT: _TtSi
 // CHECK_SANITY1-NEXT: <Declaration>var global: <Type usr="s:Si">Int</Type></Declaration>
@@ -29,30 +29,30 @@
 // Bogus USR.
 // RUN: %sourcekitd-test -req=cursor -usr "s:blahblahblah" %s -- -I %t -F %S/../Inputs/libIDE-mock-sdk %mcp_opt %s | %FileCheck %s -check-prefix=EMPTY
 // Missing s: prefix.
-// RUN: %sourcekitd-test -req=cursor -usr "v10cursor_usr6globalSi" %s -- -I %t -F %S/../Inputs/libIDE-mock-sdk %mcp_opt %s | %FileCheck %s -check-prefix=EMPTY
+// RUN: %sourcekitd-test -req=cursor -usr "10cursor_usr6globalSiv" %s -- -I %t -F %S/../Inputs/libIDE-mock-sdk %mcp_opt %s | %FileCheck %s -check-prefix=EMPTY
 // FIXME: no support for clang USRs.
 // RUN: %sourcekitd-test -req=cursor -usr "c:@S@FooStruct1" %s -- -I %t -F %S/../Inputs/libIDE-mock-sdk %mcp_opt %s | %FileCheck %s -check-prefix=EMPTY
 // EMPTY: <empty cursor info>
 
 // FIXME: missing symbol shows up as some other part of the USR (the type here).
-// RUN: %sourcekitd-test -req=cursor -usr "s:v10cursor_usr11global_noneSi" %s -- -I %t -F %S/../Inputs/libIDE-mock-sdk %mcp_opt %s | %FileCheck %s -check-prefix=SHOULD_BE_EMPTY
+// RUN: %sourcekitd-test -req=cursor -usr "s:10cursor_usr11global_noneSiv" %s -- -I %t -F %S/../Inputs/libIDE-mock-sdk %mcp_opt %s | %FileCheck %s -check-prefix=SHOULD_BE_EMPTY
 // SHOULD_BE_EMPTY: source.lang.swift.decl.struct ()
 // SHOULD_BE_EMPTY: Int
 
-// RUN: %sourcekitd-test -req=cursor -usr "s:V10cursor_usr2S1" %s -- -I %t -F %S/../Inputs/libIDE-mock-sdk %mcp_opt %s | %FileCheck %s -check-prefix=CHECK1
+// RUN: %sourcekitd-test -req=cursor -usr "s:10cursor_usr2S1V" %s -- -I %t -F %S/../Inputs/libIDE-mock-sdk %mcp_opt %s | %FileCheck %s -check-prefix=CHECK1
 // CHECK1: source.lang.swift.decl.struct (7:8-7:10)
 // CHECK1: S1
 // CHECK1: <decl.struct><syntaxtype.keyword>struct</syntaxtype.keyword> <decl.name>S1</decl.name></decl.struct>
 
-// RUN: %sourcekitd-test -req=cursor -usr "s:F14FooSwiftModule12fooSwiftFuncFT_Si" %s -- -I %t -F %S/../Inputs/libIDE-mock-sdk %mcp_opt %s | %FileCheck %s -check-prefix=CHECK2
+// RUN: %sourcekitd-test -req=cursor -usr "s:14FooSwiftModule03fooB4FuncSiyF" %s -- -I %t -F %S/../Inputs/libIDE-mock-sdk %mcp_opt %s | %FileCheck %s -check-prefix=CHECK2
 // CHECK2: source.lang.swift.decl.function.free ()
 // CHECK2: fooSwiftFunc()
 // CHECK2: () -> Int
 // CHECK2: FooSwiftModule
 // CHECK2: <decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooSwiftFunc</decl.name>() -&gt; <decl.function.returntype><ref.struct usr="s:Si">Int</ref.struct></decl.function.returntype></decl.function.free>
 
-// RUN: %sourcekitd-test -req=cursor -usr "s:F10cursor_usr3fooFVSC10FooStruct1VS_2S1" %s -- -I %t -F %S/../Inputs/libIDE-mock-sdk %mcp_opt %s | %FileCheck %s -check-prefix=CHECK3
+// RUN: %sourcekitd-test -req=cursor -usr "s:10cursor_usr3fooAA2S1VSC10FooStruct1VF" %s -- -I %t -F %S/../Inputs/libIDE-mock-sdk %mcp_opt %s | %FileCheck %s -check-prefix=CHECK3
 // CHECK3: source.lang.swift.decl.function.free (9:6-9:24)
 // CHECK3: foo(x:)
 // CHECK3: (FooStruct1) -> S1
-// CHECK3: <decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>foo</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>x</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr="c:@S@FooStruct1">FooStruct1</ref.struct></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr="s:V10cursor_usr2S1">S1</ref.struct></decl.function.returntype></decl.function.free>
+// CHECK3: <decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>foo</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>x</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr="c:@S@FooStruct1">FooStruct1</ref.struct></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr="s:10cursor_usr2S1V">S1</ref.struct></decl.function.returntype></decl.function.free>
diff --git a/test/SourceKit/DocSupport/doc_clang_module.swift.response b/test/SourceKit/DocSupport/doc_clang_module.swift.response
index 8965a97..2820adf 100644
--- a/test/SourceKit/DocSupport/doc_clang_module.swift.response
+++ b/test/SourceKit/DocSupport/doc_clang_module.swift.response
@@ -397,14 +397,14 @@
   {
     key.kind: source.lang.swift.ref.protocol,
     key.name: "RawRepresentable",
-    key.usr: "s:Ps16RawRepresentable",
+    key.usr: "s:s16RawRepresentableP",
     key.offset: 54,
     key.length: 16
   },
   {
     key.kind: source.lang.swift.ref.protocol,
     key.name: "Equatable",
-    key.usr: "s:Ps9Equatable",
+    key.usr: "s:s9EquatableP",
     key.offset: 72,
     key.length: 9
   },
@@ -431,7 +431,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "UInt32",
-    key.usr: "s:Vs6UInt32",
+    key.usr: "s:s6UInt32V",
     key.offset: 106,
     key.length: 6
   },
@@ -463,7 +463,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "UInt32",
-    key.usr: "s:Vs6UInt32",
+    key.usr: "s:s6UInt32V",
     key.offset: 143,
     key.length: 6
   },
@@ -480,7 +480,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "UInt32",
-    key.usr: "s:Vs6UInt32",
+    key.usr: "s:s6UInt32V",
     key.offset: 170,
     key.length: 6
   },
@@ -519,14 +519,14 @@
   {
     key.kind: source.lang.swift.ref.protocol,
     key.name: "RawRepresentable",
-    key.usr: "s:Ps16RawRepresentable",
+    key.usr: "s:s16RawRepresentableP",
     key.offset: 229,
     key.length: 16
   },
   {
     key.kind: source.lang.swift.ref.protocol,
     key.name: "Equatable",
-    key.usr: "s:Ps9Equatable",
+    key.usr: "s:s9EquatableP",
     key.offset: 247,
     key.length: 9
   },
@@ -553,7 +553,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "UInt32",
-    key.usr: "s:Vs6UInt32",
+    key.usr: "s:s6UInt32V",
     key.offset: 281,
     key.length: 6
   },
@@ -585,7 +585,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "UInt32",
-    key.usr: "s:Vs6UInt32",
+    key.usr: "s:s6UInt32V",
     key.offset: 318,
     key.length: 6
   },
@@ -602,7 +602,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "UInt32",
-    key.usr: "s:Vs6UInt32",
+    key.usr: "s:s6UInt32V",
     key.offset: 345,
     key.length: 6
   },
@@ -663,14 +663,14 @@
   {
     key.kind: source.lang.swift.ref.protocol,
     key.name: "RawRepresentable",
-    key.usr: "s:Ps16RawRepresentable",
+    key.usr: "s:s16RawRepresentableP",
     key.offset: 436,
     key.length: 16
   },
   {
     key.kind: source.lang.swift.ref.protocol,
     key.name: "Equatable",
-    key.usr: "s:Ps9Equatable",
+    key.usr: "s:s9EquatableP",
     key.offset: 454,
     key.length: 9
   },
@@ -697,7 +697,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "UInt32",
-    key.usr: "s:Vs6UInt32",
+    key.usr: "s:s6UInt32V",
     key.offset: 488,
     key.length: 6
   },
@@ -729,7 +729,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "UInt32",
-    key.usr: "s:Vs6UInt32",
+    key.usr: "s:s6UInt32V",
     key.offset: 525,
     key.length: 6
   },
@@ -746,7 +746,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "UInt32",
-    key.usr: "s:Vs6UInt32",
+    key.usr: "s:s6UInt32V",
     key.offset: 552,
     key.length: 6
   },
@@ -854,7 +854,7 @@
   {
     key.kind: source.lang.swift.ref.protocol,
     key.name: "OptionSet",
-    key.usr: "s:Ps9OptionSet",
+    key.usr: "s:s9OptionSetP",
     key.offset: 764,
     key.length: 9
   },
@@ -1887,7 +1887,7 @@
   {
     key.kind: source.lang.swift.ref.protocol,
     key.name: "Sequence",
-    key.usr: "s:Ps8Sequence",
+    key.usr: "s:s8SequenceP",
     key.offset: 2565,
     key.length: 8
   },
@@ -1901,7 +1901,7 @@
   {
     key.kind: source.lang.swift.ref.typealias,
     key.name: "Element",
-    key.usr: "s:VSC17FooRuncingOptions7Element",
+    key.usr: "s:SC17FooRuncingOptionsV7Element",
     key.offset: 2593,
     key.length: 7
   },
@@ -2308,7 +2308,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int32",
-    key.usr: "s:Vs5Int32",
+    key.usr: "s:s5Int32V",
     key.offset: 3186,
     key.length: 5
   },
@@ -2362,7 +2362,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int32",
-    key.usr: "s:Vs5Int32",
+    key.usr: "s:s5Int32V",
     key.offset: 3238,
     key.length: 5
   },
@@ -2440,7 +2440,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int32",
-    key.usr: "s:Vs5Int32",
+    key.usr: "s:s5Int32V",
     key.offset: 3355,
     key.length: 5
   },
@@ -2494,7 +2494,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int32",
-    key.usr: "s:Vs5Int32",
+    key.usr: "s:s5Int32V",
     key.offset: 3407,
     key.length: 5
   },
@@ -2565,7 +2565,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int32",
-    key.usr: "s:Vs5Int32",
+    key.usr: "s:s5Int32V",
     key.offset: 3509,
     key.length: 5
   },
@@ -2619,7 +2619,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int32",
-    key.usr: "s:Vs5Int32",
+    key.usr: "s:s5Int32V",
     key.offset: 3561,
     key.length: 5
   },
@@ -2663,7 +2663,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int32",
-    key.usr: "s:Vs5Int32",
+    key.usr: "s:s5Int32V",
     key.offset: 3607,
     key.length: 5
   },
@@ -2680,7 +2680,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int32",
-    key.usr: "s:Vs5Int32",
+    key.usr: "s:s5Int32V",
     key.offset: 3628,
     key.length: 5
   },
@@ -2712,14 +2712,14 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int32",
-    key.usr: "s:Vs5Int32",
+    key.usr: "s:s5Int32V",
     key.offset: 3653,
     key.length: 5
   },
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int32",
-    key.usr: "s:Vs5Int32",
+    key.usr: "s:s5Int32V",
     key.offset: 3663,
     key.length: 5
   },
@@ -2746,14 +2746,14 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int32",
-    key.usr: "s:Vs5Int32",
+    key.usr: "s:s5Int32V",
     key.offset: 3702,
     key.length: 5
   },
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int32",
-    key.usr: "s:Vs5Int32",
+    key.usr: "s:s5Int32V",
     key.offset: 3712,
     key.length: 5
   },
@@ -2785,7 +2785,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int32",
-    key.usr: "s:Vs5Int32",
+    key.usr: "s:s5Int32V",
     key.offset: 3737,
     key.length: 5
   },
@@ -2858,14 +2858,14 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int32",
-    key.usr: "s:Vs5Int32",
+    key.usr: "s:s5Int32V",
     key.offset: 3795,
     key.length: 5
   },
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int32",
-    key.usr: "s:Vs5Int32",
+    key.usr: "s:s5Int32V",
     key.offset: 3807,
     key.length: 5
   },
@@ -2904,7 +2904,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int32",
-    key.usr: "s:Vs5Int32",
+    key.usr: "s:s5Int32V",
     key.offset: 3854,
     key.length: 5
   },
@@ -2943,7 +2943,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int32",
-    key.usr: "s:Vs5Int32",
+    key.usr: "s:s5Int32V",
     key.offset: 3915,
     key.length: 5
   },
@@ -2960,7 +2960,7 @@
   {
     key.kind: source.lang.swift.ref.enum,
     key.name: "Never",
-    key.usr: "s:Os5Never",
+    key.usr: "s:s5NeverO",
     key.offset: 3951,
     key.length: 5
   },
@@ -2977,7 +2977,7 @@
   {
     key.kind: source.lang.swift.ref.enum,
     key.name: "Never",
-    key.usr: "s:Os5Never",
+    key.usr: "s:s5NeverO",
     key.offset: 3984,
     key.length: 5
   },
@@ -3059,14 +3059,14 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int32",
-    key.usr: "s:Vs5Int32",
+    key.usr: "s:s5Int32V",
     key.offset: 4168,
     key.length: 5
   },
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int32",
-    key.usr: "s:Vs5Int32",
+    key.usr: "s:s5Int32V",
     key.offset: 4178,
     key.length: 5
   },
@@ -3138,7 +3138,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int32",
-    key.usr: "s:Vs5Int32",
+    key.usr: "s:s5Int32V",
     key.offset: 4388,
     key.length: 5
   },
@@ -3165,7 +3165,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int32",
-    key.usr: "s:Vs5Int32",
+    key.usr: "s:s5Int32V",
     key.offset: 4429,
     key.length: 5
   },
@@ -3192,7 +3192,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int32",
-    key.usr: "s:Vs5Int32",
+    key.usr: "s:s5Int32V",
     key.offset: 4470,
     key.length: 5
   },
@@ -3439,7 +3439,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int32",
-    key.usr: "s:Vs5Int32",
+    key.usr: "s:s5Int32V",
     key.offset: 5011,
     key.length: 5
   },
@@ -3456,7 +3456,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int32",
-    key.usr: "s:Vs5Int32",
+    key.usr: "s:s5Int32V",
     key.offset: 5040,
     key.length: 5
   },
@@ -3473,7 +3473,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int32",
-    key.usr: "s:Vs5Int32",
+    key.usr: "s:s5Int32V",
     key.offset: 5069,
     key.length: 5
   },
@@ -3520,7 +3520,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int32",
-    key.usr: "s:Vs5Int32",
+    key.usr: "s:s5Int32V",
     key.offset: 5144,
     key.length: 5
   },
@@ -3552,7 +3552,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int32",
-    key.usr: "s:Vs5Int32",
+    key.usr: "s:s5Int32V",
     key.offset: 5183,
     key.length: 5
   },
@@ -3579,7 +3579,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int32",
-    key.usr: "s:Vs5Int32",
+    key.usr: "s:s5Int32V",
     key.offset: 5199,
     key.length: 5
   },
@@ -3681,7 +3681,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int32",
-    key.usr: "s:Vs5Int32",
+    key.usr: "s:s5Int32V",
     key.offset: 5449,
     key.length: 5
   },
@@ -3698,7 +3698,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int32",
-    key.usr: "s:Vs5Int32",
+    key.usr: "s:s5Int32V",
     key.offset: 5472,
     key.length: 5
   },
@@ -3720,7 +3720,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int32",
-    key.usr: "s:Vs5Int32",
+    key.usr: "s:s5Int32V",
     key.offset: 5503,
     key.length: 5
   },
@@ -3742,7 +3742,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int32",
-    key.usr: "s:Vs5Int32",
+    key.usr: "s:s5Int32V",
     key.offset: 5534,
     key.length: 5
   },
@@ -3764,7 +3764,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "UInt32",
-    key.usr: "s:Vs6UInt32",
+    key.usr: "s:s6UInt32V",
     key.offset: 5565,
     key.length: 6
   },
@@ -3786,7 +3786,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "UInt64",
-    key.usr: "s:Vs6UInt64",
+    key.usr: "s:s6UInt64V",
     key.offset: 5597,
     key.length: 6
   },
@@ -3852,7 +3852,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int8",
-    key.usr: "s:Vs4Int8",
+    key.usr: "s:s4Int8V",
     key.offset: 5707,
     key.length: 4
   },
@@ -3874,7 +3874,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int32",
-    key.usr: "s:Vs5Int32",
+    key.usr: "s:s5Int32V",
     key.offset: 5737,
     key.length: 5
   },
@@ -3896,7 +3896,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int16",
-    key.usr: "s:Vs5Int16",
+    key.usr: "s:s5Int16V",
     key.offset: 5769,
     key.length: 5
   },
@@ -3940,7 +3940,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int32",
-    key.usr: "s:Vs5Int32",
+    key.usr: "s:s5Int32V",
     key.offset: 5836,
     key.length: 5
   },
@@ -3962,7 +3962,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int32",
-    key.usr: "s:Vs5Int32",
+    key.usr: "s:s5Int32V",
     key.offset: 5873,
     key.length: 5
   },
@@ -4014,7 +4014,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int32",
-    key.usr: "s:Vs5Int32",
+    key.usr: "s:s5Int32V",
     key.offset: 5977,
     key.length: 5
   },
@@ -4051,7 +4051,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int32",
-    key.usr: "s:Vs5Int32",
+    key.usr: "s:s5Int32V",
     key.offset: 6010,
     key.length: 5
   },
@@ -4319,7 +4319,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int32",
-    key.usr: "s:Vs5Int32",
+    key.usr: "s:s5Int32V",
     key.offset: 6593,
     key.length: 5
   },
@@ -4443,7 +4443,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int32",
-    key.usr: "s:Vs5Int32",
+    key.usr: "s:s5Int32V",
     key.offset: 6833,
     key.length: 5
   },
@@ -4719,14 +4719,14 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int32",
-    key.usr: "s:Vs5Int32",
+    key.usr: "s:s5Int32V",
     key.offset: 7514,
     key.length: 5
   },
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "Int32",
-    key.usr: "s:Vs5Int32",
+    key.usr: "s:s5Int32V",
     key.offset: 7524,
     key.length: 5
   },
@@ -4743,14 +4743,14 @@
   {
     key.kind: source.lang.swift.ref.protocol,
     key.name: "RawRepresentable",
-    key.usr: "s:Ps16RawRepresentable",
+    key.usr: "s:s16RawRepresentableP",
     key.offset: 7551,
     key.length: 16
   },
   {
     key.kind: source.lang.swift.ref.protocol,
     key.name: "Equatable",
-    key.usr: "s:Ps9Equatable",
+    key.usr: "s:s9EquatableP",
     key.offset: 7569,
     key.length: 9
   },
@@ -4777,7 +4777,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "UInt32",
-    key.usr: "s:Vs6UInt32",
+    key.usr: "s:s6UInt32V",
     key.offset: 7603,
     key.length: 6
   },
@@ -4809,7 +4809,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "UInt32",
-    key.usr: "s:Vs6UInt32",
+    key.usr: "s:s6UInt32V",
     key.offset: 7640,
     key.length: 6
   },
@@ -4826,7 +4826,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "UInt32",
-    key.usr: "s:Vs6UInt32",
+    key.usr: "s:s6UInt32V",
     key.offset: 7667,
     key.length: 6
   },
@@ -4905,27 +4905,27 @@
     key.doc.full_as_xml: "<Enum file=Foo.h line=\"16\" column=\"6\"><Name>FooEnum1</Name><USR>c:@E@FooEnum1</USR><Declaration>struct FooEnum1 : RawRepresentable, Equatable</Declaration><Abstract><Para> Aaa.  FooEnum1.  Bbb.</Para></Abstract></Enum>",
     key.offset: 36,
     key.length: 142,
-    key.fully_annotated_decl: "<decl.struct><syntaxtype.keyword>struct</syntaxtype.keyword> <decl.name>FooEnum1</decl.name> : <ref.protocol usr=\"s:Ps16RawRepresentable\">RawRepresentable</ref.protocol>, <ref.protocol usr=\"s:Ps9Equatable\">Equatable</ref.protocol></decl.struct>",
+    key.fully_annotated_decl: "<decl.struct><syntaxtype.keyword>struct</syntaxtype.keyword> <decl.name>FooEnum1</decl.name> : <ref.protocol usr=\"s:s16RawRepresentableP\">RawRepresentable</ref.protocol>, <ref.protocol usr=\"s:s9EquatableP\">Equatable</ref.protocol></decl.struct>",
     key.conforms: [
       {
         key.kind: source.lang.swift.ref.protocol,
         key.name: "RawRepresentable",
-        key.usr: "s:Ps16RawRepresentable"
+        key.usr: "s:s16RawRepresentableP"
       },
       {
         key.kind: source.lang.swift.ref.protocol,
         key.name: "Equatable",
-        key.usr: "s:Ps9Equatable"
+        key.usr: "s:s9EquatableP"
       }
     ],
     key.entities: [
       {
         key.kind: source.lang.swift.decl.function.constructor,
         key.name: "init(_:)",
-        key.usr: "s:FVSC8FooEnum1cFVs6UInt32S_",
+        key.usr: "s:SC8FooEnum1VABs6UInt32Vcfc",
         key.offset: 89,
         key.length: 24,
-        key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>rawValue</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:Vs6UInt32\">UInt32</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.constructor>",
+        key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>rawValue</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:s6UInt32V\">UInt32</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.constructor>",
         key.entities: [
           {
             key.kind: source.lang.swift.decl.var.local,
@@ -4939,15 +4939,15 @@
       {
         key.kind: source.lang.swift.decl.function.constructor,
         key.name: "init(rawValue:)",
-        key.usr: "s:FVSC8FooEnum1cFT8rawValueVs6UInt32_S_",
+        key.usr: "s:SC8FooEnum1VABs6UInt32V8rawValue_tcfc",
         key.offset: 119,
         key.length: 31,
-        key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.argument_label>rawValue</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr=\"s:Vs6UInt32\">UInt32</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.constructor>",
+        key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.argument_label>rawValue</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr=\"s:s6UInt32V\">UInt32</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.constructor>",
         key.conforms: [
           {
             key.kind: source.lang.swift.ref.function.constructor,
             key.name: "init(rawValue:)",
-            key.usr: "s:FPs16RawRepresentablecFT8rawValuewx8RawValue_GSqx_"
+            key.usr: "s:s16RawRepresentablePxSg0A5ValueQz03rawC0_tcfc"
           }
         ],
         key.entities: [
@@ -4963,15 +4963,15 @@
       {
         key.kind: source.lang.swift.decl.var.instance,
         key.name: "rawValue",
-        key.usr: "s:vVSC8FooEnum18rawValueVs6UInt32",
+        key.usr: "s:SC8FooEnum1V8rawValues6UInt32Vv",
         key.offset: 156,
         key.length: 20,
-        key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>rawValue</decl.name>: <decl.var.type><ref.struct usr=\"s:Vs6UInt32\">UInt32</ref.struct></decl.var.type></decl.var.instance>",
+        key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>rawValue</decl.name>: <decl.var.type><ref.struct usr=\"s:s6UInt32V\">UInt32</ref.struct></decl.var.type></decl.var.instance>",
         key.conforms: [
           {
             key.kind: source.lang.swift.ref.var.instance,
             key.name: "rawValue",
-            key.usr: "s:vPs16RawRepresentable8rawValuewx8RawValue"
+            key.usr: "s:s16RawRepresentableP8rawValue0aD0Qzv"
           }
         ]
       }
@@ -4992,27 +4992,27 @@
     key.usr: "c:@E@FooEnum2",
     key.offset: 211,
     key.length: 142,
-    key.fully_annotated_decl: "<decl.struct><syntaxtype.keyword>struct</syntaxtype.keyword> <decl.name>FooEnum2</decl.name> : <ref.protocol usr=\"s:Ps16RawRepresentable\">RawRepresentable</ref.protocol>, <ref.protocol usr=\"s:Ps9Equatable\">Equatable</ref.protocol></decl.struct>",
+    key.fully_annotated_decl: "<decl.struct><syntaxtype.keyword>struct</syntaxtype.keyword> <decl.name>FooEnum2</decl.name> : <ref.protocol usr=\"s:s16RawRepresentableP\">RawRepresentable</ref.protocol>, <ref.protocol usr=\"s:s9EquatableP\">Equatable</ref.protocol></decl.struct>",
     key.conforms: [
       {
         key.kind: source.lang.swift.ref.protocol,
         key.name: "RawRepresentable",
-        key.usr: "s:Ps16RawRepresentable"
+        key.usr: "s:s16RawRepresentableP"
       },
       {
         key.kind: source.lang.swift.ref.protocol,
         key.name: "Equatable",
-        key.usr: "s:Ps9Equatable"
+        key.usr: "s:s9EquatableP"
       }
     ],
     key.entities: [
       {
         key.kind: source.lang.swift.decl.function.constructor,
         key.name: "init(_:)",
-        key.usr: "s:FVSC8FooEnum2cFVs6UInt32S_",
+        key.usr: "s:SC8FooEnum2VABs6UInt32Vcfc",
         key.offset: 264,
         key.length: 24,
-        key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>rawValue</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:Vs6UInt32\">UInt32</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.constructor>",
+        key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>rawValue</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:s6UInt32V\">UInt32</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.constructor>",
         key.entities: [
           {
             key.kind: source.lang.swift.decl.var.local,
@@ -5026,15 +5026,15 @@
       {
         key.kind: source.lang.swift.decl.function.constructor,
         key.name: "init(rawValue:)",
-        key.usr: "s:FVSC8FooEnum2cFT8rawValueVs6UInt32_S_",
+        key.usr: "s:SC8FooEnum2VABs6UInt32V8rawValue_tcfc",
         key.offset: 294,
         key.length: 31,
-        key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.argument_label>rawValue</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr=\"s:Vs6UInt32\">UInt32</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.constructor>",
+        key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.argument_label>rawValue</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr=\"s:s6UInt32V\">UInt32</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.constructor>",
         key.conforms: [
           {
             key.kind: source.lang.swift.ref.function.constructor,
             key.name: "init(rawValue:)",
-            key.usr: "s:FPs16RawRepresentablecFT8rawValuewx8RawValue_GSqx_"
+            key.usr: "s:s16RawRepresentablePxSg0A5ValueQz03rawC0_tcfc"
           }
         ],
         key.entities: [
@@ -5050,15 +5050,15 @@
       {
         key.kind: source.lang.swift.decl.var.instance,
         key.name: "rawValue",
-        key.usr: "s:vVSC8FooEnum28rawValueVs6UInt32",
+        key.usr: "s:SC8FooEnum2V8rawValues6UInt32Vv",
         key.offset: 331,
         key.length: 20,
-        key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>rawValue</decl.name>: <decl.var.type><ref.struct usr=\"s:Vs6UInt32\">UInt32</ref.struct></decl.var.type></decl.var.instance>",
+        key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>rawValue</decl.name>: <decl.var.type><ref.struct usr=\"s:s6UInt32V\">UInt32</ref.struct></decl.var.type></decl.var.instance>",
         key.conforms: [
           {
             key.kind: source.lang.swift.ref.var.instance,
             key.name: "rawValue",
-            key.usr: "s:vPs16RawRepresentable8rawValuewx8RawValue"
+            key.usr: "s:s16RawRepresentableP8rawValue0aD0Qzv"
           }
         ]
       }
@@ -5086,27 +5086,27 @@
     key.usr: "c:@E@FooEnum3",
     key.offset: 418,
     key.length: 142,
-    key.fully_annotated_decl: "<decl.struct><syntaxtype.keyword>struct</syntaxtype.keyword> <decl.name>FooEnum3</decl.name> : <ref.protocol usr=\"s:Ps16RawRepresentable\">RawRepresentable</ref.protocol>, <ref.protocol usr=\"s:Ps9Equatable\">Equatable</ref.protocol></decl.struct>",
+    key.fully_annotated_decl: "<decl.struct><syntaxtype.keyword>struct</syntaxtype.keyword> <decl.name>FooEnum3</decl.name> : <ref.protocol usr=\"s:s16RawRepresentableP\">RawRepresentable</ref.protocol>, <ref.protocol usr=\"s:s9EquatableP\">Equatable</ref.protocol></decl.struct>",
     key.conforms: [
       {
         key.kind: source.lang.swift.ref.protocol,
         key.name: "RawRepresentable",
-        key.usr: "s:Ps16RawRepresentable"
+        key.usr: "s:s16RawRepresentableP"
       },
       {
         key.kind: source.lang.swift.ref.protocol,
         key.name: "Equatable",
-        key.usr: "s:Ps9Equatable"
+        key.usr: "s:s9EquatableP"
       }
     ],
     key.entities: [
       {
         key.kind: source.lang.swift.decl.function.constructor,
         key.name: "init(_:)",
-        key.usr: "s:FVSC8FooEnum3cFVs6UInt32S_",
+        key.usr: "s:SC8FooEnum3VABs6UInt32Vcfc",
         key.offset: 471,
         key.length: 24,
-        key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>rawValue</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:Vs6UInt32\">UInt32</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.constructor>",
+        key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>rawValue</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:s6UInt32V\">UInt32</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.constructor>",
         key.entities: [
           {
             key.kind: source.lang.swift.decl.var.local,
@@ -5120,15 +5120,15 @@
       {
         key.kind: source.lang.swift.decl.function.constructor,
         key.name: "init(rawValue:)",
-        key.usr: "s:FVSC8FooEnum3cFT8rawValueVs6UInt32_S_",
+        key.usr: "s:SC8FooEnum3VABs6UInt32V8rawValue_tcfc",
         key.offset: 501,
         key.length: 31,
-        key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.argument_label>rawValue</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr=\"s:Vs6UInt32\">UInt32</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.constructor>",
+        key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.argument_label>rawValue</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr=\"s:s6UInt32V\">UInt32</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.constructor>",
         key.conforms: [
           {
             key.kind: source.lang.swift.ref.function.constructor,
             key.name: "init(rawValue:)",
-            key.usr: "s:FPs16RawRepresentablecFT8rawValuewx8RawValue_GSqx_"
+            key.usr: "s:s16RawRepresentablePxSg0A5ValueQz03rawC0_tcfc"
           }
         ],
         key.entities: [
@@ -5144,15 +5144,15 @@
       {
         key.kind: source.lang.swift.decl.var.instance,
         key.name: "rawValue",
-        key.usr: "s:vVSC8FooEnum38rawValueVs6UInt32",
+        key.usr: "s:SC8FooEnum3V8rawValues6UInt32Vv",
         key.offset: 538,
         key.length: 20,
-        key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>rawValue</decl.name>: <decl.var.type><ref.struct usr=\"s:Vs6UInt32\">UInt32</ref.struct></decl.var.type></decl.var.instance>",
+        key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>rawValue</decl.name>: <decl.var.type><ref.struct usr=\"s:s6UInt32V\">UInt32</ref.struct></decl.var.type></decl.var.instance>",
         key.conforms: [
           {
             key.kind: source.lang.swift.ref.var.instance,
             key.name: "rawValue",
-            key.usr: "s:vPs16RawRepresentable8rawValuewx8RawValue"
+            key.usr: "s:s16RawRepresentableP8rawValue0aD0Qzv"
           }
         ]
       }
@@ -5223,19 +5223,19 @@
     key.doc.full_as_xml: "<Enum line=\"1\" column=\"1\"><Name>FooRuncingOptions</Name><USR>c:@E@FooRuncingOptions</USR><Declaration>struct FooRuncingOptions : OptionSet</Declaration><Abstract><Para> Aaa.  FooRuncingOptions.  Bbb.</Para></Abstract></Enum>",
     key.offset: 737,
     key.length: 883,
-    key.fully_annotated_decl: "<decl.struct><syntaxtype.keyword>struct</syntaxtype.keyword> <decl.name>FooRuncingOptions</decl.name> : <ref.protocol usr=\"s:Ps9OptionSet\">OptionSet</ref.protocol></decl.struct>",
+    key.fully_annotated_decl: "<decl.struct><syntaxtype.keyword>struct</syntaxtype.keyword> <decl.name>FooRuncingOptions</decl.name> : <ref.protocol usr=\"s:s9OptionSetP\">OptionSet</ref.protocol></decl.struct>",
     key.conforms: [
       {
         key.kind: source.lang.swift.ref.protocol,
         key.name: "OptionSet",
-        key.usr: "s:Ps9OptionSet"
+        key.usr: "s:s9OptionSetP"
       }
     ],
     key.entities: [
       {
         key.kind: source.lang.swift.decl.function.constructor,
         key.name: "init(rawValue:)",
-        key.usr: "s:FVSC17FooRuncingOptionscFT8rawValueSi_S_",
+        key.usr: "s:SC17FooRuncingOptionsVABSi8rawValue_tcfc",
         key.offset: 781,
         key.length: 28,
         key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.argument_label>rawValue</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr=\"s:Si\">Int</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.constructor>",
@@ -5243,17 +5243,17 @@
           {
             key.kind: source.lang.swift.ref.function.constructor,
             key.name: "init(rawValue:)",
-            key.usr: "s:FPs9OptionSetcFT8rawValuewx8RawValue_x"
+            key.usr: "s:s9OptionSetPx8RawValueQz03rawD0_tcfc"
           },
           {
             key.kind: source.lang.swift.ref.function.constructor,
             key.name: "init(rawValue:)",
-            key.usr: "s:FPs9OptionSetcFT8rawValuewx8RawValue_x"
+            key.usr: "s:s9OptionSetPx8RawValueQz03rawD0_tcfc"
           },
           {
             key.kind: source.lang.swift.ref.function.constructor,
             key.name: "init(rawValue:)",
-            key.usr: "s:FPs16RawRepresentablecFT8rawValuewx8RawValue_GSqx_"
+            key.usr: "s:s16RawRepresentablePxSg0A5ValueQz03rawC0_tcfc"
           }
         ],
         key.entities: [
@@ -5285,8 +5285,8 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "intersect(_:)",
-        key.usr: "s:FEsPs10SetAlgebra9intersectFxx::SYNTHESIZED::c:@E@FooRuncingOptions",
-        key.original_usr: "s:FEsPs10SetAlgebra9intersectFxx",
+        key.usr: "s:s10SetAlgebraPsE9intersectxxF::SYNTHESIZED::c:@E@FooRuncingOptions",
+        key.original_usr: "s:s10SetAlgebraPsE9intersectxxF",
         key.offset: 926,
         key.length: 63,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>intersect</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>other</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.function.returntype></decl.function.method.instance>",
@@ -5310,8 +5310,8 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "exclusiveOr(_:)",
-        key.usr: "s:FEsPs10SetAlgebra11exclusiveOrFxx::SYNTHESIZED::c:@E@FooRuncingOptions",
-        key.original_usr: "s:FEsPs10SetAlgebra11exclusiveOrFxx",
+        key.usr: "s:s10SetAlgebraPsE11exclusiveOrxxF::SYNTHESIZED::c:@E@FooRuncingOptions",
+        key.original_usr: "s:s10SetAlgebraPsE11exclusiveOrxxF",
         key.offset: 995,
         key.length: 65,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>exclusiveOr</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>other</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.function.returntype></decl.function.method.instance>",
@@ -5335,8 +5335,8 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "unionInPlace(_:)",
-        key.usr: "s:FEsPs10SetAlgebra12unionInPlaceFxT_::SYNTHESIZED::c:@E@FooRuncingOptions",
-        key.original_usr: "s:FEsPs10SetAlgebra12unionInPlaceFxT_",
+        key.usr: "s:s10SetAlgebraPsE12unionInPlaceyxF::SYNTHESIZED::c:@E@FooRuncingOptions",
+        key.original_usr: "s:s10SetAlgebraPsE12unionInPlaceyxF",
         key.offset: 1066,
         key.length: 54,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>mutating</syntaxtype.keyword> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>unionInPlace</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>other</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.method.instance>",
@@ -5360,8 +5360,8 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "intersectInPlace(_:)",
-        key.usr: "s:FEsPs10SetAlgebra16intersectInPlaceFxT_::SYNTHESIZED::c:@E@FooRuncingOptions",
-        key.original_usr: "s:FEsPs10SetAlgebra16intersectInPlaceFxT_",
+        key.usr: "s:s10SetAlgebraPsE16intersectInPlaceyxF::SYNTHESIZED::c:@E@FooRuncingOptions",
+        key.original_usr: "s:s10SetAlgebraPsE16intersectInPlaceyxF",
         key.offset: 1126,
         key.length: 58,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>mutating</syntaxtype.keyword> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>intersectInPlace</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>other</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.method.instance>",
@@ -5385,8 +5385,8 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "exclusiveOrInPlace(_:)",
-        key.usr: "s:FEsPs10SetAlgebra18exclusiveOrInPlaceFxT_::SYNTHESIZED::c:@E@FooRuncingOptions",
-        key.original_usr: "s:FEsPs10SetAlgebra18exclusiveOrInPlaceFxT_",
+        key.usr: "s:s10SetAlgebraPsE18exclusiveOrInPlaceyxF::SYNTHESIZED::c:@E@FooRuncingOptions",
+        key.original_usr: "s:s10SetAlgebraPsE18exclusiveOrInPlaceyxF",
         key.offset: 1190,
         key.length: 60,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>mutating</syntaxtype.keyword> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>exclusiveOrInPlace</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>other</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.method.instance>",
@@ -5410,8 +5410,8 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "isSubsetOf(_:)",
-        key.usr: "s:FEsPs10SetAlgebra10isSubsetOfFxSb::SYNTHESIZED::c:@E@FooRuncingOptions",
-        key.original_usr: "s:FEsPs10SetAlgebra10isSubsetOfFxSb",
+        key.usr: "s:s10SetAlgebraPsE10isSubsetOfSbxF::SYNTHESIZED::c:@E@FooRuncingOptions",
+        key.original_usr: "s:s10SetAlgebraPsE10isSubsetOfSbxF",
         key.offset: 1256,
         key.length: 51,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>isSubsetOf</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>other</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr=\"s:Sb\">Bool</ref.struct></decl.function.returntype></decl.function.method.instance>",
@@ -5435,8 +5435,8 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "isDisjointWith(_:)",
-        key.usr: "s:FEsPs10SetAlgebra14isDisjointWithFxSb::SYNTHESIZED::c:@E@FooRuncingOptions",
-        key.original_usr: "s:FEsPs10SetAlgebra14isDisjointWithFxSb",
+        key.usr: "s:s10SetAlgebraPsE14isDisjointWithSbxF::SYNTHESIZED::c:@E@FooRuncingOptions",
+        key.original_usr: "s:s10SetAlgebraPsE14isDisjointWithSbxF",
         key.offset: 1313,
         key.length: 55,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>isDisjointWith</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>other</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr=\"s:Sb\">Bool</ref.struct></decl.function.returntype></decl.function.method.instance>",
@@ -5460,8 +5460,8 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "isSupersetOf(_:)",
-        key.usr: "s:FEsPs10SetAlgebra12isSupersetOfFxSb::SYNTHESIZED::c:@E@FooRuncingOptions",
-        key.original_usr: "s:FEsPs10SetAlgebra12isSupersetOfFxSb",
+        key.usr: "s:s10SetAlgebraPsE12isSupersetOfSbxF::SYNTHESIZED::c:@E@FooRuncingOptions",
+        key.original_usr: "s:s10SetAlgebraPsE12isSupersetOfSbxF",
         key.offset: 1374,
         key.length: 53,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>isSupersetOf</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>other</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr=\"s:Sb\">Bool</ref.struct></decl.function.returntype></decl.function.method.instance>",
@@ -5485,8 +5485,8 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "subtractInPlace(_:)",
-        key.usr: "s:FEsPs10SetAlgebra15subtractInPlaceFxT_::SYNTHESIZED::c:@E@FooRuncingOptions",
-        key.original_usr: "s:FEsPs10SetAlgebra15subtractInPlaceFxT_",
+        key.usr: "s:s10SetAlgebraPsE15subtractInPlaceyxF::SYNTHESIZED::c:@E@FooRuncingOptions",
+        key.original_usr: "s:s10SetAlgebraPsE15subtractInPlaceyxF",
         key.offset: 1433,
         key.length: 57,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>mutating</syntaxtype.keyword> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>subtractInPlace</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>other</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.method.instance>",
@@ -5510,8 +5510,8 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "isStrictSupersetOf(_:)",
-        key.usr: "s:FEsPs10SetAlgebra18isStrictSupersetOfFxSb::SYNTHESIZED::c:@E@FooRuncingOptions",
-        key.original_usr: "s:FEsPs10SetAlgebra18isStrictSupersetOfFxSb",
+        key.usr: "s:s10SetAlgebraPsE18isStrictSupersetOfSbxF::SYNTHESIZED::c:@E@FooRuncingOptions",
+        key.original_usr: "s:s10SetAlgebraPsE18isStrictSupersetOfSbxF",
         key.offset: 1496,
         key.length: 59,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>isStrictSupersetOf</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>other</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr=\"s:Sb\">Bool</ref.struct></decl.function.returntype></decl.function.method.instance>",
@@ -5535,8 +5535,8 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "isStrictSubsetOf(_:)",
-        key.usr: "s:FEsPs10SetAlgebra16isStrictSubsetOfFxSb::SYNTHESIZED::c:@E@FooRuncingOptions",
-        key.original_usr: "s:FEsPs10SetAlgebra16isStrictSubsetOfFxSb",
+        key.usr: "s:s10SetAlgebraPsE16isStrictSubsetOfSbxF::SYNTHESIZED::c:@E@FooRuncingOptions",
+        key.original_usr: "s:s10SetAlgebraPsE16isStrictSubsetOfSbxF",
         key.offset: 1561,
         key.length: 57,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>isStrictSubsetOf</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>other</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr=\"s:Sb\">Bool</ref.struct></decl.function.returntype></decl.function.method.instance>",
@@ -5573,9 +5573,9 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "union(_:)",
-        key.usr: "s:FEsPs9OptionSet5unionFxx::SYNTHESIZED::c:@E@FooRuncingOptions",
-        key.original_usr: "s:FEsPs9OptionSet5unionFxx",
-        key.doc.full_as_xml: "<Function><Name>union(_:)</Name><USR>s:FEsPs9OptionSet5unionFxx</USR><Declaration>func union(_ other: Self) -&gt; Self</Declaration><Abstract><Para>Returns a new option set of the elements contained in this set, in the given set, or in both.</Para></Abstract><Parameters><Parameter><Name>other</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>An option set.</Para></Discussion></Parameter></Parameters><ResultDiscussion><Para>A new option set made up of the elements contained in this set, in <codeVoice>other</codeVoice>, or in both.</Para></ResultDiscussion><Discussion><Para>This example uses the <codeVoice>union(_:)</codeVoice> method to add two more shipping options to the default set.</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[let defaultShipping = ShippingOptions.standard]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let memberShipping = defaultShipping.union([.secondDay, .priority])]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(memberShipping.contains(.priority))]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"true\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></Function>",
+        key.usr: "s:s9OptionSetPsE5unionxxF::SYNTHESIZED::c:@E@FooRuncingOptions",
+        key.original_usr: "s:s9OptionSetPsE5unionxxF",
+        key.doc.full_as_xml: "<Function><Name>union(_:)</Name><USR>s:s9OptionSetPsE5unionxxF</USR><Declaration>func union(_ other: Self) -&gt; Self</Declaration><Abstract><Para>Returns a new option set of the elements contained in this set, in the given set, or in both.</Para></Abstract><Parameters><Parameter><Name>other</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>An option set.</Para></Discussion></Parameter></Parameters><ResultDiscussion><Para>A new option set made up of the elements contained in this set, in <codeVoice>other</codeVoice>, or in both.</Para></ResultDiscussion><Discussion><Para>This example uses the <codeVoice>union(_:)</codeVoice> method to add two more shipping options to the default set.</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[let defaultShipping = ShippingOptions.standard]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let memberShipping = defaultShipping.union([.secondDay, .priority])]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(memberShipping.contains(.priority))]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"true\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></Function>",
         key.offset: 1657,
         key.length: 59,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>union</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>other</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.function.returntype></decl.function.method.instance>",
@@ -5592,9 +5592,9 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "intersection(_:)",
-        key.usr: "s:FEsPs9OptionSet12intersectionFxx::SYNTHESIZED::c:@E@FooRuncingOptions",
-        key.original_usr: "s:FEsPs9OptionSet12intersectionFxx",
-        key.doc.full_as_xml: "<Function><Name>intersection(_:)</Name><USR>s:FEsPs9OptionSet12intersectionFxx</USR><Declaration>func intersection(_ other: Self) -&gt; Self</Declaration><Abstract><Para>Returns a new option set with only the elements contained in both this set and the given set.</Para></Abstract><Parameters><Parameter><Name>other</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>An option set.</Para></Discussion></Parameter></Parameters><ResultDiscussion><Para>A new option set with only the elements contained in both this set and <codeVoice>other</codeVoice>.</Para></ResultDiscussion><Discussion><Para>This example uses the <codeVoice>intersection(_:)</codeVoice> method to limit the available shipping options to what can be used with a PO Box destination.</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[// Can only ship standard or priority to PO Boxes]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let poboxShipping: ShippingOptions = [.standard, .priority]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let memberShipping: ShippingOptions =]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[        [.standard, .priority, .secondDay]]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let availableOptions = memberShipping.intersection(poboxShipping)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(availableOptions.contains(.priority))]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"true\"]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(availableOptions.contains(.secondDay))]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"false\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></Function>",
+        key.usr: "s:s9OptionSetPsE12intersectionxxF::SYNTHESIZED::c:@E@FooRuncingOptions",
+        key.original_usr: "s:s9OptionSetPsE12intersectionxxF",
+        key.doc.full_as_xml: "<Function><Name>intersection(_:)</Name><USR>s:s9OptionSetPsE12intersectionxxF</USR><Declaration>func intersection(_ other: Self) -&gt; Self</Declaration><Abstract><Para>Returns a new option set with only the elements contained in both this set and the given set.</Para></Abstract><Parameters><Parameter><Name>other</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>An option set.</Para></Discussion></Parameter></Parameters><ResultDiscussion><Para>A new option set with only the elements contained in both this set and <codeVoice>other</codeVoice>.</Para></ResultDiscussion><Discussion><Para>This example uses the <codeVoice>intersection(_:)</codeVoice> method to limit the available shipping options to what can be used with a PO Box destination.</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[// Can only ship standard or priority to PO Boxes]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let poboxShipping: ShippingOptions = [.standard, .priority]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let memberShipping: ShippingOptions =]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[        [.standard, .priority, .secondDay]]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let availableOptions = memberShipping.intersection(poboxShipping)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(availableOptions.contains(.priority))]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"true\"]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(availableOptions.contains(.secondDay))]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"false\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></Function>",
         key.offset: 1722,
         key.length: 66,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>intersection</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>other</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.function.returntype></decl.function.method.instance>",
@@ -5611,9 +5611,9 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "symmetricDifference(_:)",
-        key.usr: "s:FEsPs9OptionSet19symmetricDifferenceFxx::SYNTHESIZED::c:@E@FooRuncingOptions",
-        key.original_usr: "s:FEsPs9OptionSet19symmetricDifferenceFxx",
-        key.doc.full_as_xml: "<Function><Name>symmetricDifference(_:)</Name><USR>s:FEsPs9OptionSet19symmetricDifferenceFxx</USR><Declaration>func symmetricDifference(_ other: Self) -&gt; Self</Declaration><Abstract><Para>Returns a new option set with the elements contained in this set or in the given set, but not in both.</Para></Abstract><Parameters><Parameter><Name>other</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>An option set.</Para></Discussion></Parameter></Parameters><ResultDiscussion><Para>A new option set with only the elements contained in either this set or <codeVoice>other</codeVoice>, but not in both.</Para></ResultDiscussion></Function>",
+        key.usr: "s:s9OptionSetPsE19symmetricDifferencexxF::SYNTHESIZED::c:@E@FooRuncingOptions",
+        key.original_usr: "s:s9OptionSetPsE19symmetricDifferencexxF",
+        key.doc.full_as_xml: "<Function><Name>symmetricDifference(_:)</Name><USR>s:s9OptionSetPsE19symmetricDifferencexxF</USR><Declaration>func symmetricDifference(_ other: Self) -&gt; Self</Declaration><Abstract><Para>Returns a new option set with the elements contained in this set or in the given set, but not in both.</Para></Abstract><Parameters><Parameter><Name>other</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>An option set.</Para></Discussion></Parameter></Parameters><ResultDiscussion><Para>A new option set with only the elements contained in either this set or <codeVoice>other</codeVoice>, but not in both.</Para></ResultDiscussion></Function>",
         key.offset: 1794,
         key.length: 73,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>symmetricDifference</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>other</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.function.returntype></decl.function.method.instance>",
@@ -5648,9 +5648,9 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "contains(_:)",
-        key.usr: "s:FesRxs9OptionSetxzwx7ElementrS_8containsFxSb::SYNTHESIZED::c:@E@FooRuncingOptions",
-        key.original_usr: "s:FesRxs9OptionSetxzwx7ElementrS_8containsFxSb",
-        key.doc.full_as_xml: "<Function><Name>contains(_:)</Name><USR>s:FesRxs9OptionSetxzwx7ElementrS_8containsFxSb</USR><Declaration>func contains(_ member: Self) -&gt; Bool</Declaration><Abstract><Para>Returns a Boolean value that indicates whether a given element is a member of the option set.</Para></Abstract><Parameters><Parameter><Name>member</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>The element to look for in the option set.</Para></Discussion></Parameter></Parameters><ResultDiscussion><Para><codeVoice>true</codeVoice> if the option set contains <codeVoice>member</codeVoice>; otherwise, <codeVoice>false</codeVoice>.</Para></ResultDiscussion><Discussion><Para>This example uses the <codeVoice>contains(_:)</codeVoice> method to check whether next-day shipping is in the <codeVoice>availableOptions</codeVoice> instance.</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[let availableOptions = ShippingOptions.express]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[if availableOptions.contains(.nextDay) {]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[    print(\"Next day shipping available\")]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[}]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"Next day shipping available\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></Function>",
+        key.usr: "s:s9OptionSetPssAARz7ElementQzRszlE8containsSbxF::SYNTHESIZED::c:@E@FooRuncingOptions",
+        key.original_usr: "s:s9OptionSetPssAARz7ElementQzRszlE8containsSbxF",
+        key.doc.full_as_xml: "<Function><Name>contains(_:)</Name><USR>s:s9OptionSetPssAARz7ElementQzRszlE8containsSbxF</USR><Declaration>func contains(_ member: Self) -&gt; Bool</Declaration><Abstract><Para>Returns a Boolean value that indicates whether a given element is a member of the option set.</Para></Abstract><Parameters><Parameter><Name>member</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>The element to look for in the option set.</Para></Discussion></Parameter></Parameters><ResultDiscussion><Para><codeVoice>true</codeVoice> if the option set contains <codeVoice>member</codeVoice>; otherwise, <codeVoice>false</codeVoice>.</Para></ResultDiscussion><Discussion><Para>This example uses the <codeVoice>contains(_:)</codeVoice> method to check whether next-day shipping is in the <codeVoice>availableOptions</codeVoice> instance.</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[let availableOptions = ShippingOptions.express]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[if availableOptions.contains(.nextDay) {]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[    print(\"Next day shipping available\")]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[}]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"Next day shipping available\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></Function>",
         key.offset: 1906,
         key.length: 50,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>contains</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>member</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr=\"s:Sb\">Bool</ref.struct></decl.function.returntype></decl.function.method.instance>",
@@ -5667,9 +5667,9 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "insert(_:)",
-        key.usr: "s:FesRxs9OptionSetxzwx7ElementrS_6insertFxT8insertedSb17memberAfterInsertx_::SYNTHESIZED::c:@E@FooRuncingOptions",
-        key.original_usr: "s:FesRxs9OptionSetxzwx7ElementrS_6insertFxT8insertedSb17memberAfterInsertx_",
-        key.doc.full_as_xml: "<Function><Name>insert(_:)</Name><USR>s:FesRxs9OptionSetxzwx7ElementrS_6insertFxT8insertedSb17memberAfterInsertx_</USR><Declaration>mutating func insert(_ newMember: Self.Element) -&gt; (inserted: Bool, memberAfterInsert: Self.Element)</Declaration><Abstract><Para>Adds the given element to the option set if it is not already a member.</Para></Abstract><Parameters><Parameter><Name>newMember</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>The element to insert.</Para></Discussion></Parameter></Parameters><ResultDiscussion><Para><codeVoice>(true, newMember)</codeVoice> if <codeVoice>newMember</codeVoice> was not contained in <codeVoice>self</codeVoice>. Otherwise, returns <codeVoice>(false, oldMember)</codeVoice>, where <codeVoice>oldMember</codeVoice> is the member of the set equal to <codeVoice>newMember</codeVoice>.</Para></ResultDiscussion><Discussion><Para>In the following example, the <codeVoice>.secondDay</codeVoice> shipping option is added to the <codeVoice>freeOptions</codeVoice> option set if <codeVoice>purchasePrice</codeVoice> is greater than 50.0. For the <codeVoice>ShippingOptions</codeVoice> declaration, see the <codeVoice>OptionSet</codeVoice> protocol discussion.</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[let purchasePrice = 87.55]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered><zCodeLineNumbered><![CDATA[var freeOptions: ShippingOptions = [.standard, .priority]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[if purchasePrice > 50 {]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[    freeOptions.insert(.secondDay)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[}]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(freeOptions.contains(.secondDay))]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"true\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></Function>",
+        key.usr: "s:s9OptionSetPssAARz7ElementQzRszlE6insertSb8inserted_x17memberAfterInserttxF::SYNTHESIZED::c:@E@FooRuncingOptions",
+        key.original_usr: "s:s9OptionSetPssAARz7ElementQzRszlE6insertSb8inserted_x17memberAfterInserttxF",
+        key.doc.full_as_xml: "<Function><Name>insert(_:)</Name><USR>s:s9OptionSetPssAARz7ElementQzRszlE6insertSb8inserted_x17memberAfterInserttxF</USR><Declaration>mutating func insert(_ newMember: Self.Element) -&gt; (inserted: Bool, memberAfterInsert: Self.Element)</Declaration><Abstract><Para>Adds the given element to the option set if it is not already a member.</Para></Abstract><Parameters><Parameter><Name>newMember</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>The element to insert.</Para></Discussion></Parameter></Parameters><ResultDiscussion><Para><codeVoice>(true, newMember)</codeVoice> if <codeVoice>newMember</codeVoice> was not contained in <codeVoice>self</codeVoice>. Otherwise, returns <codeVoice>(false, oldMember)</codeVoice>, where <codeVoice>oldMember</codeVoice> is the member of the set equal to <codeVoice>newMember</codeVoice>.</Para></ResultDiscussion><Discussion><Para>In the following example, the <codeVoice>.secondDay</codeVoice> shipping option is added to the <codeVoice>freeOptions</codeVoice> option set if <codeVoice>purchasePrice</codeVoice> is greater than 50.0. For the <codeVoice>ShippingOptions</codeVoice> declaration, see the <codeVoice>OptionSet</codeVoice> protocol discussion.</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[let purchasePrice = 87.55]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered><zCodeLineNumbered><![CDATA[var freeOptions: ShippingOptions = [.standard, .priority]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[if purchasePrice > 50 {]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[    freeOptions.insert(.secondDay)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[}]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(freeOptions.contains(.secondDay))]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"true\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></Function>",
         key.offset: 1962,
         key.length: 110,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.attribute.builtin><syntaxtype.attribute.name>@discardableResult</syntaxtype.attribute.name></syntaxtype.attribute.builtin> <syntaxtype.keyword>mutating</syntaxtype.keyword> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>insert</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>newMember</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><tuple>(<tuple.element><tuple.element.argument_label>inserted</tuple.element.argument_label>: <tuple.element.type><ref.struct usr=\"s:Sb\">Bool</ref.struct></tuple.element.type></tuple.element>, <tuple.element><tuple.element.argument_label>memberAfterInsert</tuple.element.argument_label>: <tuple.element.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></tuple.element.type></tuple.element>)</tuple></decl.function.returntype></decl.function.method.instance>",
@@ -5686,9 +5686,9 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "remove(_:)",
-        key.usr: "s:FesRxs9OptionSetxzwx7ElementrS_6removeFxGSqx_::SYNTHESIZED::c:@E@FooRuncingOptions",
-        key.original_usr: "s:FesRxs9OptionSetxzwx7ElementrS_6removeFxGSqx_",
-        key.doc.full_as_xml: "<Function><Name>remove(_:)</Name><USR>s:FesRxs9OptionSetxzwx7ElementrS_6removeFxGSqx_</USR><Declaration>mutating func remove(_ member: Self.Element) -&gt; Self.Element?</Declaration><Abstract><Para>Removes the given element and all elements subsumed by it.</Para></Abstract><Parameters><Parameter><Name>member</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>The element of the set to remove.</Para></Discussion></Parameter></Parameters><ResultDiscussion><Para>The intersection of <codeVoice>[member]</codeVoice> and the set, if the intersection was nonempty; otherwise, <codeVoice>nil</codeVoice>.</Para></ResultDiscussion><Discussion><Para>In the following example, the <codeVoice>.priority</codeVoice> shipping option is removed from the <codeVoice>options</codeVoice> option set. Attempting to remove the same shipping option a second time results in <codeVoice>nil</codeVoice>, because <codeVoice>options</codeVoice> no longer contains <codeVoice>.priority</codeVoice> as a member.</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[var options: ShippingOptions = [.secondDay, .priority]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let priorityOption = options.remove(.priority)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(priorityOption == .priority)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"true\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(options.remove(.priority))]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"nil\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing><Para>In the next example, the <codeVoice>.express</codeVoice> element is passed to <codeVoice>remove(_:)</codeVoice>. Although <codeVoice>.express</codeVoice> is not a member of <codeVoice>options</codeVoice>, <codeVoice>.express</codeVoice> subsumes the remaining <codeVoice>.secondDay</codeVoice> element of the option set. Therefore, <codeVoice>options</codeVoice> is emptied and the intersection between <codeVoice>.express</codeVoice> and <codeVoice>options</codeVoice> is returned.</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[let expressOption = options.remove(.express)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(expressOption == .express)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"false\"]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(expressOption == .secondDay)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"true\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></Function>",
+        key.usr: "s:s9OptionSetPssAARz7ElementQzRszlE6removexSgxF::SYNTHESIZED::c:@E@FooRuncingOptions",
+        key.original_usr: "s:s9OptionSetPssAARz7ElementQzRszlE6removexSgxF",
+        key.doc.full_as_xml: "<Function><Name>remove(_:)</Name><USR>s:s9OptionSetPssAARz7ElementQzRszlE6removexSgxF</USR><Declaration>mutating func remove(_ member: Self.Element) -&gt; Self.Element?</Declaration><Abstract><Para>Removes the given element and all elements subsumed by it.</Para></Abstract><Parameters><Parameter><Name>member</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>The element of the set to remove.</Para></Discussion></Parameter></Parameters><ResultDiscussion><Para>The intersection of <codeVoice>[member]</codeVoice> and the set, if the intersection was nonempty; otherwise, <codeVoice>nil</codeVoice>.</Para></ResultDiscussion><Discussion><Para>In the following example, the <codeVoice>.priority</codeVoice> shipping option is removed from the <codeVoice>options</codeVoice> option set. Attempting to remove the same shipping option a second time results in <codeVoice>nil</codeVoice>, because <codeVoice>options</codeVoice> no longer contains <codeVoice>.priority</codeVoice> as a member.</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[var options: ShippingOptions = [.secondDay, .priority]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let priorityOption = options.remove(.priority)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(priorityOption == .priority)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"true\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(options.remove(.priority))]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"nil\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing><Para>In the next example, the <codeVoice>.express</codeVoice> element is passed to <codeVoice>remove(_:)</codeVoice>. Although <codeVoice>.express</codeVoice> is not a member of <codeVoice>options</codeVoice>, <codeVoice>.express</codeVoice> subsumes the remaining <codeVoice>.secondDay</codeVoice> element of the option set. Therefore, <codeVoice>options</codeVoice> is emptied and the intersection between <codeVoice>.express</codeVoice> and <codeVoice>options</codeVoice> is returned.</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[let expressOption = options.remove(.express)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(expressOption == .express)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"false\"]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(expressOption == .secondDay)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"true\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></Function>",
         key.offset: 2078,
         key.length: 71,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.attribute.builtin><syntaxtype.attribute.name>@discardableResult</syntaxtype.attribute.name></syntaxtype.attribute.builtin> <syntaxtype.keyword>mutating</syntaxtype.keyword> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>remove</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>member</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct>?</decl.function.returntype></decl.function.method.instance>",
@@ -5705,9 +5705,9 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "update(with:)",
-        key.usr: "s:FesRxs9OptionSetxzwx7ElementrS_6updateFT4withx_GSqx_::SYNTHESIZED::c:@E@FooRuncingOptions",
-        key.original_usr: "s:FesRxs9OptionSetxzwx7ElementrS_6updateFT4withx_GSqx_",
-        key.doc.full_as_xml: "<Function><Name>update(with:)</Name><USR>s:FesRxs9OptionSetxzwx7ElementrS_6updateFT4withx_GSqx_</USR><Declaration>mutating func update(with newMember: Self.Element) -&gt; Self.Element?</Declaration><Abstract><Para>Inserts the given element into the set.</Para></Abstract><ResultDiscussion><Para>The intersection of <codeVoice>[newMember]</codeVoice> and the set if the intersection was nonempty; otherwise, <codeVoice>nil</codeVoice>.</Para></ResultDiscussion><Discussion><Para>If <codeVoice>newMember</codeVoice> is not contained in the set but subsumes current members of the set, the subsumed members are returned.</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[var options: ShippingOptions = [.secondDay, .priority]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let replaced = options.update(with: .express)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(replaced == .secondDay)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"true\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></Function>",
+        key.usr: "s:s9OptionSetPssAARz7ElementQzRszlE6updatexSgx4with_tF::SYNTHESIZED::c:@E@FooRuncingOptions",
+        key.original_usr: "s:s9OptionSetPssAARz7ElementQzRszlE6updatexSgx4with_tF",
+        key.doc.full_as_xml: "<Function><Name>update(with:)</Name><USR>s:s9OptionSetPssAARz7ElementQzRszlE6updatexSgx4with_tF</USR><Declaration>mutating func update(with newMember: Self.Element) -&gt; Self.Element?</Declaration><Abstract><Para>Inserts the given element into the set.</Para></Abstract><ResultDiscussion><Para>The intersection of <codeVoice>[newMember]</codeVoice> and the set if the intersection was nonempty; otherwise, <codeVoice>nil</codeVoice>.</Para></ResultDiscussion><Discussion><Para>If <codeVoice>newMember</codeVoice> is not contained in the set but subsumes current members of the set, the subsumed members are returned.</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[var options: ShippingOptions = [.secondDay, .priority]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let replaced = options.update(with: .express)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(replaced == .secondDay)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"true\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></Function>",
         key.offset: 2155,
         key.length: 77,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.attribute.builtin><syntaxtype.attribute.name>@discardableResult</syntaxtype.attribute.name></syntaxtype.attribute.builtin> <syntaxtype.keyword>mutating</syntaxtype.keyword> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>update</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>with</decl.var.parameter.argument_label> <decl.var.parameter.name>newMember</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct>?</decl.function.returntype></decl.function.method.instance>",
@@ -5742,9 +5742,9 @@
       {
         key.kind: source.lang.swift.decl.function.constructor,
         key.name: "init()",
-        key.usr: "s:FesRxs9OptionSetwx8RawValues17BitwiseOperationsrS_cFT_x::SYNTHESIZED::c:@E@FooRuncingOptions",
-        key.original_usr: "s:FesRxs9OptionSetwx8RawValues17BitwiseOperationsrS_cFT_x",
-        key.doc.full_as_xml: "<Function><Name>init()</Name><USR>s:FesRxs9OptionSetwx8RawValues17BitwiseOperationsrS_cFT_x</USR><Declaration>convenience init()</Declaration><Abstract><Para>Creates an empty option set.</Para></Abstract><Discussion><Para>This initializer creates an option set with a raw value of zero.</Para></Discussion></Function>",
+        key.usr: "s:s9OptionSetPssAARzs17BitwiseOperations8RawValueRpzlExycfc::SYNTHESIZED::c:@E@FooRuncingOptions",
+        key.original_usr: "s:s9OptionSetPssAARzs17BitwiseOperations8RawValueRpzlExycfc",
+        key.doc.full_as_xml: "<Function><Name>init()</Name><USR>s:s9OptionSetPssAARzs17BitwiseOperations8RawValueRpzlExycfc</USR><Declaration>convenience init()</Declaration><Abstract><Para>Creates an empty option set.</Para></Abstract><Discussion><Para>This initializer creates an option set with a raw value of zero.</Para></Discussion></Function>",
         key.offset: 2271,
         key.length: 18,
         key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>convenience</syntaxtype.keyword> <syntaxtype.keyword>init</syntaxtype.keyword>()</decl.function.constructor>"
@@ -5752,9 +5752,9 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "formUnion(_:)",
-        key.usr: "s:FesRxs9OptionSetwx8RawValues17BitwiseOperationsrS_9formUnionFxT_::SYNTHESIZED::c:@E@FooRuncingOptions",
-        key.original_usr: "s:FesRxs9OptionSetwx8RawValues17BitwiseOperationsrS_9formUnionFxT_",
-        key.doc.full_as_xml: "<Function><Name>formUnion(_:)</Name><USR>s:FesRxs9OptionSetwx8RawValues17BitwiseOperationsrS_9formUnionFxT_</USR><Declaration>mutating func formUnion(_ other: Self)</Declaration><Abstract><Para>Inserts the elements of another set into this option set.</Para></Abstract><Parameters><Parameter><Name>other</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>An option set.</Para></Discussion></Parameter></Parameters><Discussion><Para>This method is implemented as a <codeVoice>|</codeVoice> (bitwise OR) operation on the two sets’ raw values.</Para></Discussion></Function>",
+        key.usr: "s:s9OptionSetPssAARzs17BitwiseOperations8RawValueRpzlE9formUnionyxF::SYNTHESIZED::c:@E@FooRuncingOptions",
+        key.original_usr: "s:s9OptionSetPssAARzs17BitwiseOperations8RawValueRpzlE9formUnionyxF",
+        key.doc.full_as_xml: "<Function><Name>formUnion(_:)</Name><USR>s:s9OptionSetPssAARzs17BitwiseOperations8RawValueRpzlE9formUnionyxF</USR><Declaration>mutating func formUnion(_ other: Self)</Declaration><Abstract><Para>Inserts the elements of another set into this option set.</Para></Abstract><Parameters><Parameter><Name>other</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>An option set.</Para></Discussion></Parameter></Parameters><Discussion><Para>This method is implemented as a <codeVoice>|</codeVoice> (bitwise OR) operation on the two sets’ raw values.</Para></Discussion></Function>",
         key.offset: 2295,
         key.length: 51,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>mutating</syntaxtype.keyword> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>formUnion</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>other</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.method.instance>",
@@ -5771,9 +5771,9 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "formIntersection(_:)",
-        key.usr: "s:FesRxs9OptionSetwx8RawValues17BitwiseOperationsrS_16formIntersectionFxT_::SYNTHESIZED::c:@E@FooRuncingOptions",
-        key.original_usr: "s:FesRxs9OptionSetwx8RawValues17BitwiseOperationsrS_16formIntersectionFxT_",
-        key.doc.full_as_xml: "<Function><Name>formIntersection(_:)</Name><USR>s:FesRxs9OptionSetwx8RawValues17BitwiseOperationsrS_16formIntersectionFxT_</USR><Declaration>mutating func formIntersection(_ other: Self)</Declaration><Abstract><Para>Removes all elements of this option set that are not also present in the given set.</Para></Abstract><Parameters><Parameter><Name>other</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>An option set.</Para></Discussion></Parameter></Parameters><Discussion><Para>This method is implemented as a <codeVoice>&amp;</codeVoice> (bitwise AND) operation on the two sets’ raw values.</Para></Discussion></Function>",
+        key.usr: "s:s9OptionSetPssAARzs17BitwiseOperations8RawValueRpzlE16formIntersectionyxF::SYNTHESIZED::c:@E@FooRuncingOptions",
+        key.original_usr: "s:s9OptionSetPssAARzs17BitwiseOperations8RawValueRpzlE16formIntersectionyxF",
+        key.doc.full_as_xml: "<Function><Name>formIntersection(_:)</Name><USR>s:s9OptionSetPssAARzs17BitwiseOperations8RawValueRpzlE16formIntersectionyxF</USR><Declaration>mutating func formIntersection(_ other: Self)</Declaration><Abstract><Para>Removes all elements of this option set that are not also present in the given set.</Para></Abstract><Parameters><Parameter><Name>other</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>An option set.</Para></Discussion></Parameter></Parameters><Discussion><Para>This method is implemented as a <codeVoice>&amp;</codeVoice> (bitwise AND) operation on the two sets’ raw values.</Para></Discussion></Function>",
         key.offset: 2352,
         key.length: 58,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>mutating</syntaxtype.keyword> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>formIntersection</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>other</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.method.instance>",
@@ -5790,9 +5790,9 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "formSymmetricDifference(_:)",
-        key.usr: "s:FesRxs9OptionSetwx8RawValues17BitwiseOperationsrS_23formSymmetricDifferenceFxT_::SYNTHESIZED::c:@E@FooRuncingOptions",
-        key.original_usr: "s:FesRxs9OptionSetwx8RawValues17BitwiseOperationsrS_23formSymmetricDifferenceFxT_",
-        key.doc.full_as_xml: "<Function><Name>formSymmetricDifference(_:)</Name><USR>s:FesRxs9OptionSetwx8RawValues17BitwiseOperationsrS_23formSymmetricDifferenceFxT_</USR><Declaration>mutating func formSymmetricDifference(_ other: Self)</Declaration><Abstract><Para>Replaces this set with a new set containing all elements contained in either this set or the given set, but not in both.</Para></Abstract><Parameters><Parameter><Name>other</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>An option set.</Para></Discussion></Parameter></Parameters><Discussion><Para>This method is implemented as a <codeVoice>^</codeVoice> (bitwise XOR) operation on the two sets’ raw values.</Para></Discussion></Function>",
+        key.usr: "s:s9OptionSetPssAARzs17BitwiseOperations8RawValueRpzlE23formSymmetricDifferenceyxF::SYNTHESIZED::c:@E@FooRuncingOptions",
+        key.original_usr: "s:s9OptionSetPssAARzs17BitwiseOperations8RawValueRpzlE23formSymmetricDifferenceyxF",
+        key.doc.full_as_xml: "<Function><Name>formSymmetricDifference(_:)</Name><USR>s:s9OptionSetPssAARzs17BitwiseOperations8RawValueRpzlE23formSymmetricDifferenceyxF</USR><Declaration>mutating func formSymmetricDifference(_ other: Self)</Declaration><Abstract><Para>Replaces this set with a new set containing all elements contained in either this set or the given set, but not in both.</Para></Abstract><Parameters><Parameter><Name>other</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>An option set.</Para></Discussion></Parameter></Parameters><Discussion><Para>This method is implemented as a <codeVoice>^</codeVoice> (bitwise XOR) operation on the two sets’ raw values.</Para></Discussion></Function>",
         key.offset: 2416,
         key.length: 65,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>mutating</syntaxtype.keyword> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>formSymmetricDifference</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>other</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.method.instance>",
@@ -5822,8 +5822,8 @@
       {
         key.kind: source.lang.swift.decl.function.constructor,
         key.name: "init(_:)",
-        key.usr: "s:FEsPs10SetAlgebracuRd__s8Sequencewx7ElementzWd__8Iterator7Element_rFqd__x::SYNTHESIZED::c:@E@FooRuncingOptions",
-        key.original_usr: "s:FEsPs10SetAlgebracuRd__s8Sequencewx7ElementzWd__8Iterator7Element_rFqd__x",
+        key.usr: "s:s10SetAlgebraPsExqd__cs8SequenceRd__8Iterator_7ElementQYd__AERtzlufc::SYNTHESIZED::c:@E@FooRuncingOptions",
+        key.original_usr: "s:s10SetAlgebraPsExqd__cs8SequenceRd__8Iterator_7ElementQYd__AERtzlufc",
         key.generic_params: [
           {
             key.name: "S"
@@ -5837,10 +5837,10 @@
             key.description: "Self.Element == S.Iterator.Element"
           }
         ],
-        key.doc.full_as_xml: "<Function><Name>init(_:)</Name><USR>s:FEsPs10SetAlgebracuRd__s8Sequencewx7ElementzWd__8Iterator7Element_rFqd__x</USR><Declaration>convenience init&lt;S&gt;(_ sequence: S) where S : Sequence, Self.Element == S.Iterator.Element</Declaration><Abstract><Para>Creates a new set from a finite sequence of items.</Para></Abstract><Parameters><Parameter><Name>sequence</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>The elements to use as members of the new set.</Para></Discussion></Parameter></Parameters><Discussion><Para>Use this initializer to create a new set from an existing sequence, like an array or a range:</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[let validIndices = Set(0..<7).subtracting([2, 4, 5])]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(validIndices)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"[6, 0, 1, 3]\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></Function>",
+        key.doc.full_as_xml: "<Function><Name>init(_:)</Name><USR>s:s10SetAlgebraPsExqd__cs8SequenceRd__8Iterator_7ElementQYd__AERtzlufc</USR><Declaration>convenience init&lt;S&gt;(_ sequence: S) where S : Sequence, Self.Element == S.Iterator.Element</Declaration><Abstract><Para>Creates a new set from a finite sequence of items.</Para></Abstract><Parameters><Parameter><Name>sequence</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>The elements to use as members of the new set.</Para></Discussion></Parameter></Parameters><Discussion><Para>Use this initializer to create a new set from an existing sequence, like an array or a range:</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[let validIndices = Set(0..<7).subtracting([2, 4, 5])]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(validIndices)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"[6, 0, 1, 3]\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></Function>",
         key.offset: 2520,
         key.length: 102,
-        key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>convenience</syntaxtype.keyword> <syntaxtype.keyword>init</syntaxtype.keyword>&lt;S&gt;(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>sequence</decl.var.parameter.name>: <decl.var.parameter.type>S</decl.var.parameter.type></decl.var.parameter>) <syntaxtype.keyword>where</syntaxtype.keyword> <decl.generic_type_requirement>S : <ref.protocol usr=\"s:Ps8Sequence\">Sequence</ref.protocol></decl.generic_type_requirement>, <decl.generic_type_requirement><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct>.<ref.typealias usr=\"s:VSC17FooRuncingOptions7Element\">Element</ref.typealias> == S.Iterator.Element</decl.generic_type_requirement></decl.function.constructor>",
+        key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>convenience</syntaxtype.keyword> <syntaxtype.keyword>init</syntaxtype.keyword>&lt;S&gt;(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>sequence</decl.var.parameter.name>: <decl.var.parameter.type>S</decl.var.parameter.type></decl.var.parameter>) <syntaxtype.keyword>where</syntaxtype.keyword> <decl.generic_type_requirement>S : <ref.protocol usr=\"s:s8SequenceP\">Sequence</ref.protocol></decl.generic_type_requirement>, <decl.generic_type_requirement><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct>.<ref.typealias usr=\"s:SC17FooRuncingOptionsV7Element\">Element</ref.typealias> == S.Iterator.Element</decl.generic_type_requirement></decl.function.constructor>",
         key.entities: [
           {
             key.kind: source.lang.swift.decl.var.local,
@@ -5854,9 +5854,9 @@
       {
         key.kind: source.lang.swift.decl.function.constructor,
         key.name: "init(arrayLiteral:)",
-        key.usr: "s:FEsPs10SetAlgebracFt12arrayLiteralGSawx7Element__x::SYNTHESIZED::c:@E@FooRuncingOptions",
-        key.original_usr: "s:FEsPs10SetAlgebracFt12arrayLiteralGSawx7Element__x",
-        key.doc.full_as_xml: "<Function><Name>init(arrayLiteral:)</Name><USR>s:FEsPs10SetAlgebracFt12arrayLiteralGSawx7Element__x</USR><Declaration>convenience init(arrayLiteral: Self.Element...)</Declaration><Abstract><Para>Creates a set containing the elements of the given array literal.</Para></Abstract><Parameters><Parameter><Name>arrayLiteral</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>A list of elements of the new set.</Para></Discussion></Parameter></Parameters><Discussion><Para>Do not call this initializer directly. It is used by the compiler when you use an array literal. Instead, create a new set using an array literal as its value by enclosing a comma-separated list of values in square brackets. You can use an array literal anywhere a set is expected by the type context.</Para><Para>Here, a set of strings is created from an array literal holding only strings:</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[let ingredients: Set = [\"cocoa beans\", \"sugar\", \"cocoa butter\", \"salt\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[if ingredients.isSuperset(of: [\"sugar\", \"salt\"]) {]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[    print(\"Whatever it is, it's bound to be delicious!\")]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[}]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"Whatever it is, it's bound to be delicious!\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></Function>",
+        key.usr: "s:s10SetAlgebraPsExSay7ElementQzG12arrayLiteral_dtcfc::SYNTHESIZED::c:@E@FooRuncingOptions",
+        key.original_usr: "s:s10SetAlgebraPsExSay7ElementQzG12arrayLiteral_dtcfc",
+        key.doc.full_as_xml: "<Function><Name>init(arrayLiteral:)</Name><USR>s:s10SetAlgebraPsExSay7ElementQzG12arrayLiteral_dtcfc</USR><Declaration>convenience init(arrayLiteral: Self.Element...)</Declaration><Abstract><Para>Creates a set containing the elements of the given array literal.</Para></Abstract><Parameters><Parameter><Name>arrayLiteral</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>A list of elements of the new set.</Para></Discussion></Parameter></Parameters><Discussion><Para>Do not call this initializer directly. It is used by the compiler when you use an array literal. Instead, create a new set using an array literal as its value by enclosing a comma-separated list of values in square brackets. You can use an array literal anywhere a set is expected by the type context.</Para><Para>Here, a set of strings is created from an array literal holding only strings:</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[let ingredients: Set = [\"cocoa beans\", \"sugar\", \"cocoa butter\", \"salt\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[if ingredients.isSuperset(of: [\"sugar\", \"salt\"]) {]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[    print(\"Whatever it is, it's bound to be delicious!\")]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[}]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"Whatever it is, it's bound to be delicious!\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></Function>",
         key.offset: 2628,
         key.length: 65,
         key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>convenience</syntaxtype.keyword> <syntaxtype.keyword>init</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.argument_label>arrayLiteral</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type>...</decl.var.parameter>)</decl.function.constructor>",
@@ -5873,9 +5873,9 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "subtract(_:)",
-        key.usr: "s:FEsPs10SetAlgebra8subtractFxT_::SYNTHESIZED::c:@E@FooRuncingOptions",
-        key.original_usr: "s:FEsPs10SetAlgebra8subtractFxT_",
-        key.doc.full_as_xml: "<Function><Name>subtract(_:)</Name><USR>s:FEsPs10SetAlgebra8subtractFxT_</USR><Declaration>mutating func subtract(_ other: Self)</Declaration><Abstract><Para>Removes the elements of the given set from this set.</Para></Abstract><Parameters><Parameter><Name>other</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>A set of the same type as the current set.</Para></Discussion></Parameter></Parameters><Discussion><Para>In the following example, the elements of the <codeVoice>employees</codeVoice> set that are also members of the <codeVoice>neighbors</codeVoice> set are removed. In particular, the names <codeVoice>&quot;Bethany&quot;</codeVoice> and <codeVoice>&quot;Eric&quot;</codeVoice> are removed from <codeVoice>employees</codeVoice>.</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[var employees: Set = [\"Alicia\", \"Bethany\", \"Chris\", \"Diana\", \"Eric\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let neighbors: Set = [\"Bethany\", \"Eric\", \"Forlani\", \"Greta\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[employees.subtract(neighbors)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(employees)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"[\"Diana\", \"Chris\", \"Alicia\"]\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></Function>",
+        key.usr: "s:s10SetAlgebraPsE8subtractyxF::SYNTHESIZED::c:@E@FooRuncingOptions",
+        key.original_usr: "s:s10SetAlgebraPsE8subtractyxF",
+        key.doc.full_as_xml: "<Function><Name>subtract(_:)</Name><USR>s:s10SetAlgebraPsE8subtractyxF</USR><Declaration>mutating func subtract(_ other: Self)</Declaration><Abstract><Para>Removes the elements of the given set from this set.</Para></Abstract><Parameters><Parameter><Name>other</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>A set of the same type as the current set.</Para></Discussion></Parameter></Parameters><Discussion><Para>In the following example, the elements of the <codeVoice>employees</codeVoice> set that are also members of the <codeVoice>neighbors</codeVoice> set are removed. In particular, the names <codeVoice>&quot;Bethany&quot;</codeVoice> and <codeVoice>&quot;Eric&quot;</codeVoice> are removed from <codeVoice>employees</codeVoice>.</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[var employees: Set = [\"Alicia\", \"Bethany\", \"Chris\", \"Diana\", \"Eric\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let neighbors: Set = [\"Bethany\", \"Eric\", \"Forlani\", \"Greta\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[employees.subtract(neighbors)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(employees)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"[\"Diana\", \"Chris\", \"Alicia\"]\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></Function>",
         key.offset: 2699,
         key.length: 50,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>mutating</syntaxtype.keyword> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>subtract</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>other</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.method.instance>",
@@ -5892,9 +5892,9 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "isSubset(of:)",
-        key.usr: "s:FEsPs10SetAlgebra8isSubsetFT2ofx_Sb::SYNTHESIZED::c:@E@FooRuncingOptions",
-        key.original_usr: "s:FEsPs10SetAlgebra8isSubsetFT2ofx_Sb",
-        key.doc.full_as_xml: "<Function><Name>isSubset(of:)</Name><USR>s:FEsPs10SetAlgebra8isSubsetFT2ofx_Sb</USR><Declaration>func isSubset(of other: Self) -&gt; Bool</Declaration><Abstract><Para>Returns a Boolean value that indicates whether the set is a subset of another set.</Para></Abstract><Parameters><Parameter><Name>other</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>A set of the same type as the current set.</Para></Discussion></Parameter></Parameters><ResultDiscussion><Para><codeVoice>true</codeVoice> if the set is a subset of <codeVoice>other</codeVoice>; otherwise, <codeVoice>false</codeVoice>.</Para></ResultDiscussion><Discussion><Para>Set <emphasis>A</emphasis> is a subset of another set <emphasis>B</emphasis> if every member of <emphasis>A</emphasis> is also a member of <emphasis>B</emphasis>.</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[let employees: Set = [\"Alicia\", \"Bethany\", \"Chris\", \"Diana\", \"Eric\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let attendees: Set = [\"Alicia\", \"Bethany\", \"Diana\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(attendees.isSubset(of: employees))]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"true\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></Function>",
+        key.usr: "s:s10SetAlgebraPsE8isSubsetSbx2of_tF::SYNTHESIZED::c:@E@FooRuncingOptions",
+        key.original_usr: "s:s10SetAlgebraPsE8isSubsetSbx2of_tF",
+        key.doc.full_as_xml: "<Function><Name>isSubset(of:)</Name><USR>s:s10SetAlgebraPsE8isSubsetSbx2of_tF</USR><Declaration>func isSubset(of other: Self) -&gt; Bool</Declaration><Abstract><Para>Returns a Boolean value that indicates whether the set is a subset of another set.</Para></Abstract><Parameters><Parameter><Name>other</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>A set of the same type as the current set.</Para></Discussion></Parameter></Parameters><ResultDiscussion><Para><codeVoice>true</codeVoice> if the set is a subset of <codeVoice>other</codeVoice>; otherwise, <codeVoice>false</codeVoice>.</Para></ResultDiscussion><Discussion><Para>Set <emphasis>A</emphasis> is a subset of another set <emphasis>B</emphasis> if every member of <emphasis>A</emphasis> is also a member of <emphasis>B</emphasis>.</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[let employees: Set = [\"Alicia\", \"Bethany\", \"Chris\", \"Diana\", \"Eric\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let attendees: Set = [\"Alicia\", \"Bethany\", \"Diana\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(attendees.isSubset(of: employees))]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"true\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></Function>",
         key.offset: 2755,
         key.length: 50,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>isSubset</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>of</decl.var.parameter.argument_label> <decl.var.parameter.name>other</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr=\"s:Sb\">Bool</ref.struct></decl.function.returntype></decl.function.method.instance>",
@@ -5911,9 +5911,9 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "isSuperset(of:)",
-        key.usr: "s:FEsPs10SetAlgebra10isSupersetFT2ofx_Sb::SYNTHESIZED::c:@E@FooRuncingOptions",
-        key.original_usr: "s:FEsPs10SetAlgebra10isSupersetFT2ofx_Sb",
-        key.doc.full_as_xml: "<Function><Name>isSuperset(of:)</Name><USR>s:FEsPs10SetAlgebra10isSupersetFT2ofx_Sb</USR><Declaration>func isSuperset(of other: Self) -&gt; Bool</Declaration><Abstract><Para>Returns a Boolean value that indicates whether the set is a superset of the given set.</Para></Abstract><Parameters><Parameter><Name>other</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>A set of the same type as the current set.</Para></Discussion></Parameter></Parameters><ResultDiscussion><Para><codeVoice>true</codeVoice> if the set is a superset of <codeVoice>other</codeVoice>; otherwise, <codeVoice>false</codeVoice>.</Para></ResultDiscussion><Discussion><Para>Set <emphasis>A</emphasis> is a superset of another set <emphasis>B</emphasis> if every member of <emphasis>B</emphasis> is also a member of <emphasis>A</emphasis>.</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[let employees: Set = [\"Alicia\", \"Bethany\", \"Chris\", \"Diana\", \"Eric\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let attendees: Set = [\"Alicia\", \"Bethany\", \"Diana\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(employees.isSuperset(of: attendees))]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"true\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></Function>",
+        key.usr: "s:s10SetAlgebraPsE10isSupersetSbx2of_tF::SYNTHESIZED::c:@E@FooRuncingOptions",
+        key.original_usr: "s:s10SetAlgebraPsE10isSupersetSbx2of_tF",
+        key.doc.full_as_xml: "<Function><Name>isSuperset(of:)</Name><USR>s:s10SetAlgebraPsE10isSupersetSbx2of_tF</USR><Declaration>func isSuperset(of other: Self) -&gt; Bool</Declaration><Abstract><Para>Returns a Boolean value that indicates whether the set is a superset of the given set.</Para></Abstract><Parameters><Parameter><Name>other</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>A set of the same type as the current set.</Para></Discussion></Parameter></Parameters><ResultDiscussion><Para><codeVoice>true</codeVoice> if the set is a superset of <codeVoice>other</codeVoice>; otherwise, <codeVoice>false</codeVoice>.</Para></ResultDiscussion><Discussion><Para>Set <emphasis>A</emphasis> is a superset of another set <emphasis>B</emphasis> if every member of <emphasis>B</emphasis> is also a member of <emphasis>A</emphasis>.</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[let employees: Set = [\"Alicia\", \"Bethany\", \"Chris\", \"Diana\", \"Eric\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let attendees: Set = [\"Alicia\", \"Bethany\", \"Diana\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(employees.isSuperset(of: attendees))]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"true\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></Function>",
         key.offset: 2811,
         key.length: 52,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>isSuperset</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>of</decl.var.parameter.argument_label> <decl.var.parameter.name>other</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr=\"s:Sb\">Bool</ref.struct></decl.function.returntype></decl.function.method.instance>",
@@ -5930,9 +5930,9 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "isDisjoint(with:)",
-        key.usr: "s:FEsPs10SetAlgebra10isDisjointFT4withx_Sb::SYNTHESIZED::c:@E@FooRuncingOptions",
-        key.original_usr: "s:FEsPs10SetAlgebra10isDisjointFT4withx_Sb",
-        key.doc.full_as_xml: "<Function><Name>isDisjoint(with:)</Name><USR>s:FEsPs10SetAlgebra10isDisjointFT4withx_Sb</USR><Declaration>func isDisjoint(with other: Self) -&gt; Bool</Declaration><Abstract><Para>Returns a Boolean value that indicates whether the set has no members in common with the given set.</Para></Abstract><Parameters><Parameter><Name>other</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>A set of the same type as the current set.</Para></Discussion></Parameter></Parameters><ResultDiscussion><Para><codeVoice>true</codeVoice> if the set has no elements in common with <codeVoice>other</codeVoice>; otherwise, <codeVoice>false</codeVoice>.</Para></ResultDiscussion><Discussion><Para>In the following example, the <codeVoice>employees</codeVoice> set is disjoint with the <codeVoice>visitors</codeVoice> set because no name appears in both sets.</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[let employees: Set = [\"Alicia\", \"Bethany\", \"Chris\", \"Diana\", \"Eric\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let visitors: Set = [\"Marcia\", \"Nathaniel\", \"Olivia\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(employees.isDisjoint(with: visitors))]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"true\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></Function>",
+        key.usr: "s:s10SetAlgebraPsE10isDisjointSbx4with_tF::SYNTHESIZED::c:@E@FooRuncingOptions",
+        key.original_usr: "s:s10SetAlgebraPsE10isDisjointSbx4with_tF",
+        key.doc.full_as_xml: "<Function><Name>isDisjoint(with:)</Name><USR>s:s10SetAlgebraPsE10isDisjointSbx4with_tF</USR><Declaration>func isDisjoint(with other: Self) -&gt; Bool</Declaration><Abstract><Para>Returns a Boolean value that indicates whether the set has no members in common with the given set.</Para></Abstract><Parameters><Parameter><Name>other</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>A set of the same type as the current set.</Para></Discussion></Parameter></Parameters><ResultDiscussion><Para><codeVoice>true</codeVoice> if the set has no elements in common with <codeVoice>other</codeVoice>; otherwise, <codeVoice>false</codeVoice>.</Para></ResultDiscussion><Discussion><Para>In the following example, the <codeVoice>employees</codeVoice> set is disjoint with the <codeVoice>visitors</codeVoice> set because no name appears in both sets.</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[let employees: Set = [\"Alicia\", \"Bethany\", \"Chris\", \"Diana\", \"Eric\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let visitors: Set = [\"Marcia\", \"Nathaniel\", \"Olivia\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(employees.isDisjoint(with: visitors))]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"true\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></Function>",
         key.offset: 2869,
         key.length: 54,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>isDisjoint</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>with</decl.var.parameter.argument_label> <decl.var.parameter.name>other</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr=\"s:Sb\">Bool</ref.struct></decl.function.returntype></decl.function.method.instance>",
@@ -5949,9 +5949,9 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "subtracting(_:)",
-        key.usr: "s:FEsPs10SetAlgebra11subtractingFxx::SYNTHESIZED::c:@E@FooRuncingOptions",
-        key.original_usr: "s:FEsPs10SetAlgebra11subtractingFxx",
-        key.doc.full_as_xml: "<Function><Name>subtracting(_:)</Name><USR>s:FEsPs10SetAlgebra11subtractingFxx</USR><Declaration>func subtracting(_ other: Self) -&gt; Self</Declaration><Abstract><Para>Returns a new set containing the elements of this set that do not occur in the given set.</Para></Abstract><Parameters><Parameter><Name>other</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>A set of the same type as the current set.</Para></Discussion></Parameter></Parameters><ResultDiscussion><Para>A new set.</Para></ResultDiscussion><Discussion><Para>In the following example, the <codeVoice>nonNeighbors</codeVoice> set is made up of the elements of the <codeVoice>employees</codeVoice> set that are not elements of <codeVoice>neighbors</codeVoice>:</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[let employees: Set = [\"Alicia\", \"Bethany\", \"Chris\", \"Diana\", \"Eric\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let neighbors: Set = [\"Bethany\", \"Eric\", \"Forlani\", \"Greta\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let nonNeighbors = employees.subtract(neighbors)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(nonNeighbors)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"[\"Diana\", \"Chris\", \"Alicia\"]\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></Function>",
+        key.usr: "s:s10SetAlgebraPsE11subtractingxxF::SYNTHESIZED::c:@E@FooRuncingOptions",
+        key.original_usr: "s:s10SetAlgebraPsE11subtractingxxF",
+        key.doc.full_as_xml: "<Function><Name>subtracting(_:)</Name><USR>s:s10SetAlgebraPsE11subtractingxxF</USR><Declaration>func subtracting(_ other: Self) -&gt; Self</Declaration><Abstract><Para>Returns a new set containing the elements of this set that do not occur in the given set.</Para></Abstract><Parameters><Parameter><Name>other</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>A set of the same type as the current set.</Para></Discussion></Parameter></Parameters><ResultDiscussion><Para>A new set.</Para></ResultDiscussion><Discussion><Para>In the following example, the <codeVoice>nonNeighbors</codeVoice> set is made up of the elements of the <codeVoice>employees</codeVoice> set that are not elements of <codeVoice>neighbors</codeVoice>:</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[let employees: Set = [\"Alicia\", \"Bethany\", \"Chris\", \"Diana\", \"Eric\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let neighbors: Set = [\"Bethany\", \"Eric\", \"Forlani\", \"Greta\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let nonNeighbors = employees.subtract(neighbors)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(nonNeighbors)]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"[\"Diana\", \"Chris\", \"Alicia\"]\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></Function>",
         key.offset: 2929,
         key.length: 65,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>subtracting</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>other</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.function.returntype></decl.function.method.instance>",
@@ -5968,9 +5968,9 @@
       {
         key.kind: source.lang.swift.decl.var.instance,
         key.name: "isEmpty",
-        key.usr: "s:vEsPs10SetAlgebra7isEmptySb::SYNTHESIZED::c:@E@FooRuncingOptions",
-        key.original_usr: "s:vEsPs10SetAlgebra7isEmptySb",
-        key.doc.full_as_xml: "<Other><Name>isEmpty</Name><USR>s:vEsPs10SetAlgebra7isEmptySb</USR><Declaration>var isEmpty: Bool { get }</Declaration><Abstract><Para>A Boolean value that indicates whether the set has no elements.</Para></Abstract></Other>",
+        key.usr: "s:s10SetAlgebraPsE7isEmptySbv::SYNTHESIZED::c:@E@FooRuncingOptions",
+        key.original_usr: "s:s10SetAlgebraPsE7isEmptySbv",
+        key.doc.full_as_xml: "<Other><Name>isEmpty</Name><USR>s:s10SetAlgebraPsE7isEmptySbv</USR><Declaration>var isEmpty: Bool { get }</Declaration><Abstract><Para>A Boolean value that indicates whether the set has no elements.</Para></Abstract></Other>",
         key.offset: 3000,
         key.length: 25,
         key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>isEmpty</decl.name>: <decl.var.type><ref.struct usr=\"s:Sb\">Bool</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.instance>"
@@ -5978,9 +5978,9 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "isStrictSuperset(of:)",
-        key.usr: "s:FEsPs10SetAlgebra16isStrictSupersetFT2ofx_Sb::SYNTHESIZED::c:@E@FooRuncingOptions",
-        key.original_usr: "s:FEsPs10SetAlgebra16isStrictSupersetFT2ofx_Sb",
-        key.doc.full_as_xml: "<Function><Name>isStrictSuperset(of:)</Name><USR>s:FEsPs10SetAlgebra16isStrictSupersetFT2ofx_Sb</USR><Declaration>func isStrictSuperset(of other: Self) -&gt; Bool</Declaration><Abstract><Para>Returns a Boolean value that indicates whether this set is a strict superset of the given set.</Para></Abstract><Parameters><Parameter><Name>other</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>A set of the same type as the current set.</Para></Discussion></Parameter></Parameters><ResultDiscussion><Para><codeVoice>true</codeVoice> if the set is a strict superset of <codeVoice>other</codeVoice>; otherwise, <codeVoice>false</codeVoice>.</Para></ResultDiscussion><Discussion><Para>Set <emphasis>A</emphasis> is a strict superset of another set <emphasis>B</emphasis> if every member of <emphasis>B</emphasis> is also a member of <emphasis>A</emphasis> and <emphasis>A</emphasis> contains at least one element that is <emphasis>not</emphasis> a member of <emphasis>B</emphasis>.</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[let employees: Set = [\"Alicia\", \"Bethany\", \"Chris\", \"Diana\", \"Eric\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let attendees: Set = [\"Alicia\", \"Bethany\", \"Diana\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(employees.isStrictSuperset(of: attendees))]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"true\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// A set is never a strict superset of itself:]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(employees.isStrictSuperset(of: employees))]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"false\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></Function>",
+        key.usr: "s:s10SetAlgebraPsE16isStrictSupersetSbx2of_tF::SYNTHESIZED::c:@E@FooRuncingOptions",
+        key.original_usr: "s:s10SetAlgebraPsE16isStrictSupersetSbx2of_tF",
+        key.doc.full_as_xml: "<Function><Name>isStrictSuperset(of:)</Name><USR>s:s10SetAlgebraPsE16isStrictSupersetSbx2of_tF</USR><Declaration>func isStrictSuperset(of other: Self) -&gt; Bool</Declaration><Abstract><Para>Returns a Boolean value that indicates whether this set is a strict superset of the given set.</Para></Abstract><Parameters><Parameter><Name>other</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>A set of the same type as the current set.</Para></Discussion></Parameter></Parameters><ResultDiscussion><Para><codeVoice>true</codeVoice> if the set is a strict superset of <codeVoice>other</codeVoice>; otherwise, <codeVoice>false</codeVoice>.</Para></ResultDiscussion><Discussion><Para>Set <emphasis>A</emphasis> is a strict superset of another set <emphasis>B</emphasis> if every member of <emphasis>B</emphasis> is also a member of <emphasis>A</emphasis> and <emphasis>A</emphasis> contains at least one element that is <emphasis>not</emphasis> a member of <emphasis>B</emphasis>.</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[let employees: Set = [\"Alicia\", \"Bethany\", \"Chris\", \"Diana\", \"Eric\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let attendees: Set = [\"Alicia\", \"Bethany\", \"Diana\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(employees.isStrictSuperset(of: attendees))]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"true\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// A set is never a strict superset of itself:]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(employees.isStrictSuperset(of: employees))]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"false\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></Function>",
         key.offset: 3031,
         key.length: 58,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>isStrictSuperset</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>of</decl.var.parameter.argument_label> <decl.var.parameter.name>other</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr=\"s:Sb\">Bool</ref.struct></decl.function.returntype></decl.function.method.instance>",
@@ -5997,9 +5997,9 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "isStrictSubset(of:)",
-        key.usr: "s:FEsPs10SetAlgebra14isStrictSubsetFT2ofx_Sb::SYNTHESIZED::c:@E@FooRuncingOptions",
-        key.original_usr: "s:FEsPs10SetAlgebra14isStrictSubsetFT2ofx_Sb",
-        key.doc.full_as_xml: "<Function><Name>isStrictSubset(of:)</Name><USR>s:FEsPs10SetAlgebra14isStrictSubsetFT2ofx_Sb</USR><Declaration>func isStrictSubset(of other: Self) -&gt; Bool</Declaration><Abstract><Para>Returns a Boolean value that indicates whether this set is a strict subset of the given set.</Para></Abstract><Parameters><Parameter><Name>other</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>A set of the same type as the current set.</Para></Discussion></Parameter></Parameters><ResultDiscussion><Para><codeVoice>true</codeVoice> if the set is a strict subset of <codeVoice>other</codeVoice>; otherwise, <codeVoice>false</codeVoice>.</Para></ResultDiscussion><Discussion><Para>Set <emphasis>A</emphasis> is a strict subset of another set <emphasis>B</emphasis> if every member of <emphasis>A</emphasis> is also a member of <emphasis>B</emphasis> and <emphasis>B</emphasis> contains at least one element that is not a member of <emphasis>A</emphasis>.</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[let employees: Set = [\"Alicia\", \"Bethany\", \"Chris\", \"Diana\", \"Eric\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let attendees: Set = [\"Alicia\", \"Bethany\", \"Diana\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(attendees.isStrictSubset(of: employees))]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"true\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// A set is never a strict subset of itself:]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(attendees.isStrictSubset(of: attendees))]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"false\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></Function>",
+        key.usr: "s:s10SetAlgebraPsE14isStrictSubsetSbx2of_tF::SYNTHESIZED::c:@E@FooRuncingOptions",
+        key.original_usr: "s:s10SetAlgebraPsE14isStrictSubsetSbx2of_tF",
+        key.doc.full_as_xml: "<Function><Name>isStrictSubset(of:)</Name><USR>s:s10SetAlgebraPsE14isStrictSubsetSbx2of_tF</USR><Declaration>func isStrictSubset(of other: Self) -&gt; Bool</Declaration><Abstract><Para>Returns a Boolean value that indicates whether this set is a strict subset of the given set.</Para></Abstract><Parameters><Parameter><Name>other</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>A set of the same type as the current set.</Para></Discussion></Parameter></Parameters><ResultDiscussion><Para><codeVoice>true</codeVoice> if the set is a strict subset of <codeVoice>other</codeVoice>; otherwise, <codeVoice>false</codeVoice>.</Para></ResultDiscussion><Discussion><Para>Set <emphasis>A</emphasis> is a strict subset of another set <emphasis>B</emphasis> if every member of <emphasis>A</emphasis> is also a member of <emphasis>B</emphasis> and <emphasis>B</emphasis> contains at least one element that is not a member of <emphasis>A</emphasis>.</Para><CodeListing language=\"swift\"><zCodeLineNumbered><![CDATA[let employees: Set = [\"Alicia\", \"Bethany\", \"Chris\", \"Diana\", \"Eric\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[let attendees: Set = [\"Alicia\", \"Bethany\", \"Diana\"]]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(attendees.isStrictSubset(of: employees))]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"true\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// A set is never a strict subset of itself:]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[print(attendees.isStrictSubset(of: attendees))]]></zCodeLineNumbered><zCodeLineNumbered><![CDATA[// Prints \"false\"]]></zCodeLineNumbered><zCodeLineNumbered></zCodeLineNumbered></CodeListing></Discussion></Function>",
         key.offset: 3095,
         key.length: 56,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>isStrictSubset</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>of</decl.var.parameter.argument_label> <decl.var.parameter.name>other</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"c:@E@FooRuncingOptions\">FooRuncingOptions</ref.struct></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr=\"s:Sb\">Bool</ref.struct></decl.function.returntype></decl.function.method.instance>",
@@ -6029,7 +6029,7 @@
         key.usr: "c:@S@FooStruct1@FI@x",
         key.offset: 3179,
         key.length: 12,
-        key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>x</decl.name>: <decl.var.type><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.var.type></decl.var.instance>"
+        key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>x</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type></decl.var.instance>"
       },
       {
         key.kind: source.lang.swift.decl.var.instance,
@@ -6042,7 +6042,7 @@
       {
         key.kind: source.lang.swift.decl.function.constructor,
         key.name: "init()",
-        key.usr: "s:FVSC10FooStruct1cFT_S_",
+        key.usr: "s:SC10FooStruct1VABycfc",
         key.offset: 3216,
         key.length: 6,
         key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>()</decl.function.constructor>"
@@ -6050,10 +6050,10 @@
       {
         key.kind: source.lang.swift.decl.function.constructor,
         key.name: "init(x:y:)",
-        key.usr: "s:FVSC10FooStruct1cFT1xVs5Int321ySd_S_",
+        key.usr: "s:SC10FooStruct1VABs5Int32V1x_Sd1ytcfc",
         key.offset: 3228,
         key.length: 29,
-        key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.argument_label>x</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>y</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr=\"s:Sd\">Double</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.constructor>",
+        key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.argument_label>x</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>y</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr=\"s:Sd\">Double</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.constructor>",
         key.entities: [
           {
             key.kind: source.lang.swift.decl.var.local,
@@ -6084,17 +6084,17 @@
       {
         key.kind: source.lang.swift.ref.protocol,
         key.name: "Strideable",
-        key.usr: "s:Ps10Strideable"
+        key.usr: "s:s10StrideableP"
       },
       {
         key.kind: source.lang.swift.ref.protocol,
         key.name: "Hashable",
-        key.usr: "s:Ps8Hashable"
+        key.usr: "s:s8HashableP"
       },
       {
         key.kind: source.lang.swift.ref.protocol,
         key.name: "_Pointer",
-        key.usr: "s:Ps8_Pointer"
+        key.usr: "s:s8_PointerP"
       }
     ]
   },
@@ -6112,7 +6112,7 @@
         key.usr: "c:@S@FooStruct2@FI@x",
         key.offset: 3348,
         key.length: 12,
-        key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>x</decl.name>: <decl.var.type><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.var.type></decl.var.instance>"
+        key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>x</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type></decl.var.instance>"
       },
       {
         key.kind: source.lang.swift.decl.var.instance,
@@ -6125,7 +6125,7 @@
       {
         key.kind: source.lang.swift.decl.function.constructor,
         key.name: "init()",
-        key.usr: "s:FVSC10FooStruct2cFT_S_",
+        key.usr: "s:SC10FooStruct2VABycfc",
         key.offset: 3385,
         key.length: 6,
         key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>()</decl.function.constructor>"
@@ -6133,10 +6133,10 @@
       {
         key.kind: source.lang.swift.decl.function.constructor,
         key.name: "init(x:y:)",
-        key.usr: "s:FVSC10FooStruct2cFT1xVs5Int321ySd_S_",
+        key.usr: "s:SC10FooStruct2VABs5Int32V1x_Sd1ytcfc",
         key.offset: 3397,
         key.length: 29,
-        key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.argument_label>x</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>y</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr=\"s:Sd\">Double</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.constructor>",
+        key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.argument_label>x</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>y</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr=\"s:Sd\">Double</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.constructor>",
         key.entities: [
           {
             key.kind: source.lang.swift.decl.var.local,
@@ -6178,7 +6178,7 @@
         key.usr: "c:@SA@FooStructTypedef2@FI@x",
         key.offset: 3502,
         key.length: 12,
-        key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>x</decl.name>: <decl.var.type><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.var.type></decl.var.instance>"
+        key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>x</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type></decl.var.instance>"
       },
       {
         key.kind: source.lang.swift.decl.var.instance,
@@ -6191,7 +6191,7 @@
       {
         key.kind: source.lang.swift.decl.function.constructor,
         key.name: "init()",
-        key.usr: "s:FVSC17FooStructTypedef2cFT_S_",
+        key.usr: "s:SC17FooStructTypedef2VABycfc",
         key.offset: 3539,
         key.length: 6,
         key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>()</decl.function.constructor>"
@@ -6199,10 +6199,10 @@
       {
         key.kind: source.lang.swift.decl.function.constructor,
         key.name: "init(x:y:)",
-        key.usr: "s:FVSC17FooStructTypedef2cFT1xVs5Int321ySd_S_",
+        key.usr: "s:SC17FooStructTypedef2VABs5Int32V1x_Sd1ytcfc",
         key.offset: 3551,
         key.length: 29,
-        key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.argument_label>x</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>y</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr=\"s:Sd\">Double</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.constructor>",
+        key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.argument_label>x</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>y</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr=\"s:Sd\">Double</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.constructor>",
         key.entities: [
           {
             key.kind: source.lang.swift.decl.var.local,
@@ -6229,22 +6229,22 @@
     key.doc.full_as_xml: "<Typedef file=Foo.h line=\"60\" column=\"13\"><Name>FooTypedef1</Name><USR>c:Foo.h@T@FooTypedef1</USR><Declaration>typealias FooTypedef1 = Int32</Declaration><Abstract><Para> Aaa.  FooTypedef1.  Bbb.</Para></Abstract></Typedef>",
     key.offset: 3583,
     key.length: 29,
-    key.fully_annotated_decl: "<decl.typealias><syntaxtype.keyword>typealias</syntaxtype.keyword> <decl.name>FooTypedef1</decl.name> = <ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.typealias>",
+    key.fully_annotated_decl: "<decl.typealias><syntaxtype.keyword>typealias</syntaxtype.keyword> <decl.name>FooTypedef1</decl.name> = <ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.typealias>",
     key.conforms: [
       {
         key.kind: source.lang.swift.ref.protocol,
         key.name: "SignedInteger",
-        key.usr: "s:Ps13SignedInteger"
+        key.usr: "s:s13SignedIntegerP"
       },
       {
         key.kind: source.lang.swift.ref.protocol,
         key.name: "Comparable",
-        key.usr: "s:Ps10Comparable"
+        key.usr: "s:s10ComparableP"
       },
       {
         key.kind: source.lang.swift.ref.protocol,
         key.name: "Equatable",
-        key.usr: "s:Ps9Equatable"
+        key.usr: "s:s9EquatableP"
       }
     ]
   },
@@ -6255,7 +6255,7 @@
     key.doc.full_as_xml: "<Variable file=Foo.h line=\"63\" column=\"12\"><Name>fooIntVar</Name><USR>c:@fooIntVar</USR><Declaration>var fooIntVar: Int32</Declaration><Abstract><Para> Aaa.  fooIntVar.  Bbb.</Para></Abstract></Variable>",
     key.offset: 3613,
     key.length: 20,
-    key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>fooIntVar</decl.name>: <decl.var.type><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.var.type></decl.var.global>"
+    key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>fooIntVar</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type></decl.var.global>"
   },
   {
     key.kind: source.lang.swift.decl.function.free,
@@ -6264,7 +6264,7 @@
     key.doc.full_as_xml: "<Function file=Foo.h line=\"66\" column=\"5\"><Name>fooFunc1</Name><USR>c:@F@fooFunc1</USR><Declaration>func fooFunc1(_ a: Int32) -> Int32</Declaration><Abstract><Para> Aaa.  fooFunc1.  Bbb.</Para></Abstract></Function>",
     key.offset: 3634,
     key.length: 34,
-    key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooFunc1</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>a</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.function.returntype></decl.function.free>",
+    key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooFunc1</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>a</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.function.returntype></decl.function.free>",
     key.entities: [
       {
         key.kind: source.lang.swift.decl.var.local,
@@ -6281,7 +6281,7 @@
     key.usr: "c:@F@fooFunc1AnonymousParam",
     key.offset: 3669,
     key.length: 48,
-    key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooFunc1AnonymousParam</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.function.returntype></decl.function.free>",
+    key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooFunc1AnonymousParam</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.function.returntype></decl.function.free>",
     key.entities: [
       {
         key.kind: source.lang.swift.decl.var.local,
@@ -6297,7 +6297,7 @@
     key.usr: "c:@F@fooFunc3",
     key.offset: 3718,
     key.length: 94,
-    key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooFunc3</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>a</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>b</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:Sf\">Float</ref.struct></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>c</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:Sd\">Double</ref.struct></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>d</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:Sp\">UnsafeMutablePointer</ref.struct>&lt;<ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct>&gt;!</decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.function.returntype></decl.function.free>",
+    key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooFunc3</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>a</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>b</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:Sf\">Float</ref.struct></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>c</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:Sd\">Double</ref.struct></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>d</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:Sp\">UnsafeMutablePointer</ref.struct>&lt;<ref.struct usr=\"s:s5Int32V\">Int32</ref.struct>&gt;!</decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.function.returntype></decl.function.free>",
     key.entities: [
       {
         key.kind: source.lang.swift.decl.var.local,
@@ -6335,7 +6335,7 @@
     key.usr: "c:@F@fooFuncWithBlock",
     key.offset: 3813,
     key.length: 49,
-    key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooFuncWithBlock</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>blk</decl.var.parameter.name>: <decl.var.parameter.type>((<ref.struct usr=\"s:Sf\">Float</ref.struct>) -&gt; <decl.function.returntype><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.function.returntype>)!</decl.var.parameter.type></decl.var.parameter>)</decl.function.free>",
+    key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooFuncWithBlock</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>blk</decl.var.parameter.name>: <decl.var.parameter.type>((<ref.struct usr=\"s:Sf\">Float</ref.struct>) -&gt; <decl.function.returntype><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.function.returntype>)!</decl.var.parameter.type></decl.var.parameter>)</decl.function.free>",
     key.entities: [
       {
         key.kind: source.lang.swift.decl.var.local,
@@ -6352,7 +6352,7 @@
     key.usr: "c:@F@fooFuncWithFunctionPointer",
     key.offset: 3863,
     key.length: 60,
-    key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooFuncWithFunctionPointer</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>fptr</decl.var.parameter.name>: <decl.var.parameter.type>((<ref.struct usr=\"s:Sf\">Float</ref.struct>) -&gt; <decl.function.returntype><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.function.returntype>)!</decl.var.parameter.type></decl.var.parameter>)</decl.function.free>",
+    key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooFuncWithFunctionPointer</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>fptr</decl.var.parameter.name>: <decl.var.parameter.type>((<ref.struct usr=\"s:Sf\">Float</ref.struct>) -&gt; <decl.function.returntype><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.function.returntype>)!</decl.var.parameter.type></decl.var.parameter>)</decl.function.free>",
     key.entities: [
       {
         key.kind: source.lang.swift.decl.var.local,
@@ -6369,7 +6369,7 @@
     key.usr: "c:@F@fooFuncNoreturn1",
     key.offset: 3924,
     key.length: 32,
-    key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooFuncNoreturn1</decl.name>() -&gt; <decl.function.returntype><ref.enum usr=\"s:Os5Never\">Never</ref.enum></decl.function.returntype></decl.function.free>"
+    key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooFuncNoreturn1</decl.name>() -&gt; <decl.function.returntype><ref.enum usr=\"s:s5NeverO\">Never</ref.enum></decl.function.returntype></decl.function.free>"
   },
   {
     key.kind: source.lang.swift.decl.function.free,
@@ -6377,7 +6377,7 @@
     key.usr: "c:@F@fooFuncNoreturn2",
     key.offset: 3957,
     key.length: 32,
-    key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooFuncNoreturn2</decl.name>() -&gt; <decl.function.returntype><ref.enum usr=\"s:Os5Never\">Never</ref.enum></decl.function.returntype></decl.function.free>"
+    key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooFuncNoreturn2</decl.name>() -&gt; <decl.function.returntype><ref.enum usr=\"s:s5NeverO\">Never</ref.enum></decl.function.returntype></decl.function.free>"
   },
   {
     key.kind: source.lang.swift.decl.function.free,
@@ -6431,7 +6431,7 @@
     key.doc.full_as_xml: "<Function file=Foo.h line=\"118\" column=\"5\"><Name>redeclaredInMultipleModulesFunc1</Name><USR>c:@F@redeclaredInMultipleModulesFunc1</USR><Declaration>func redeclaredInMultipleModulesFunc1(_ a: Int32) -> Int32</Declaration><Abstract><Para> Aaa.  redeclaredInMultipleModulesFunc1.  Bbb.</Para></Abstract></Function>",
     key.offset: 4125,
     key.length: 58,
-    key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>redeclaredInMultipleModulesFunc1</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>a</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.function.returntype></decl.function.free>",
+    key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>redeclaredInMultipleModulesFunc1</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>a</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.function.returntype></decl.function.free>",
     key.entities: [
       {
         key.kind: source.lang.swift.decl.var.local,
@@ -6492,7 +6492,7 @@
         key.usr: "c:objc(pl)FooProtocolBase(py)fooProperty1",
         key.offset: 4370,
         key.length: 35,
-        key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>fooProperty1</decl.name>: <decl.var.type><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> <syntaxtype.keyword>set</syntaxtype.keyword> }</decl.var.instance>"
+        key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>fooProperty1</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> <syntaxtype.keyword>set</syntaxtype.keyword> }</decl.var.instance>"
       },
       {
         key.kind: source.lang.swift.decl.var.instance,
@@ -6500,7 +6500,7 @@
         key.usr: "c:objc(pl)FooProtocolBase(py)fooProperty2",
         key.offset: 4411,
         key.length: 35,
-        key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>fooProperty2</decl.name>: <decl.var.type><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> <syntaxtype.keyword>set</syntaxtype.keyword> }</decl.var.instance>"
+        key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>fooProperty2</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> <syntaxtype.keyword>set</syntaxtype.keyword> }</decl.var.instance>"
       },
       {
         key.kind: source.lang.swift.decl.var.instance,
@@ -6508,7 +6508,7 @@
         key.usr: "c:objc(pl)FooProtocolBase(py)fooProperty3",
         key.offset: 4452,
         key.length: 31,
-        key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>fooProperty3</decl.name>: <decl.var.type><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.instance>"
+        key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>fooProperty3</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.instance>"
       }
     ]
   },
@@ -6664,7 +6664,7 @@
         key.usr: "c:objc(cs)FooClassDerived(py)fooProperty1",
         key.offset: 4993,
         key.length: 23,
-        key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>fooProperty1</decl.name>: <decl.var.type><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> <syntaxtype.keyword>set</syntaxtype.keyword> }</decl.var.instance>"
+        key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>fooProperty1</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> <syntaxtype.keyword>set</syntaxtype.keyword> }</decl.var.instance>"
       },
       {
         key.kind: source.lang.swift.decl.var.instance,
@@ -6672,7 +6672,7 @@
         key.usr: "c:objc(cs)FooClassDerived(py)fooProperty2",
         key.offset: 5022,
         key.length: 23,
-        key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>fooProperty2</decl.name>: <decl.var.type><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> <syntaxtype.keyword>set</syntaxtype.keyword> }</decl.var.instance>"
+        key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>fooProperty2</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> <syntaxtype.keyword>set</syntaxtype.keyword> }</decl.var.instance>"
       },
       {
         key.kind: source.lang.swift.decl.var.instance,
@@ -6680,7 +6680,7 @@
         key.usr: "c:objc(cs)FooClassDerived(py)fooProperty3",
         key.offset: 5051,
         key.length: 31,
-        key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>fooProperty3</decl.name>: <decl.var.type><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.instance>"
+        key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>fooProperty3</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.instance>"
       },
       {
         key.kind: source.lang.swift.decl.function.method.instance,
@@ -6696,7 +6696,7 @@
         key.usr: "c:objc(cs)FooClassDerived(im)fooInstanceFunc1:",
         key.offset: 5117,
         key.length: 33,
-        key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooInstanceFunc1</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>a</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.method.instance>",
+        key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooInstanceFunc1</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>a</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.method.instance>",
         key.entities: [
           {
             key.kind: source.lang.swift.decl.var.local,
@@ -6713,7 +6713,7 @@
         key.usr: "c:objc(cs)FooClassDerived(im)fooInstanceFunc2:withB:",
         key.offset: 5156,
         key.length: 49,
-        key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooInstanceFunc2</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>a</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>withB</decl.var.parameter.argument_label> <decl.var.parameter.name>b</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.method.instance>",
+        key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooInstanceFunc2</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>a</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>withB</decl.var.parameter.argument_label> <decl.var.parameter.name>b</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.method.instance>",
         key.entities: [
           {
             key.kind: source.lang.swift.decl.var.local,
@@ -6798,22 +6798,22 @@
     key.usr: "c:Foo.h@T@typedef_int_t",
     key.offset: 5423,
     key.length: 31,
-    key.fully_annotated_decl: "<decl.typealias><syntaxtype.keyword>typealias</syntaxtype.keyword> <decl.name>typedef_int_t</decl.name> = <ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.typealias>",
+    key.fully_annotated_decl: "<decl.typealias><syntaxtype.keyword>typealias</syntaxtype.keyword> <decl.name>typedef_int_t</decl.name> = <ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.typealias>",
     key.conforms: [
       {
         key.kind: source.lang.swift.ref.protocol,
         key.name: "SignedInteger",
-        key.usr: "s:Ps13SignedInteger"
+        key.usr: "s:s13SignedIntegerP"
       },
       {
         key.kind: source.lang.swift.ref.protocol,
         key.name: "Comparable",
-        key.usr: "s:Ps10Comparable"
+        key.usr: "s:s10ComparableP"
       },
       {
         key.kind: source.lang.swift.ref.protocol,
         key.name: "Equatable",
-        key.usr: "s:Ps9Equatable"
+        key.usr: "s:s9EquatableP"
       }
     ]
   },
@@ -6823,7 +6823,7 @@
     key.usr: "c:Foo.h@3720@macro@FOO_MACRO_1",
     key.offset: 5455,
     key.length: 30,
-    key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_1</decl.name>: <decl.var.type><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
+    key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_1</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
   },
   {
     key.kind: source.lang.swift.decl.var.global,
@@ -6831,7 +6831,7 @@
     key.usr: "c:Foo.h@3742@macro@FOO_MACRO_2",
     key.offset: 5486,
     key.length: 30,
-    key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_2</decl.name>: <decl.var.type><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
+    key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_2</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
   },
   {
     key.kind: source.lang.swift.decl.var.global,
@@ -6839,7 +6839,7 @@
     key.usr: "c:Foo.h@3764@macro@FOO_MACRO_3",
     key.offset: 5517,
     key.length: 30,
-    key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_3</decl.name>: <decl.var.type><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
+    key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_3</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
   },
   {
     key.kind: source.lang.swift.decl.var.global,
@@ -6847,7 +6847,7 @@
     key.usr: "c:Foo.h@3828@macro@FOO_MACRO_4",
     key.offset: 5548,
     key.length: 31,
-    key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_4</decl.name>: <decl.var.type><ref.struct usr=\"s:Vs6UInt32\">UInt32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
+    key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_4</decl.name>: <decl.var.type><ref.struct usr=\"s:s6UInt32V\">UInt32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
   },
   {
     key.kind: source.lang.swift.decl.var.global,
@@ -6855,7 +6855,7 @@
     key.usr: "c:Foo.h@3860@macro@FOO_MACRO_5",
     key.offset: 5580,
     key.length: 31,
-    key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_5</decl.name>: <decl.var.type><ref.struct usr=\"s:Vs6UInt64\">UInt64</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
+    key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_5</decl.name>: <decl.var.type><ref.struct usr=\"s:s6UInt64V\">UInt64</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
   },
   {
     key.kind: source.lang.swift.decl.var.global,
@@ -6879,7 +6879,7 @@
     key.usr: "c:Foo.h@3984@macro@FOO_MACRO_8",
     key.offset: 5690,
     key.length: 29,
-    key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_8</decl.name>: <decl.var.type><ref.struct usr=\"s:Vs4Int8\">Int8</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
+    key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_8</decl.name>: <decl.var.type><ref.struct usr=\"s:s4Int8V\">Int8</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
   },
   {
     key.kind: source.lang.swift.decl.var.global,
@@ -6887,7 +6887,7 @@
     key.usr: "c:Foo.h@4015@macro@FOO_MACRO_9",
     key.offset: 5720,
     key.length: 30,
-    key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_9</decl.name>: <decl.var.type><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
+    key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_9</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
   },
   {
     key.kind: source.lang.swift.decl.var.global,
@@ -6895,7 +6895,7 @@
     key.usr: "c:Foo.h@4045@macro@FOO_MACRO_10",
     key.offset: 5751,
     key.length: 31,
-    key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_10</decl.name>: <decl.var.type><ref.struct usr=\"s:Vs5Int16\">Int16</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
+    key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_10</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int16V\">Int16</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
   },
   {
     key.kind: source.lang.swift.decl.var.global,
@@ -6911,7 +6911,7 @@
     key.usr: "c:Foo.h@4477@macro@FOO_MACRO_REDEF_1",
     key.offset: 5813,
     key.length: 36,
-    key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_REDEF_1</decl.name>: <decl.var.type><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
+    key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_REDEF_1</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
   },
   {
     key.kind: source.lang.swift.decl.var.global,
@@ -6919,7 +6919,7 @@
     key.usr: "c:Foo.h@4534@macro@FOO_MACRO_REDEF_2",
     key.offset: 5850,
     key.length: 36,
-    key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_REDEF_2</decl.name>: <decl.var.type><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
+    key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_REDEF_2</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
   },
   {
     key.kind: source.lang.swift.decl.function.free,
@@ -6951,12 +6951,12 @@
         key.usr: "c:@S@_InternalStruct@FI@x",
         key.offset: 5970,
         key.length: 12,
-        key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>x</decl.name>: <decl.var.type><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.var.type></decl.var.instance>"
+        key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>x</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type></decl.var.instance>"
       },
       {
         key.kind: source.lang.swift.decl.function.constructor,
         key.name: "init()",
-        key.usr: "s:FVSC15_InternalStructcFT_S_",
+        key.usr: "s:SC15_InternalStructVABycfc",
         key.offset: 5988,
         key.length: 6,
         key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>()</decl.function.constructor>"
@@ -6964,10 +6964,10 @@
       {
         key.kind: source.lang.swift.decl.function.constructor,
         key.name: "init(x:)",
-        key.usr: "s:FVSC15_InternalStructcFT1xVs5Int32_S_",
+        key.usr: "s:SC15_InternalStructVABs5Int32V1x_tcfc",
         key.offset: 6000,
         key.length: 16,
-        key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.argument_label>x</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.constructor>",
+        key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.argument_label>x</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.constructor>",
         key.entities: [
           {
             key.kind: source.lang.swift.decl.var.local,
@@ -7140,7 +7140,7 @@
         key.usr: "c:objc(cs)FooClassPropertyOwnership(py)scalar",
         key.offset: 6581,
         key.length: 17,
-        key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>scalar</decl.name>: <decl.var.type><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> <syntaxtype.keyword>set</syntaxtype.keyword> }</decl.var.instance>"
+        key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>scalar</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> <syntaxtype.keyword>set</syntaxtype.keyword> }</decl.var.instance>"
       },
       {
         key.kind: source.lang.swift.decl.function.method.instance,
@@ -7217,7 +7217,7 @@
         key.usr: "c:objc(cs)FooUnavailableMembers(cm)unavailableMembersWithInt:",
         key.offset: 6808,
         key.length: 31,
-        key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>convenience</syntaxtype.keyword> <syntaxtype.keyword>init</syntaxtype.keyword>!(<decl.var.parameter><decl.var.parameter.argument_label>int</decl.var.parameter.argument_label> <decl.var.parameter.name>i</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.constructor>",
+        key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>convenience</syntaxtype.keyword> <syntaxtype.keyword>init</syntaxtype.keyword>!(<decl.var.parameter><decl.var.parameter.argument_label>int</decl.var.parameter.argument_label> <decl.var.parameter.name>i</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.constructor>",
         key.entities: [
           {
             key.kind: source.lang.swift.decl.var.local,
@@ -7541,7 +7541,7 @@
     key.usr: "c:@F@fooSubFunc1",
     key.offset: 7492,
     key.length: 37,
-    key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooSubFunc1</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>a</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr=\"s:Vs5Int32\">Int32</ref.struct></decl.function.returntype></decl.function.free>",
+    key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooSubFunc1</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>a</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.function.returntype></decl.function.free>",
     key.entities: [
       {
         key.kind: source.lang.swift.decl.var.local,
@@ -7558,27 +7558,27 @@
     key.usr: "c:@E@FooSubEnum1",
     key.offset: 7530,
     key.length: 145,
-    key.fully_annotated_decl: "<decl.struct><syntaxtype.keyword>struct</syntaxtype.keyword> <decl.name>FooSubEnum1</decl.name> : <ref.protocol usr=\"s:Ps16RawRepresentable\">RawRepresentable</ref.protocol>, <ref.protocol usr=\"s:Ps9Equatable\">Equatable</ref.protocol></decl.struct>",
+    key.fully_annotated_decl: "<decl.struct><syntaxtype.keyword>struct</syntaxtype.keyword> <decl.name>FooSubEnum1</decl.name> : <ref.protocol usr=\"s:s16RawRepresentableP\">RawRepresentable</ref.protocol>, <ref.protocol usr=\"s:s9EquatableP\">Equatable</ref.protocol></decl.struct>",
     key.conforms: [
       {
         key.kind: source.lang.swift.ref.protocol,
         key.name: "RawRepresentable",
-        key.usr: "s:Ps16RawRepresentable"
+        key.usr: "s:s16RawRepresentableP"
       },
       {
         key.kind: source.lang.swift.ref.protocol,
         key.name: "Equatable",
-        key.usr: "s:Ps9Equatable"
+        key.usr: "s:s9EquatableP"
       }
     ],
     key.entities: [
       {
         key.kind: source.lang.swift.decl.function.constructor,
         key.name: "init(_:)",
-        key.usr: "s:FVSC11FooSubEnum1cFVs6UInt32S_",
+        key.usr: "s:SC11FooSubEnum1VABs6UInt32Vcfc",
         key.offset: 7586,
         key.length: 24,
-        key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>rawValue</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:Vs6UInt32\">UInt32</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.constructor>",
+        key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>rawValue</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:s6UInt32V\">UInt32</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.constructor>",
         key.entities: [
           {
             key.kind: source.lang.swift.decl.var.local,
@@ -7592,15 +7592,15 @@
       {
         key.kind: source.lang.swift.decl.function.constructor,
         key.name: "init(rawValue:)",
-        key.usr: "s:FVSC11FooSubEnum1cFT8rawValueVs6UInt32_S_",
+        key.usr: "s:SC11FooSubEnum1VABs6UInt32V8rawValue_tcfc",
         key.offset: 7616,
         key.length: 31,
-        key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.argument_label>rawValue</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr=\"s:Vs6UInt32\">UInt32</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.constructor>",
+        key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.argument_label>rawValue</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr=\"s:s6UInt32V\">UInt32</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.constructor>",
         key.conforms: [
           {
             key.kind: source.lang.swift.ref.function.constructor,
             key.name: "init(rawValue:)",
-            key.usr: "s:FPs16RawRepresentablecFT8rawValuewx8RawValue_GSqx_"
+            key.usr: "s:s16RawRepresentablePxSg0A5ValueQz03rawC0_tcfc"
           }
         ],
         key.entities: [
@@ -7616,15 +7616,15 @@
       {
         key.kind: source.lang.swift.decl.var.instance,
         key.name: "rawValue",
-        key.usr: "s:vVSC11FooSubEnum18rawValueVs6UInt32",
+        key.usr: "s:SC11FooSubEnum1V8rawValues6UInt32Vv",
         key.offset: 7653,
         key.length: 20,
-        key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>rawValue</decl.name>: <decl.var.type><ref.struct usr=\"s:Vs6UInt32\">UInt32</ref.struct></decl.var.type></decl.var.instance>",
+        key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>rawValue</decl.name>: <decl.var.type><ref.struct usr=\"s:s6UInt32V\">UInt32</ref.struct></decl.var.type></decl.var.instance>",
         key.conforms: [
           {
             key.kind: source.lang.swift.ref.var.instance,
             key.name: "rawValue",
-            key.usr: "s:vPs16RawRepresentable8rawValuewx8RawValue"
+            key.usr: "s:s16RawRepresentableP8rawValue0aD0Qzv"
           }
         ]
       }
diff --git a/test/SourceKit/DocSupport/doc_error_domain.swift b/test/SourceKit/DocSupport/doc_error_domain.swift
index 39f7bfe..6020de2 100644
--- a/test/SourceKit/DocSupport/doc_error_domain.swift
+++ b/test/SourceKit/DocSupport/doc_error_domain.swift
@@ -13,7 +13,7 @@
 
 // CHECK:         key.kind: source.lang.swift.decl.struct,
 // CHECK-NEXT:    key.name: "MyError",
-// CHECK-NEXT:    key.usr: "s:VSC7MyError",
+// CHECK-NEXT:    key.usr: "s:SC7MyErrorV",
 // CHECK-NEXT:    This is my cool error code.
 
 // CHECK:             key.kind: source.lang.swift.decl.enum,
@@ -28,5 +28,5 @@
 
 // CHECK:             key.kind: source.lang.swift.decl.var.static,
 // CHECK-NEXT:        key.name: "errFirst",
-// CHECK-NEXT:        key.usr: "s:ZvVSC7MyError8errFirstOS_4Code",
+// CHECK-NEXT:        key.usr: "s:SC7MyErrorV8errFirstAB4CodeOvZ",
 // CHECK-NEXT:        This is first error.
diff --git a/test/SourceKit/DocSupport/doc_source_file.swift.response b/test/SourceKit/DocSupport/doc_source_file.swift.response
index 4ad7e5a..4ae3d71 100644
--- a/test/SourceKit/DocSupport/doc_source_file.swift.response
+++ b/test/SourceKit/DocSupport/doc_source_file.swift.response
@@ -71,7 +71,7 @@
   {
     key.kind: source.lang.swift.ref.class,
     key.name: "CC0",
-    key.usr: "s:C8__main__3CC0",
+    key.usr: "s:8__main__3CC0C",
     key.offset: 71,
     key.length: 3
   },
@@ -255,14 +255,14 @@
   {
     key.kind: source.lang.swift.ref.var.instance,
     key.name: "instV",
-    key.usr: "s:vC8__main__2CC5instVCS_3CC0",
+    key.usr: "s:8__main__2CCC5instVAA3CC0Cv",
     key.offset: 267,
     key.length: 5
   },
   {
     key.kind: source.lang.swift.ref.function.constructor,
     key.name: "init()",
-    key.usr: "s:FC8__main__3CC0cFT_S0_",
+    key.usr: "s:8__main__3CC0CACycfc",
     key.offset: 275,
     key.length: 3
   },
@@ -284,7 +284,7 @@
   {
     key.kind: source.lang.swift.ref.class,
     key.name: "CC",
-    key.usr: "s:C8__main__2CC",
+    key.usr: "s:8__main__2CCC",
     key.offset: 299,
     key.length: 2
   },
@@ -301,14 +301,14 @@
   {
     key.kind: source.lang.swift.ref.class,
     key.name: "CC0",
-    key.usr: "s:C8__main__3CC0",
+    key.usr: "s:8__main__3CC0C",
     key.offset: 306,
     key.length: 3
   },
   {
     key.kind: source.lang.swift.ref.class,
     key.name: "CC",
-    key.usr: "s:C8__main__2CC",
+    key.usr: "s:8__main__2CCC",
     key.offset: 314,
     key.length: 2
   },
@@ -416,7 +416,7 @@
   {
     key.kind: source.lang.swift.ref.protocol,
     key.name: "Prot",
-    key.usr: "s:P8__main__4Prot",
+    key.usr: "s:8__main__4ProtP",
     key.offset: 451,
     key.length: 4
   },
@@ -448,7 +448,7 @@
   {
     key.kind: source.lang.swift.ref.class,
     key.name: "CC",
-    key.usr: "s:C8__main__2CC",
+    key.usr: "s:8__main__2CCC",
     key.offset: 474,
     key.length: 2
   },
@@ -465,7 +465,7 @@
   {
     key.kind: source.lang.swift.ref.enum,
     key.name: "E",
-    key.usr: "s:O8__main__1E",
+    key.usr: "s:8__main__1EO",
     key.offset: 481,
     key.length: 1
   },
@@ -499,7 +499,7 @@
   {
     key.kind: source.lang.swift.ref.var.global,
     key.name: "globV",
-    key.usr: "s:v8__main__5globVSi",
+    key.usr: "s:8__main__5globVSiv",
     key.offset: 508,
     key.length: 5
   },
@@ -522,7 +522,7 @@
   {
     key.kind: source.lang.swift.ref.function.operator.infix,
     key.name: "+(_:_:)",
-    key.usr: "s:F8__main__oi1pFTCS_2CCCS_3CC0_S0_",
+    key.usr: "s:8__main__1poiAA2CCCAD_AA3CC0CtF",
     key.offset: 526,
     key.length: 1
   },
@@ -535,7 +535,7 @@
   {
     key.kind: source.lang.swift.ref.var.instance,
     key.name: "instV",
-    key.usr: "s:vC8__main__2CC5instVCS_3CC0",
+    key.usr: "s:8__main__2CCC5instVAA3CC0Cv",
     key.offset: 530,
     key.length: 5
   },
@@ -548,21 +548,21 @@
   {
     key.kind: source.lang.swift.ref.function.method.instance,
     key.name: "meth()",
-    key.usr: "s:FC8__main__2CC4methFT_T_",
+    key.usr: "s:8__main__2CCC4methyyF",
     key.offset: 540,
     key.length: 4
   },
   {
     key.kind: source.lang.swift.ref.class,
     key.name: "CC",
-    key.usr: "s:C8__main__2CC",
+    key.usr: "s:8__main__2CCC",
     key.offset: 549,
     key.length: 2
   },
   {
     key.kind: source.lang.swift.ref.function.method.class,
     key.name: "smeth()",
-    key.usr: "s:ZFC8__main__2CC5smethFT_T_",
+    key.usr: "s:8__main__2CCC5smethyyFZ",
     key.offset: 552,
     key.length: 5
   },
@@ -575,14 +575,14 @@
   {
     key.kind: source.lang.swift.ref.enum,
     key.name: "E",
-    key.usr: "s:O8__main__1E",
+    key.usr: "s:8__main__1EO",
     key.offset: 566,
     key.length: 1
   },
   {
     key.kind: source.lang.swift.ref.enumelement,
     key.name: "EElem",
-    key.usr: "s:FO8__main__1E5EElemFMS0_S0_",
+    key.usr: "s:8__main__1EO5EElemAcCmF",
     key.offset: 568,
     key.length: 5
   },
@@ -599,7 +599,7 @@
   {
     key.kind: source.lang.swift.ref.class,
     key.name: "CC",
-    key.usr: "s:C8__main__2CC",
+    key.usr: "s:8__main__2CCC",
     key.offset: 583,
     key.length: 2
   },
@@ -626,7 +626,7 @@
   {
     key.kind: source.lang.swift.ref.class,
     key.name: "LocalCC",
-    key.usr: "s:CF8__main__3fooFTCS_2CC1bOS_1E_T_L_7LocalCC",
+    key.usr: "s:8__main__3fooyAA2CCC_AA1EO1btF05LocalC0L_C",
     key.offset: 614,
     key.length: 7
   },
@@ -643,7 +643,7 @@
   {
     key.kind: source.lang.swift.ref.class,
     key.name: "CC",
-    key.usr: "s:C8__main__2CC",
+    key.usr: "s:8__main__2CCC",
     key.offset: 645,
     key.length: 2
   },
@@ -655,14 +655,14 @@
   {
     key.kind: source.lang.swift.ref.class,
     key.name: "CC",
-    key.usr: "s:C8__main__2CC",
+    key.usr: "s:8__main__2CCC",
     key.offset: 659,
     key.length: 2
   },
   {
     key.kind: source.lang.swift.ref.protocol,
     key.name: "Prot",
-    key.usr: "s:P8__main__4Prot",
+    key.usr: "s:8__main__4ProtP",
     key.offset: 664,
     key.length: 4
   },
@@ -726,7 +726,7 @@
   {
     key.kind: source.lang.swift.ref.protocol,
     key.name: "Prot",
-    key.usr: "s:P8__main__4Prot",
+    key.usr: "s:8__main__4ProtP",
     key.offset: 722,
     key.length: 4
   },
@@ -770,7 +770,7 @@
   {
     key.kind: source.lang.swift.ref.class,
     key.name: "CC",
-    key.usr: "s:C8__main__2CC",
+    key.usr: "s:8__main__2CCC",
     key.offset: 778,
     key.length: 2
   },
@@ -787,7 +787,7 @@
   {
     key.kind: source.lang.swift.ref.class,
     key.name: "SubCC",
-    key.usr: "s:C8__main__5SubCC",
+    key.usr: "s:8__main__5SubCCC",
     key.offset: 797,
     key.length: 5
   },
@@ -934,7 +934,7 @@
   {
     key.kind: source.lang.swift.ref.protocol,
     key.name: "Prot",
-    key.usr: "s:P8__main__4Prot",
+    key.usr: "s:8__main__4ProtP",
     key.offset: 1036,
     key.length: 4
   },
@@ -951,14 +951,14 @@
   {
     key.kind: source.lang.swift.ref.class,
     key.name: "BC2",
-    key.usr: "s:C8__main__3BC2",
+    key.usr: "s:8__main__3BC2C",
     key.offset: 1061,
     key.length: 3
   },
   {
     key.kind: source.lang.swift.ref.protocol,
     key.name: "Prot",
-    key.usr: "s:P8__main__4Prot",
+    key.usr: "s:8__main__4ProtP",
     key.offset: 1066,
     key.length: 4
   },
@@ -995,7 +995,7 @@
   {
     key.kind: source.lang.swift.ref.protocol,
     key.name: "Prot",
-    key.usr: "s:P8__main__4Prot",
+    key.usr: "s:8__main__4ProtP",
     key.offset: 1103,
     key.length: 4
   },
@@ -1083,7 +1083,7 @@
   {
     key.kind: source.lang.swift.ref.function.operator.infix,
     key.name: "+(_:_:)",
-    key.usr: "s:Fsoi1pFTSiSi_Si",
+    key.usr: "s:s1poiSiSi_SitF",
     key.offset: 1217,
     key.length: 1
   },
@@ -1120,7 +1120,7 @@
   {
     key.kind: source.lang.swift.ref.class,
     key.name: "ComputedProperty",
-    key.usr: "s:C8__main__16ComputedProperty",
+    key.usr: "s:8__main__16ComputedPropertyC",
     key.offset: 1250,
     key.length: 16
   },
@@ -1137,7 +1137,7 @@
   {
     key.kind: source.lang.swift.ref.class,
     key.name: "CC2",
-    key.usr: "s:C8__main__3CC2",
+    key.usr: "s:8__main__3CC2C",
     key.offset: 1273,
     key.length: 3
   },
@@ -1160,7 +1160,7 @@
   {
     key.kind: source.lang.swift.ref.var.instance,
     key.name: "value",
-    key.usr: "s:vC8__main__16ComputedProperty5valueSi",
+    key.usr: "s:8__main__16ComputedPropertyC5valueSiv",
     key.offset: 1293,
     key.length: 5
   },
@@ -1179,7 +1179,7 @@
   {
     key.kind: source.lang.swift.ref.var.instance,
     key.name: "readOnly",
-    key.usr: "s:vC8__main__16ComputedProperty8readOnlySi",
+    key.usr: "s:8__main__16ComputedPropertyC8readOnlySiv",
     key.offset: 1308,
     key.length: 8
   },
@@ -1192,7 +1192,7 @@
   {
     key.kind: source.lang.swift.ref.var.instance,
     key.name: "value",
-    key.usr: "s:vC8__main__16ComputedProperty5valueSi",
+    key.usr: "s:8__main__16ComputedPropertyC5valueSiv",
     key.offset: 1322,
     key.length: 5
   },
@@ -1211,14 +1211,14 @@
   {
     key.kind: source.lang.swift.ref.var.instance,
     key.name: "value",
-    key.usr: "s:vC8__main__16ComputedProperty5valueSi",
+    key.usr: "s:8__main__16ComputedPropertyC5valueSiv",
     key.offset: 1337,
     key.length: 5
   },
   {
     key.kind: source.lang.swift.ref.function.operator.infix,
     key.name: "+=(_:_:)",
-    key.usr: "s:Fsoi2peFTRSiSi_T_",
+    key.usr: "s:s2peoiySiz_SitF",
     key.offset: 1343,
     key.length: 2
   },
@@ -1242,7 +1242,7 @@
   {
     key.kind: source.lang.swift.ref.function.subscript,
     key.name: "subscript(_:)",
-    key.usr: "s:iC8__main__3CC29subscriptFSiSi",
+    key.usr: "s:8__main__3CC2C9subscriptSiSici",
     key.offset: 1357,
     key.length: 1
   },
@@ -1254,7 +1254,7 @@
   {
     key.kind: source.lang.swift.ref.function.subscript,
     key.name: "subscript(_:)",
-    key.usr: "s:iC8__main__3CC29subscriptFSiSi",
+    key.usr: "s:8__main__3CC2C9subscriptSiSici",
     key.offset: 1359,
     key.length: 1
   },
@@ -1267,7 +1267,7 @@
   {
     key.kind: source.lang.swift.ref.function.subscript,
     key.name: "subscript(_:)",
-    key.usr: "s:iC8__main__3CC29subscriptFSiSi",
+    key.usr: "s:8__main__3CC2C9subscriptSiSici",
     key.offset: 1366,
     key.length: 1
   },
@@ -1279,7 +1279,7 @@
   {
     key.kind: source.lang.swift.ref.function.subscript,
     key.name: "subscript(_:)",
-    key.usr: "s:iC8__main__3CC29subscriptFSiSi",
+    key.usr: "s:8__main__3CC2C9subscriptSiSici",
     key.offset: 1368,
     key.length: 1
   },
@@ -1298,7 +1298,7 @@
   {
     key.kind: source.lang.swift.ref.function.subscript,
     key.name: "subscript(_:)",
-    key.usr: "s:iC8__main__3CC29subscriptFSiSi",
+    key.usr: "s:8__main__3CC2C9subscriptSiSici",
     key.offset: 1379,
     key.length: 1
   },
@@ -1310,14 +1310,14 @@
   {
     key.kind: source.lang.swift.ref.function.subscript,
     key.name: "subscript(_:)",
-    key.usr: "s:iC8__main__3CC29subscriptFSiSi",
+    key.usr: "s:8__main__3CC2C9subscriptSiSici",
     key.offset: 1381,
     key.length: 1
   },
   {
     key.kind: source.lang.swift.ref.function.operator.infix,
     key.name: "+=(_:_:)",
-    key.usr: "s:Fsoi2peFTRSiSi_T_",
+    key.usr: "s:s2peoiySiz_SitF",
     key.offset: 1383,
     key.length: 2
   },
@@ -1359,7 +1359,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "S2",
-    key.usr: "s:V8__main__2S2",
+    key.usr: "s:8__main__2S2V",
     key.offset: 1442,
     key.length: 2
   },
@@ -1376,7 +1376,7 @@
   {
     key.kind: source.lang.swift.ref.function.constructor,
     key.name: "init()",
-    key.usr: "s:FV8__main__2S2cFT_S0_",
+    key.usr: "s:8__main__2S2VACycfc",
     key.offset: 1466,
     key.length: 2
   },
@@ -1393,14 +1393,14 @@
   {
     key.kind: source.lang.swift.ref.var.global,
     key.name: "globReadOnly",
-    key.usr: "s:v8__main__12globReadOnlyVS_2S2",
+    key.usr: "s:8__main__12globReadOnlyAA2S2Vv",
     key.offset: 1496,
     key.length: 12
   },
   {
     key.kind: source.lang.swift.ref.function.method.instance,
     key.name: "sfoo()",
-    key.usr: "s:FV8__main__2S24sfooFT_T_",
+    key.usr: "s:8__main__2S2V4sfooyyF",
     key.offset: 1509,
     key.length: 4
   },
@@ -1437,7 +1437,7 @@
   {
     key.kind: source.lang.swift.ref.class,
     key.name: "B1",
-    key.usr: "s:C8__main__2B1",
+    key.usr: "s:8__main__2B1C",
     key.offset: 1561,
     key.length: 2
   },
@@ -1459,7 +1459,7 @@
   {
     key.kind: source.lang.swift.ref.function.method.instance,
     key.name: "foo()",
-    key.usr: "s:FC8__main__3SB13fooFT_T_",
+    key.usr: "s:8__main__3SB1C3fooyyF",
     key.offset: 1594,
     key.length: 3
   },
@@ -1472,7 +1472,7 @@
   {
     key.kind: source.lang.swift.ref.function.method.instance,
     key.name: "foo()",
-    key.usr: "s:FC8__main__3SB13fooFT_T_",
+    key.usr: "s:8__main__3SB1C3fooyyF",
     key.offset: 1609,
     key.length: 3
   },
@@ -1484,7 +1484,7 @@
   {
     key.kind: source.lang.swift.ref.function.method.instance,
     key.name: "foo()",
-    key.usr: "s:FC8__main__2B13fooFT_T_",
+    key.usr: "s:8__main__2B1C3fooyyF",
     key.offset: 1625,
     key.length: 3
   },
@@ -1516,7 +1516,7 @@
   {
     key.kind: source.lang.swift.ref.class,
     key.name: "SB1",
-    key.usr: "s:C8__main__3SB1",
+    key.usr: "s:8__main__3SB1C",
     key.offset: 1654,
     key.length: 3
   },
@@ -1533,14 +1533,14 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "S2",
-    key.usr: "s:V8__main__2S2",
+    key.usr: "s:8__main__2S2V",
     key.offset: 1662,
     key.length: 2
   },
   {
     key.kind: source.lang.swift.ref.function.free,
     key.name: "test2()",
-    key.usr: "s:F8__main__5test2FT_T_",
+    key.usr: "s:8__main__5test2yyF",
     key.offset: 1670,
     key.length: 5
   },
@@ -1553,7 +1553,7 @@
   {
     key.kind: source.lang.swift.ref.function.method.instance,
     key.name: "foo()",
-    key.usr: "s:FC8__main__3SB13fooFT_T_",
+    key.usr: "s:8__main__3SB1C3fooyyF",
     key.offset: 1682,
     key.length: 3
   },
@@ -1566,7 +1566,7 @@
   {
     key.kind: source.lang.swift.ref.function.method.instance,
     key.name: "sfoo()",
-    key.usr: "s:FV8__main__2S24sfooFT_T_",
+    key.usr: "s:8__main__2S2V4sfooyyF",
     key.offset: 1692,
     key.length: 4
   },
@@ -1672,7 +1672,7 @@
   {
     key.kind: source.lang.swift.ref.protocol,
     key.name: "Prot2",
-    key.usr: "s:P8__main__5Prot2",
+    key.usr: "s:8__main__5Prot2P",
     key.offset: 1825,
     key.length: 5
   },
@@ -1743,7 +1743,7 @@
   {
     key.kind: source.lang.swift.ref.protocol,
     key.name: "Prot2",
-    key.usr: "s:P8__main__5Prot2",
+    key.usr: "s:8__main__5Prot2P",
     key.offset: 1912,
     key.length: 5
   },
@@ -1770,14 +1770,14 @@
   {
     key.kind: source.lang.swift.ref.generic_type_param,
     key.name: "T",
-    key.usr: "s:tF8__main__6genfoouRxS_5Prot2wx7ElementzSirFxT_L_1TMx",
+    key.usr: "s:8__main__6genfooyxAA5Prot2RzSi7ElementRtzlF1TL_xmfp",
     key.offset: 1933,
     key.length: 1
   },
   {
     key.kind: source.lang.swift.ref.associatedtype,
     key.name: "Element",
-    key.usr: "s:P8__main__5Prot27Element",
+    key.usr: "s:8__main__5Prot2P7Element",
     key.offset: 1935,
     key.length: 7
   },
@@ -1801,7 +1801,7 @@
   {
     key.kind: source.lang.swift.ref.generic_type_param,
     key.name: "T",
-    key.usr: "s:tF8__main__6genfoouRxS_5Prot2wx7ElementzSirFxT_L_1TMx",
+    key.usr: "s:8__main__6genfooyxAA5Prot2RzSi7ElementRtzlF1TL_xmfp",
     key.offset: 1924,
     key.length: 1
   },
@@ -1838,7 +1838,7 @@
   {
     key.kind: source.lang.swift.ref.generic_type_param,
     key.name: "Self",
-    key.usr: "s:tP8__main__5Prot34SelfMx",
+    key.usr: "s:8__main__5Prot3P4Selfxmfp",
     key.offset: 1990,
     key.length: 4
   },
@@ -1855,7 +1855,7 @@
   {
     key.kind: source.lang.swift.ref.generic_type_param,
     key.name: "Self",
-    key.usr: "s:tP8__main__5Prot34SelfMx",
+    key.usr: "s:8__main__5Prot3P4Selfxmfp",
     key.offset: 1999,
     key.length: 4
   }
@@ -1864,13 +1864,13 @@
   {
     key.kind: source.lang.swift.decl.var.global,
     key.name: "globV",
-    key.usr: "s:v8__main__5globVSi",
+    key.usr: "s:8__main__5globVSiv",
     key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>globV</decl.name>: <decl.var.type><ref.struct usr=\"s:Si\">Int</ref.struct></decl.var.type></decl.var.global>"
   },
   {
     key.kind: source.lang.swift.decl.class,
     key.name: "CC0",
-    key.usr: "s:C8__main__3CC0",
+    key.usr: "s:8__main__3CC0C",
     key.offset: 16,
     key.length: 29,
     key.fully_annotated_decl: "<decl.class><syntaxtype.keyword>class</syntaxtype.keyword> <decl.name>CC0</decl.name></decl.class>",
@@ -1878,7 +1878,7 @@
       {
         key.kind: source.lang.swift.decl.var.instance,
         key.name: "x",
-        key.usr: "s:vC8__main__3CC01xSi",
+        key.usr: "s:8__main__3CC0C1xSiv",
         key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>x</decl.name>: <decl.var.type><ref.struct usr=\"s:Si\">Int</ref.struct></decl.var.type></decl.var.instance>"
       }
     ]
@@ -1886,7 +1886,7 @@
   {
     key.kind: source.lang.swift.decl.class,
     key.name: "CC",
-    key.usr: "s:C8__main__2CC",
+    key.usr: "s:8__main__2CCC",
     key.offset: 47,
     key.length: 238,
     key.fully_annotated_decl: "<decl.class><syntaxtype.keyword>class</syntaxtype.keyword> <decl.name>CC</decl.name></decl.class>",
@@ -1894,13 +1894,13 @@
       {
         key.kind: source.lang.swift.decl.var.instance,
         key.name: "instV",
-        key.usr: "s:vC8__main__2CC5instVCS_3CC0",
-        key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>instV</decl.name>: <decl.var.type><ref.class usr=\"s:C8__main__3CC0\">CC0</ref.class></decl.var.type></decl.var.instance>"
+        key.usr: "s:8__main__2CCC5instVAA3CC0Cv",
+        key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>instV</decl.name>: <decl.var.type><ref.class usr=\"s:8__main__3CC0C\">CC0</ref.class></decl.var.type></decl.var.instance>"
       },
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "meth()",
-        key.usr: "s:FC8__main__2CC4methFT_T_",
+        key.usr: "s:8__main__2CCC4methyyF",
         key.offset: 77,
         key.length: 13,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>meth</decl.name>()</decl.function.method.instance>"
@@ -1908,7 +1908,7 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "instanceFunc0(_:b:)",
-        key.usr: "s:FC8__main__2CC13instanceFunc0FTSi1bSf_Si",
+        key.usr: "s:8__main__2CCC13instanceFunc0SiSi_Sf1btF",
         key.offset: 94,
         key.length: 63,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>instanceFunc0</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>a</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:Si\">Int</ref.struct></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>b</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr=\"s:Sf\">Float</ref.struct></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr=\"s:Si\">Int</ref.struct></decl.function.returntype></decl.function.method.instance>",
@@ -1932,7 +1932,7 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "instanceFunc1(a:b:)",
-        key.usr: "s:FC8__main__2CC13instanceFunc1FT1aSi1bSf_Si",
+        key.usr: "s:8__main__2CCC13instanceFunc1SiSi1a_Sf1btF",
         key.offset: 161,
         key.length: 65,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>instanceFunc1</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>a</decl.var.parameter.argument_label> <decl.var.parameter.name>x</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:Si\">Int</ref.struct></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>b</decl.var.parameter.argument_label> <decl.var.parameter.name>y</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:Sf\">Float</ref.struct></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr=\"s:Si\">Int</ref.struct></decl.function.returntype></decl.function.method.instance>",
@@ -1956,7 +1956,7 @@
       {
         key.kind: source.lang.swift.decl.function.method.class,
         key.name: "smeth()",
-        key.usr: "s:ZFC8__main__2CC5smethFT_T_",
+        key.usr: "s:8__main__2CCC5smethyyFZ",
         key.offset: 230,
         key.length: 20,
         key.fully_annotated_decl: "<decl.function.method.class><syntaxtype.keyword>class</syntaxtype.keyword> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>smeth</decl.name>()</decl.function.method.class>"
@@ -1964,7 +1964,7 @@
       {
         key.kind: source.lang.swift.decl.function.constructor,
         key.name: "init()",
-        key.usr: "s:FC8__main__2CCcFT_S0_",
+        key.usr: "s:8__main__2CCCACycfc",
         key.offset: 254,
         key.length: 29,
         key.fully_annotated_decl: "<decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>()</decl.function.constructor>"
@@ -1974,10 +1974,10 @@
   {
     key.kind: source.lang.swift.decl.function.operator.infix,
     key.name: "+(_:_:)",
-    key.usr: "s:F8__main__oi1pFTCS_2CCCS_3CC0_S0_",
+    key.usr: "s:8__main__1poiAA2CCCAD_AA3CC0CtF",
     key.offset: 288,
     key.length: 42,
-    key.fully_annotated_decl: "<decl.function.operator.infix><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>+</decl.name>(<decl.var.parameter><decl.var.parameter.name>a</decl.var.parameter.name>: <decl.var.parameter.type><ref.class usr=\"s:C8__main__2CC\">CC</ref.class></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.name>b</decl.var.parameter.name>: <decl.var.parameter.type><ref.class usr=\"s:C8__main__3CC0\">CC0</ref.class></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.class usr=\"s:C8__main__2CC\">CC</ref.class></decl.function.returntype></decl.function.operator.infix>",
+    key.fully_annotated_decl: "<decl.function.operator.infix><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>+</decl.name>(<decl.var.parameter><decl.var.parameter.name>a</decl.var.parameter.name>: <decl.var.parameter.type><ref.class usr=\"s:8__main__2CCC\">CC</ref.class></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.name>b</decl.var.parameter.name>: <decl.var.parameter.type><ref.class usr=\"s:8__main__3CC0C\">CC0</ref.class></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.class usr=\"s:8__main__2CCC\">CC</ref.class></decl.function.returntype></decl.function.operator.infix>",
     key.entities: [
       {
         key.kind: source.lang.swift.decl.var.local,
@@ -1998,7 +1998,7 @@
   {
     key.kind: source.lang.swift.decl.struct,
     key.name: "S",
-    key.usr: "s:V8__main__1S",
+    key.usr: "s:8__main__1SV",
     key.offset: 333,
     key.length: 53,
     key.fully_annotated_decl: "<decl.struct><syntaxtype.keyword>struct</syntaxtype.keyword> <decl.name>S</decl.name></decl.struct>",
@@ -2006,7 +2006,7 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "meth()",
-        key.usr: "s:FV8__main__1S4methFT_T_",
+        key.usr: "s:8__main__1SV4methyyF",
         key.offset: 346,
         key.length: 13,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>meth</decl.name>()</decl.function.method.instance>"
@@ -2014,7 +2014,7 @@
       {
         key.kind: source.lang.swift.decl.function.method.static,
         key.name: "smeth()",
-        key.usr: "s:ZFV8__main__1S5smethFT_T_",
+        key.usr: "s:8__main__1SV5smethyyFZ",
         key.offset: 363,
         key.length: 21,
         key.fully_annotated_decl: "<decl.function.method.static><syntaxtype.keyword>static</syntaxtype.keyword> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>smeth</decl.name>()</decl.function.method.static>"
@@ -2024,7 +2024,7 @@
   {
     key.kind: source.lang.swift.decl.enum,
     key.name: "E",
-    key.usr: "s:O8__main__1E",
+    key.usr: "s:8__main__1EO",
     key.offset: 389,
     key.length: 22,
     key.fully_annotated_decl: "<decl.enum><syntaxtype.keyword>enum</syntaxtype.keyword> <decl.name>E</decl.name></decl.enum>",
@@ -2032,7 +2032,7 @@
       {
         key.kind: source.lang.swift.decl.enumelement,
         key.name: "EElem",
-        key.usr: "s:FO8__main__1E5EElemFMS0_S0_",
+        key.usr: "s:8__main__1EO5EElemAcCmF",
         key.fully_annotated_decl: "<decl.enumelement><syntaxtype.keyword>case</syntaxtype.keyword> <decl.name>EElem</decl.name></decl.enumelement>"
       }
     ]
@@ -2040,7 +2040,7 @@
   {
     key.kind: source.lang.swift.decl.protocol,
     key.name: "Prot",
-    key.usr: "s:P8__main__4Prot",
+    key.usr: "s:8__main__4ProtP",
     key.offset: 414,
     key.length: 43,
     key.fully_annotated_decl: "<decl.protocol><syntaxtype.keyword>protocol</syntaxtype.keyword> <decl.name>Prot</decl.name></decl.protocol>",
@@ -2048,10 +2048,10 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "protMeth(_:)",
-        key.usr: "s:FP8__main__4Prot8protMethFPS0__T_",
+        key.usr: "s:8__main__4ProtP8protMethyAaB_pF",
         key.offset: 432,
         key.length: 23,
-        key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>protMeth</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>a</decl.var.parameter.name>: <decl.var.parameter.type><ref.protocol usr=\"s:P8__main__4Prot\">Prot</ref.protocol></decl.var.parameter.type></decl.var.parameter>)</decl.function.method.instance>",
+        key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>protMeth</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>a</decl.var.parameter.name>: <decl.var.parameter.type><ref.protocol usr=\"s:8__main__4ProtP\">Prot</ref.protocol></decl.var.parameter.type></decl.var.parameter>)</decl.function.method.instance>",
         key.entities: [
           {
             key.kind: source.lang.swift.decl.var.local,
@@ -2067,10 +2067,10 @@
   {
     key.kind: source.lang.swift.decl.function.free,
     key.name: "foo(_:b:)",
-    key.usr: "s:F8__main__3fooFTCS_2CC1bOS_1E_T_",
+    key.usr: "s:8__main__3fooyAA2CCC_AA1EO1btF",
     key.offset: 460,
     key.length: 162,
-    key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>foo</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>a</decl.var.parameter.name>: <decl.var.parameter.type><ref.class usr=\"s:C8__main__2CC\">CC</ref.class></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>b</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.enum usr=\"s:O8__main__1E\">E</ref.enum></decl.var.parameter.type></decl.var.parameter>)</decl.function.free>",
+    key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>foo</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>a</decl.var.parameter.name>: <decl.var.parameter.type><ref.class usr=\"s:8__main__2CCC\">CC</ref.class></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>b</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.enum usr=\"s:8__main__1EO\">E</ref.enum></decl.var.parameter.type></decl.var.parameter>)</decl.function.free>",
     key.entities: [
       {
         key.kind: source.lang.swift.decl.var.local,
@@ -2094,7 +2094,7 @@
     key.usr: "s:8__main__7CCAlias",
     key.offset: 625,
     key.length: 20,
-    key.fully_annotated_decl: "<decl.typealias><syntaxtype.keyword>typealias</syntaxtype.keyword> <decl.name>CCAlias</decl.name> = <ref.class usr=\"s:C8__main__2CC\">CC</ref.class></decl.typealias>"
+    key.fully_annotated_decl: "<decl.typealias><syntaxtype.keyword>typealias</syntaxtype.keyword> <decl.name>CCAlias</decl.name> = <ref.class usr=\"s:8__main__2CCC\">CC</ref.class></decl.typealias>"
   },
   {
     key.kind: source.lang.swift.decl.extension.class,
@@ -2104,19 +2104,19 @@
       {
         key.kind: source.lang.swift.ref.protocol,
         key.name: "Prot",
-        key.usr: "s:P8__main__4Prot"
+        key.usr: "s:8__main__4ProtP"
       }
     ],
     key.extends: {
       key.kind: source.lang.swift.ref.class,
       key.name: "CC",
-      key.usr: "s:C8__main__2CC"
+      key.usr: "s:8__main__2CCC"
     },
     key.entities: [
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "meth2(_:)",
-        key.usr: "s:FC8__main__2CC5meth2FS0_T_",
+        key.usr: "s:8__main__2CCC5meth2yACF",
         key.offset: 673,
         key.length: 26,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>meth2</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>x</decl.var.parameter.name>: <decl.var.parameter.type><ref.typealias usr=\"s:8__main__7CCAlias\">CCAlias</ref.typealias></decl.var.parameter.type></decl.var.parameter>)</decl.function.method.instance>",
@@ -2133,15 +2133,15 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "protMeth(_:)",
-        key.usr: "s:FC8__main__2CC8protMethFPS_4Prot_T_",
+        key.usr: "s:8__main__2CCC8protMethyAA4Prot_pF",
         key.offset: 703,
         key.length: 26,
-        key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>protMeth</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>a</decl.var.parameter.name>: <decl.var.parameter.type><ref.protocol usr=\"s:P8__main__4Prot\">Prot</ref.protocol></decl.var.parameter.type></decl.var.parameter>)</decl.function.method.instance>",
+        key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>protMeth</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>a</decl.var.parameter.name>: <decl.var.parameter.type><ref.protocol usr=\"s:8__main__4ProtP\">Prot</ref.protocol></decl.var.parameter.type></decl.var.parameter>)</decl.function.method.instance>",
         key.conforms: [
           {
             key.kind: source.lang.swift.ref.function.method.instance,
             key.name: "protMeth(_:)",
-            key.usr: "s:FP8__main__4Prot8protMethFPS0__T_"
+            key.usr: "s:8__main__4ProtP8protMethyAaB_pF"
           }
         ],
         key.entities: [
@@ -2157,12 +2157,12 @@
       {
         key.kind: source.lang.swift.decl.var.instance,
         key.name: "extV",
-        key.usr: "s:vC8__main__2CC4extVSi",
+        key.usr: "s:8__main__2CCC4extVSiv",
         key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>extV</decl.name>: <decl.var.type><ref.struct usr=\"s:Si\">Int</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.instance>"
       },
       {
         key.kind: source.lang.swift.decl.function.accessor.getter,
-        key.usr: "s:FC8__main__2CCg4extVSi",
+        key.usr: "s:8__main__2CCC4extVSifg",
         key.offset: 748,
         key.length: 11,
         key.fully_annotated_decl: "<decl.function.accessor.getter><decl.name>get</decl.name> {}</decl.function.accessor.getter>"
@@ -2172,28 +2172,28 @@
   {
     key.kind: source.lang.swift.decl.class,
     key.name: "SubCC",
-    key.usr: "s:C8__main__5SubCC",
+    key.usr: "s:8__main__5SubCCC",
     key.offset: 764,
     key.length: 18,
-    key.fully_annotated_decl: "<decl.class><syntaxtype.keyword>class</syntaxtype.keyword> <decl.name>SubCC</decl.name> : <ref.class usr=\"s:C8__main__2CC\">CC</ref.class></decl.class>",
+    key.fully_annotated_decl: "<decl.class><syntaxtype.keyword>class</syntaxtype.keyword> <decl.name>SubCC</decl.name> : <ref.class usr=\"s:8__main__2CCC\">CC</ref.class></decl.class>",
     key.inherits: [
       {
         key.kind: source.lang.swift.ref.class,
         key.name: "CC",
-        key.usr: "s:C8__main__2CC"
+        key.usr: "s:8__main__2CCC"
       }
     ]
   },
   {
     key.kind: source.lang.swift.decl.var.global,
     key.name: "globV2",
-    key.usr: "s:v8__main__6globV2CS_5SubCC",
-    key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>globV2</decl.name>: <decl.var.type><ref.class usr=\"s:C8__main__5SubCC\">SubCC</ref.class></decl.var.type></decl.var.global>"
+    key.usr: "s:8__main__6globV2AA5SubCCCv",
+    key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>globV2</decl.name>: <decl.var.type><ref.class usr=\"s:8__main__5SubCCC\">SubCC</ref.class></decl.var.type></decl.var.global>"
   },
   {
     key.kind: source.lang.swift.decl.class,
     key.name: "ComputedProperty",
-    key.usr: "s:C8__main__16ComputedProperty",
+    key.usr: "s:8__main__16ComputedPropertyC",
     key.offset: 804,
     key.length: 196,
     key.fully_annotated_decl: "<decl.class><syntaxtype.keyword>class</syntaxtype.keyword> <decl.name>ComputedProperty</decl.name></decl.class>",
@@ -2201,19 +2201,19 @@
       {
         key.kind: source.lang.swift.decl.var.instance,
         key.name: "value",
-        key.usr: "s:vC8__main__16ComputedProperty5valueSi",
+        key.usr: "s:8__main__16ComputedPropertyC5valueSiv",
         key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>value</decl.name>: <decl.var.type><ref.struct usr=\"s:Si\">Int</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> <syntaxtype.keyword>set</syntaxtype.keyword> }</decl.var.instance>"
       },
       {
         key.kind: source.lang.swift.decl.function.accessor.getter,
-        key.usr: "s:FC8__main__16ComputedPropertyg5valueSi",
+        key.usr: "s:8__main__16ComputedPropertyC5valueSifg",
         key.offset: 853,
         key.length: 51,
         key.fully_annotated_decl: "<decl.function.accessor.getter><decl.name>get</decl.name> {}</decl.function.accessor.getter>"
       },
       {
         key.kind: source.lang.swift.decl.function.accessor.setter,
-        key.usr: "s:FC8__main__16ComputedPropertys5valueSi",
+        key.usr: "s:8__main__16ComputedPropertyC5valueSifs",
         key.offset: 910,
         key.length: 49,
         key.fully_annotated_decl: "<decl.function.accessor.setter><decl.name>set(newVal)</decl.name> {}</decl.function.accessor.setter>",
@@ -2229,12 +2229,12 @@
       {
         key.kind: source.lang.swift.decl.var.instance,
         key.name: "readOnly",
-        key.usr: "s:vC8__main__16ComputedProperty8readOnlySi",
+        key.usr: "s:8__main__16ComputedPropertyC8readOnlySiv",
         key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>readOnly</decl.name>: <decl.var.type><ref.struct usr=\"s:Si\">Int</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.instance>"
       },
       {
         key.kind: source.lang.swift.decl.function.accessor.getter,
-        key.usr: "s:FC8__main__16ComputedPropertyg8readOnlySi",
+        key.usr: "s:8__main__16ComputedPropertyC8readOnlySifg",
         key.offset: 987,
         key.length: 11,
         key.fully_annotated_decl: "<decl.function.accessor.getter><decl.name>get</decl.name> {}</decl.function.accessor.getter>"
@@ -2244,7 +2244,7 @@
   {
     key.kind: source.lang.swift.decl.class,
     key.name: "BC2",
-    key.usr: "s:C8__main__3BC2",
+    key.usr: "s:8__main__3BC2C",
     key.offset: 1003,
     key.length: 42,
     key.fully_annotated_decl: "<decl.class><syntaxtype.keyword>class</syntaxtype.keyword> <decl.name>BC2</decl.name></decl.class>",
@@ -2252,10 +2252,10 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "protMeth(_:)",
-        key.usr: "s:FC8__main__3BC28protMethFPS_4Prot_T_",
+        key.usr: "s:8__main__3BC2C8protMethyAA4Prot_pF",
         key.offset: 1017,
         key.length: 26,
-        key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>protMeth</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>a</decl.var.parameter.name>: <decl.var.parameter.type><ref.protocol usr=\"s:P8__main__4Prot\">Prot</ref.protocol></decl.var.parameter.type></decl.var.parameter>)</decl.function.method.instance>",
+        key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>protMeth</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>a</decl.var.parameter.name>: <decl.var.parameter.type><ref.protocol usr=\"s:8__main__4ProtP\">Prot</ref.protocol></decl.var.parameter.type></decl.var.parameter>)</decl.function.method.instance>",
         key.entities: [
           {
             key.kind: source.lang.swift.decl.var.local,
@@ -2271,44 +2271,44 @@
   {
     key.kind: source.lang.swift.decl.class,
     key.name: "SubC2",
-    key.usr: "s:C8__main__5SubC2",
+    key.usr: "s:8__main__5SubC2C",
     key.offset: 1047,
     key.length: 65,
-    key.fully_annotated_decl: "<decl.class><syntaxtype.keyword>class</syntaxtype.keyword> <decl.name>SubC2</decl.name> : <ref.class usr=\"s:C8__main__3BC2\">BC2</ref.class>, <ref.protocol usr=\"s:P8__main__4Prot\">Prot</ref.protocol></decl.class>",
+    key.fully_annotated_decl: "<decl.class><syntaxtype.keyword>class</syntaxtype.keyword> <decl.name>SubC2</decl.name> : <ref.class usr=\"s:8__main__3BC2C\">BC2</ref.class>, <ref.protocol usr=\"s:8__main__4ProtP\">Prot</ref.protocol></decl.class>",
     key.inherits: [
       {
         key.kind: source.lang.swift.ref.class,
         key.name: "BC2",
-        key.usr: "s:C8__main__3BC2"
+        key.usr: "s:8__main__3BC2C"
       }
     ],
     key.conforms: [
       {
         key.kind: source.lang.swift.ref.protocol,
         key.name: "Prot",
-        key.usr: "s:P8__main__4Prot"
+        key.usr: "s:8__main__4ProtP"
       }
     ],
     key.entities: [
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "protMeth(_:)",
-        key.usr: "s:FC8__main__5SubC28protMethFPS_4Prot_T_",
+        key.usr: "s:8__main__5SubC2C8protMethyAA4Prot_pF",
         key.offset: 1084,
         key.length: 26,
-        key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>override</syntaxtype.keyword> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>protMeth</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>a</decl.var.parameter.name>: <decl.var.parameter.type><ref.protocol usr=\"s:P8__main__4Prot\">Prot</ref.protocol></decl.var.parameter.type></decl.var.parameter>)</decl.function.method.instance>",
+        key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>override</syntaxtype.keyword> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>protMeth</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>a</decl.var.parameter.name>: <decl.var.parameter.type><ref.protocol usr=\"s:8__main__4ProtP\">Prot</ref.protocol></decl.var.parameter.type></decl.var.parameter>)</decl.function.method.instance>",
         key.inherits: [
           {
             key.kind: source.lang.swift.ref.function.method.instance,
             key.name: "protMeth(_:)",
-            key.usr: "s:FC8__main__3BC28protMethFPS_4Prot_T_"
+            key.usr: "s:8__main__3BC2C8protMethyAA4Prot_pF"
           }
         ],
         key.conforms: [
           {
             key.kind: source.lang.swift.ref.function.method.instance,
             key.name: "protMeth(_:)",
-            key.usr: "s:FP8__main__4Prot8protMethFPS0__T_"
+            key.usr: "s:8__main__4ProtP8protMethyAaB_pF"
           }
         ],
         key.entities: [
@@ -2326,7 +2326,7 @@
   {
     key.kind: source.lang.swift.decl.class,
     key.name: "CC2",
-    key.usr: "s:C8__main__3CC2",
+    key.usr: "s:8__main__3CC2C",
     key.offset: 1115,
     key.length: 115,
     key.fully_annotated_decl: "<decl.class><syntaxtype.keyword>class</syntaxtype.keyword> <decl.name>CC2</decl.name></decl.class>",
@@ -2334,7 +2334,7 @@
       {
         key.kind: source.lang.swift.decl.function.subscript,
         key.name: "subscript(_:)",
-        key.usr: "s:iC8__main__3CC29subscriptFSiSi",
+        key.usr: "s:8__main__3CC2C9subscriptSiSici",
         key.offset: 1129,
         key.length: 99,
         key.fully_annotated_decl: "<decl.function.subscript><syntaxtype.keyword>subscript</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.name>i</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:Si\">Int</ref.struct></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr=\"s:Si\">Int</ref.struct></decl.function.returntype> { <syntaxtype.keyword>get</syntaxtype.keyword> <syntaxtype.keyword>set</syntaxtype.keyword> }</decl.function.subscript>",
@@ -2350,7 +2350,7 @@
       },
       {
         key.kind: source.lang.swift.decl.function.accessor.getter,
-        key.usr: "s:FC8__main__3CC2g9subscriptFSiSi",
+        key.usr: "s:8__main__3CC2C9subscriptSiSicfg",
         key.offset: 1162,
         key.length: 25,
         key.fully_annotated_decl: "<decl.function.accessor.getter><decl.name>get</decl.name> {}</decl.function.accessor.getter>",
@@ -2365,7 +2365,7 @@
       },
       {
         key.kind: source.lang.swift.decl.function.accessor.setter,
-        key.usr: "s:FC8__main__3CC2s9subscriptFSiSi",
+        key.usr: "s:8__main__3CC2C9subscriptSiSicfs",
         key.offset: 1193,
         key.length: 31,
         key.fully_annotated_decl: "<decl.function.accessor.setter><decl.name>set(vvv)</decl.name> {}</decl.function.accessor.setter>",
@@ -2389,10 +2389,10 @@
   {
     key.kind: source.lang.swift.decl.function.free,
     key.name: "test1(_:sub:)",
-    key.usr: "s:F8__main__5test1FTCS_16ComputedProperty3subCS_3CC2_T_",
+    key.usr: "s:8__main__5test1yAA16ComputedPropertyC_AA3CC2C3subtF",
     key.offset: 1233,
     key.length: 155,
-    key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>test1</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>cp</decl.var.parameter.name>: <decl.var.parameter.type><ref.class usr=\"s:C8__main__16ComputedProperty\">ComputedProperty</ref.class></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>sub</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.class usr=\"s:C8__main__3CC2\">CC2</ref.class></decl.var.parameter.type></decl.var.parameter>)</decl.function.free>",
+    key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>test1</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>cp</decl.var.parameter.name>: <decl.var.parameter.type><ref.class usr=\"s:8__main__16ComputedPropertyC\">ComputedProperty</ref.class></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>sub</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.class usr=\"s:8__main__3CC2C\">CC2</ref.class></decl.var.parameter.type></decl.var.parameter>)</decl.function.free>",
     key.entities: [
       {
         key.kind: source.lang.swift.decl.var.local,
@@ -2413,7 +2413,7 @@
   {
     key.kind: source.lang.swift.decl.struct,
     key.name: "S2",
-    key.usr: "s:V8__main__2S2",
+    key.usr: "s:8__main__2S2V",
     key.offset: 1391,
     key.length: 29,
     key.fully_annotated_decl: "<decl.struct><syntaxtype.keyword>struct</syntaxtype.keyword> <decl.name>S2</decl.name></decl.struct>",
@@ -2421,7 +2421,7 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "sfoo()",
-        key.usr: "s:FV8__main__2S24sfooFT_T_",
+        key.usr: "s:8__main__2S2V4sfooyyF",
         key.offset: 1405,
         key.length: 13,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>sfoo</decl.name>()</decl.function.method.instance>"
@@ -2431,12 +2431,12 @@
   {
     key.kind: source.lang.swift.decl.var.global,
     key.name: "globReadOnly",
-    key.usr: "s:v8__main__12globReadOnlyVS_2S2",
-    key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>globReadOnly</decl.name>: <decl.var.type><ref.struct usr=\"s:V8__main__2S2\">S2</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
+    key.usr: "s:8__main__12globReadOnlyAA2S2Vv",
+    key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>globReadOnly</decl.name>: <decl.var.type><ref.struct usr=\"s:8__main__2S2V\">S2</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
   },
   {
     key.kind: source.lang.swift.decl.function.accessor.getter,
-    key.usr: "s:F8__main__g12globReadOnlyVS_2S2",
+    key.usr: "s:8__main__12globReadOnlyAA2S2Vfg",
     key.offset: 1449,
     key.length: 25,
     key.fully_annotated_decl: "<decl.function.accessor.getter><decl.name>get</decl.name> {}</decl.function.accessor.getter>"
@@ -2444,7 +2444,7 @@
   {
     key.kind: source.lang.swift.decl.function.free,
     key.name: "test2()",
-    key.usr: "s:F8__main__5test2FT_T_",
+    key.usr: "s:8__main__5test2yyF",
     key.offset: 1479,
     key.length: 37,
     key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>test2</decl.name>()</decl.function.free>"
@@ -2452,7 +2452,7 @@
   {
     key.kind: source.lang.swift.decl.class,
     key.name: "B1",
-    key.usr: "s:C8__main__2B1",
+    key.usr: "s:8__main__2B1C",
     key.offset: 1519,
     key.length: 27,
     key.fully_annotated_decl: "<decl.class><syntaxtype.keyword>class</syntaxtype.keyword> <decl.name>B1</decl.name></decl.class>",
@@ -2460,7 +2460,7 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "foo()",
-        key.usr: "s:FC8__main__2B13fooFT_T_",
+        key.usr: "s:8__main__2B1C3fooyyF",
         key.offset: 1532,
         key.length: 12,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>foo</decl.name>()</decl.function.method.instance>"
@@ -2470,22 +2470,22 @@
   {
     key.kind: source.lang.swift.decl.class,
     key.name: "SB1",
-    key.usr: "s:C8__main__3SB1",
+    key.usr: "s:8__main__3SB1C",
     key.offset: 1549,
     key.length: 86,
-    key.fully_annotated_decl: "<decl.class><syntaxtype.keyword>class</syntaxtype.keyword> <decl.name>SB1</decl.name> : <ref.class usr=\"s:C8__main__2B1\">B1</ref.class></decl.class>",
+    key.fully_annotated_decl: "<decl.class><syntaxtype.keyword>class</syntaxtype.keyword> <decl.name>SB1</decl.name> : <ref.class usr=\"s:8__main__2B1C\">B1</ref.class></decl.class>",
     key.inherits: [
       {
         key.kind: source.lang.swift.ref.class,
         key.name: "B1",
-        key.usr: "s:C8__main__2B1"
+        key.usr: "s:8__main__2B1C"
       }
     ],
     key.entities: [
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "foo()",
-        key.usr: "s:FC8__main__3SB13fooFT_T_",
+        key.usr: "s:8__main__3SB1C3fooyyF",
         key.offset: 1577,
         key.length: 56,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>override</syntaxtype.keyword> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>foo</decl.name>()</decl.function.method.instance>",
@@ -2493,7 +2493,7 @@
           {
             key.kind: source.lang.swift.ref.function.method.instance,
             key.name: "foo()",
-            key.usr: "s:FC8__main__2B13fooFT_T_"
+            key.usr: "s:8__main__2B1C3fooyyF"
           }
         ]
       }
@@ -2502,10 +2502,10 @@
   {
     key.kind: source.lang.swift.decl.function.free,
     key.name: "test3(_:s:)",
-    key.usr: "s:F8__main__5test3FTCS_3SB11sVS_2S2_T_",
+    key.usr: "s:8__main__5test3yAA3SB1C_AA2S2V1stF",
     key.offset: 1638,
     key.length: 61,
-    key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>test3</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>c</decl.var.parameter.name>: <decl.var.parameter.type><ref.class usr=\"s:C8__main__3SB1\">SB1</ref.class></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>s</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr=\"s:V8__main__2S2\">S2</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.free>",
+    key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>test3</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>c</decl.var.parameter.name>: <decl.var.parameter.type><ref.class usr=\"s:8__main__3SB1C\">SB1</ref.class></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>s</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr=\"s:8__main__2S2V\">S2</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.free>",
     key.entities: [
       {
         key.kind: source.lang.swift.decl.var.local,
@@ -2526,7 +2526,7 @@
   {
     key.kind: source.lang.swift.decl.function.free,
     key.name: "test4(_:)",
-    key.usr: "s:F8__main__5test4FRSiT_",
+    key.usr: "s:8__main__5test4ySizF",
     key.offset: 1702,
     key.length: 28,
     key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>test4</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>a</decl.var.parameter.name>: <decl.var.parameter.type><syntaxtype.keyword>inout</syntaxtype.keyword> <ref.struct usr=\"s:Si\">Int</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.free>",
@@ -2543,7 +2543,7 @@
   {
     key.kind: source.lang.swift.decl.protocol,
     key.name: "Prot2",
-    key.usr: "s:P8__main__5Prot2",
+    key.usr: "s:8__main__5Prot2P",
     key.offset: 1733,
     key.length: 77,
     key.fully_annotated_decl: "<decl.protocol><syntaxtype.keyword>protocol</syntaxtype.keyword> <decl.name>Prot2</decl.name></decl.protocol>",
@@ -2551,7 +2551,7 @@
       {
         key.kind: source.lang.swift.decl.associatedtype,
         key.name: "Element",
-        key.usr: "s:P8__main__5Prot27Element",
+        key.usr: "s:8__main__5Prot2P7Element",
         key.offset: 1752,
         key.length: 15,
         key.fully_annotated_decl: "<decl.associatedtype><syntaxtype.keyword>associatedtype</syntaxtype.keyword> <decl.name>Element</decl.name></decl.associatedtype>"
@@ -2559,18 +2559,18 @@
       {
         key.kind: source.lang.swift.decl.var.instance,
         key.name: "p",
-        key.usr: "s:vP8__main__5Prot21pSi",
+        key.usr: "s:8__main__5Prot2P1pSiv",
         key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>p</decl.name>: <decl.var.type><ref.struct usr=\"s:Si\">Int</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.instance>"
       },
       {
         key.kind: source.lang.swift.decl.function.accessor.getter,
-        key.usr: "s:FP8__main__5Prot2g1pSi",
+        key.usr: "s:8__main__5Prot2P1pSifg",
         key.fully_annotated_decl: "<decl.function.accessor.getter><decl.name>get</decl.name> {}</decl.function.accessor.getter>"
       },
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "foo()",
-        key.usr: "s:FP8__main__5Prot23fooFT_T_",
+        key.usr: "s:8__main__5Prot2P3fooyyF",
         key.offset: 1799,
         key.length: 9,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>foo</decl.name>()</decl.function.method.instance>"
@@ -2580,22 +2580,22 @@
   {
     key.kind: source.lang.swift.decl.struct,
     key.name: "S1",
-    key.usr: "s:V8__main__2S1",
+    key.usr: "s:8__main__2S1V",
     key.offset: 1813,
     key.length: 80,
-    key.fully_annotated_decl: "<decl.struct><syntaxtype.keyword>struct</syntaxtype.keyword> <decl.name>S1</decl.name> : <ref.protocol usr=\"s:P8__main__5Prot2\">Prot2</ref.protocol></decl.struct>",
+    key.fully_annotated_decl: "<decl.struct><syntaxtype.keyword>struct</syntaxtype.keyword> <decl.name>S1</decl.name> : <ref.protocol usr=\"s:8__main__5Prot2P\">Prot2</ref.protocol></decl.struct>",
     key.conforms: [
       {
         key.kind: source.lang.swift.ref.protocol,
         key.name: "Prot2",
-        key.usr: "s:P8__main__5Prot2"
+        key.usr: "s:8__main__5Prot2P"
       }
     ],
     key.entities: [
       {
         key.kind: source.lang.swift.decl.typealias,
         key.name: "Element",
-        key.usr: "s:V8__main__2S17Element",
+        key.usr: "s:8__main__2S1V7Element",
         key.offset: 1835,
         key.length: 20,
         key.fully_annotated_decl: "<decl.typealias><syntaxtype.keyword>typealias</syntaxtype.keyword> <decl.name>Element</decl.name> = <ref.struct usr=\"s:Si\">Int</ref.struct></decl.typealias>",
@@ -2603,37 +2603,37 @@
           {
             key.kind: source.lang.swift.ref.protocol,
             key.name: "SignedInteger",
-            key.usr: "s:Ps13SignedInteger"
+            key.usr: "s:s13SignedIntegerP"
           },
           {
             key.kind: source.lang.swift.ref.protocol,
             key.name: "Comparable",
-            key.usr: "s:Ps10Comparable"
+            key.usr: "s:s10ComparableP"
           },
           {
             key.kind: source.lang.swift.ref.protocol,
             key.name: "Equatable",
-            key.usr: "s:Ps9Equatable"
+            key.usr: "s:s9EquatableP"
           }
         ]
       },
       {
         key.kind: source.lang.swift.decl.var.instance,
         key.name: "p",
-        key.usr: "s:vV8__main__2S11pSi",
+        key.usr: "s:8__main__2S1V1pSiv",
         key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>p</decl.name>: <decl.var.type><ref.struct usr=\"s:Si\">Int</ref.struct></decl.var.type></decl.var.instance>",
         key.conforms: [
           {
             key.kind: source.lang.swift.ref.var.instance,
             key.name: "p",
-            key.usr: "s:vP8__main__5Prot21pSi"
+            key.usr: "s:8__main__5Prot2P1pSiv"
           }
         ]
       },
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "foo()",
-        key.usr: "s:FV8__main__2S13fooFT_T_",
+        key.usr: "s:8__main__2S1V3fooyyF",
         key.offset: 1879,
         key.length: 12,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>foo</decl.name>()</decl.function.method.instance>",
@@ -2641,7 +2641,7 @@
           {
             key.kind: source.lang.swift.ref.function.method.instance,
             key.name: "foo()",
-            key.usr: "s:FP8__main__5Prot23fooFT_T_"
+            key.usr: "s:8__main__5Prot2P3fooyyF"
           }
         ]
       }
@@ -2650,7 +2650,7 @@
   {
     key.kind: source.lang.swift.decl.function.free,
     key.name: "genfoo(_:)",
-    key.usr: "s:F8__main__6genfoouRxS_5Prot2wx7ElementzSirFxT_",
+    key.usr: "s:8__main__6genfooyxAA5Prot2RzSi7ElementRtzlF",
     key.generic_params: [
       {
         key.name: "T"
@@ -2666,7 +2666,7 @@
     ],
     key.offset: 1896,
     key.length: 55,
-    key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>genfoo</decl.name>&lt;<decl.generic_type_param usr=\"s:tF8__main__6genfoouRxS_5Prot2wx7ElementzSirFxT_L_1TMx\"><decl.generic_type_param.name>T</decl.generic_type_param.name></decl.generic_type_param>&gt;(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>x</decl.var.parameter.name>: <decl.var.parameter.type><ref.generic_type_param usr=\"s:tF8__main__6genfoouRxS_5Prot2wx7ElementzSirFxT_L_1TMx\">T</ref.generic_type_param></decl.var.parameter.type></decl.var.parameter>) <syntaxtype.keyword>where</syntaxtype.keyword> <decl.generic_type_requirement>T : <ref.protocol usr=\"s:P8__main__5Prot2\">Prot2</ref.protocol></decl.generic_type_requirement>, <decl.generic_type_requirement>T.Element == <ref.struct usr=\"s:Si\">Int</ref.struct></decl.generic_type_requirement></decl.function.free>",
+    key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>genfoo</decl.name>&lt;<decl.generic_type_param usr=\"s:8__main__6genfooyxAA5Prot2RzSi7ElementRtzlF1TL_xmfp\"><decl.generic_type_param.name>T</decl.generic_type_param.name></decl.generic_type_param>&gt;(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>x</decl.var.parameter.name>: <decl.var.parameter.type><ref.generic_type_param usr=\"s:8__main__6genfooyxAA5Prot2RzSi7ElementRtzlF1TL_xmfp\">T</ref.generic_type_param></decl.var.parameter.type></decl.var.parameter>) <syntaxtype.keyword>where</syntaxtype.keyword> <decl.generic_type_requirement>T : <ref.protocol usr=\"s:8__main__5Prot2P\">Prot2</ref.protocol></decl.generic_type_requirement>, <decl.generic_type_requirement>T.Element == <ref.struct usr=\"s:Si\">Int</ref.struct></decl.generic_type_requirement></decl.function.free>",
     key.entities: [
       {
         key.kind: source.lang.swift.decl.var.local,
@@ -2680,7 +2680,7 @@
   {
     key.kind: source.lang.swift.decl.protocol,
     key.name: "Prot3",
-    key.usr: "s:P8__main__5Prot3",
+    key.usr: "s:8__main__5Prot3P",
     key.offset: 1954,
     key.length: 51,
     key.fully_annotated_decl: "<decl.protocol><syntaxtype.keyword>protocol</syntaxtype.keyword> <decl.name>Prot3</decl.name></decl.protocol>",
@@ -2688,10 +2688,10 @@
       {
         key.kind: source.lang.swift.decl.function.operator.infix,
         key.name: "+(_:_:)",
-        key.usr: "s:ZFP8__main__5Prot3oi1pFTxx_T_",
+        key.usr: "s:8__main__5Prot3P1poiyx_xtFZ",
         key.offset: 1973,
         key.length: 30,
-        key.fully_annotated_decl: "<decl.function.operator.infix><syntaxtype.keyword>static</syntaxtype.keyword> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>+</decl.name>(<decl.var.parameter><decl.var.parameter.name>x</decl.var.parameter.name>: <decl.var.parameter.type><ref.generic_type_param usr=\"s:tP8__main__5Prot34SelfMx\">Self</ref.generic_type_param></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.name>y</decl.var.parameter.name>: <decl.var.parameter.type><ref.generic_type_param usr=\"s:tP8__main__5Prot34SelfMx\">Self</ref.generic_type_param></decl.var.parameter.type></decl.var.parameter>)</decl.function.operator.infix>",
+        key.fully_annotated_decl: "<decl.function.operator.infix><syntaxtype.keyword>static</syntaxtype.keyword> <syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>+</decl.name>(<decl.var.parameter><decl.var.parameter.name>x</decl.var.parameter.name>: <decl.var.parameter.type><ref.generic_type_param usr=\"s:8__main__5Prot3P4Selfxmfp\">Self</ref.generic_type_param></decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.name>y</decl.var.parameter.name>: <decl.var.parameter.type><ref.generic_type_param usr=\"s:8__main__5Prot3P4Selfxmfp\">Self</ref.generic_type_param></decl.var.parameter.type></decl.var.parameter>)</decl.function.operator.infix>",
         key.entities: [
           {
             key.kind: source.lang.swift.decl.var.local,
diff --git a/test/SourceKit/DocSupport/doc_swift_module.swift.response b/test/SourceKit/DocSupport/doc_swift_module.swift.response
index 0a2c198..8b89f3f 100644
--- a/test/SourceKit/DocSupport/doc_swift_module.swift.response
+++ b/test/SourceKit/DocSupport/doc_swift_module.swift.response
@@ -141,7 +141,7 @@
   {
     key.kind: source.lang.swift.ref.protocol,
     key.name: "Prot",
-    key.usr: "s:P4cake4Prot",
+    key.usr: "s:4cake4ProtP",
     key.offset: 12,
     key.length: 4
   },
@@ -366,14 +366,14 @@
   {
     key.kind: source.lang.swift.ref.class,
     key.name: "C1",
-    key.usr: "s:C4cake2C1",
+    key.usr: "s:4cake2C1C",
     key.offset: 315,
     key.length: 2
   },
   {
     key.kind: source.lang.swift.ref.protocol,
     key.name: "P4",
-    key.usr: "s:P4cake2P4",
+    key.usr: "s:4cake2P4P",
     key.offset: 320,
     key.length: 2
   },
@@ -430,7 +430,7 @@
   {
     key.kind: source.lang.swift.ref.protocol,
     key.name: "P4",
-    key.usr: "s:P4cake2P4",
+    key.usr: "s:4cake2P4P",
     key.offset: 389,
     key.length: 2
   },
@@ -452,7 +452,7 @@
   {
     key.kind: source.lang.swift.ref.class,
     key.name: "C1",
-    key.usr: "s:C4cake2C1",
+    key.usr: "s:4cake2C1C",
     key.offset: 418,
     key.length: 2
   },
@@ -560,14 +560,14 @@
   {
     key.kind: source.lang.swift.ref.class,
     key.name: "C2",
-    key.usr: "s:C4cake2C2",
+    key.usr: "s:4cake2C2C",
     key.offset: 586,
     key.length: 2
   },
   {
     key.kind: source.lang.swift.ref.protocol,
     key.name: "P4",
-    key.usr: "s:P4cake2P4",
+    key.usr: "s:4cake2P4P",
     key.offset: 591,
     key.length: 2
   },
@@ -624,7 +624,7 @@
   {
     key.kind: source.lang.swift.ref.protocol,
     key.name: "P4",
-    key.usr: "s:P4cake2P4",
+    key.usr: "s:4cake2P4P",
     key.offset: 660,
     key.length: 2
   },
@@ -790,7 +790,7 @@
   {
     key.kind: source.lang.swift.ref.protocol,
     key.name: "Prot",
-    key.usr: "s:P4cake4Prot",
+    key.usr: "s:4cake4ProtP",
     key.offset: 936,
     key.length: 4
   },
@@ -851,7 +851,7 @@
   {
     key.kind: source.lang.swift.ref.protocol,
     key.name: "Prot",
-    key.usr: "s:P4cake4Prot",
+    key.usr: "s:4cake4ProtP",
     key.offset: 1017,
     key.length: 4
   },
@@ -863,7 +863,7 @@
   {
     key.kind: source.lang.swift.ref.generic_type_param,
     key.name: "Self",
-    key.usr: "s:te4cakeRxS_4Protwx7ElementzSirS0_4SelfMx",
+    key.usr: "s:4cake4ProtPAaaBRzSi7ElementRtzlE4Selfxmfp",
     key.offset: 1028,
     key.length: 4
   },
@@ -989,7 +989,7 @@
   {
     key.kind: source.lang.swift.ref.protocol,
     key.name: "P3",
-    key.usr: "s:P4cake2P3",
+    key.usr: "s:4cake2P3P",
     key.offset: 1228,
     key.length: 2
   },
@@ -1011,7 +1011,7 @@
   {
     key.kind: source.lang.swift.ref.struct,
     key.name: "S2",
-    key.usr: "s:V4cake2S2",
+    key.usr: "s:4cake2S2V",
     key.offset: 1257,
     key.length: 2
   },
@@ -1078,7 +1078,7 @@
   {
     key.kind: source.lang.swift.ref.protocol,
     key.name: "Prot",
-    key.usr: "s:P4cake4Prot",
+    key.usr: "s:4cake4ProtP",
     key.offset: 1314,
     key.length: 4
   },
@@ -1095,7 +1095,7 @@
   {
     key.kind: source.lang.swift.ref.class,
     key.name: "C1",
-    key.usr: "s:C4cake2C1",
+    key.usr: "s:4cake2C1C",
     key.offset: 1330,
     key.length: 2
   },
@@ -1141,22 +1141,22 @@
   {
     key.kind: source.lang.swift.decl.class,
     key.name: "C1",
-    key.usr: "s:C4cake2C1",
+    key.usr: "s:4cake2C1C",
     key.offset: 1,
     key.length: 302,
-    key.fully_annotated_decl: "<decl.class><syntaxtype.keyword>class</syntaxtype.keyword> <decl.name>C1</decl.name> : <ref.protocol usr=\"s:P4cake4Prot\">Prot</ref.protocol></decl.class>",
+    key.fully_annotated_decl: "<decl.class><syntaxtype.keyword>class</syntaxtype.keyword> <decl.name>C1</decl.name> : <ref.protocol usr=\"s:4cake4ProtP\">Prot</ref.protocol></decl.class>",
     key.conforms: [
       {
         key.kind: source.lang.swift.ref.protocol,
         key.name: "Prot",
-        key.usr: "s:P4cake4Prot"
+        key.usr: "s:4cake4ProtP"
       }
     ],
     key.entities: [
       {
         key.kind: source.lang.swift.decl.typealias,
         key.name: "Element",
-        key.usr: "s:C4cake2C17Element",
+        key.usr: "s:4cake2C1C7Element",
         key.offset: 24,
         key.length: 23,
         key.fully_annotated_decl: "<decl.typealias><syntaxtype.keyword>typealias</syntaxtype.keyword> <decl.name>Element</decl.name> = <ref.struct usr=\"s:Si\">Int</ref.struct></decl.typealias>",
@@ -1164,24 +1164,24 @@
           {
             key.kind: source.lang.swift.ref.protocol,
             key.name: "SignedInteger",
-            key.usr: "s:Ps13SignedInteger"
+            key.usr: "s:s13SignedIntegerP"
           },
           {
             key.kind: source.lang.swift.ref.protocol,
             key.name: "Comparable",
-            key.usr: "s:Ps10Comparable"
+            key.usr: "s:s10ComparableP"
           },
           {
             key.kind: source.lang.swift.ref.protocol,
             key.name: "Equatable",
-            key.usr: "s:Ps9Equatable"
+            key.usr: "s:s9EquatableP"
           }
         ]
       },
       {
         key.kind: source.lang.swift.decl.var.instance,
         key.name: "p",
-        key.usr: "s:vC4cake2C11pSi",
+        key.usr: "s:4cake2C1C1pSiv",
         key.offset: 53,
         key.length: 10,
         key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>p</decl.name>: <decl.var.type><ref.struct usr=\"s:Si\">Int</ref.struct></decl.var.type></decl.var.instance>",
@@ -1189,19 +1189,19 @@
           {
             key.kind: source.lang.swift.ref.var.instance,
             key.name: "p",
-            key.usr: "s:vP4cake4Prot1pSi"
+            key.usr: "s:4cake4ProtP1pSiv"
           },
           {
             key.kind: source.lang.swift.ref.var.instance,
             key.name: "p",
-            key.usr: "s:vP4cake4Prot1pSi"
+            key.usr: "s:4cake4ProtP1pSiv"
           }
         ]
       },
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "foo()",
-        key.usr: "s:FC4cake2C13fooFT_T_",
+        key.usr: "s:4cake2C1C3fooyyF",
         key.offset: 69,
         key.length: 10,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>foo</decl.name>()</decl.function.method.instance>",
@@ -1209,19 +1209,19 @@
           {
             key.kind: source.lang.swift.ref.function.method.instance,
             key.name: "foo()",
-            key.usr: "s:FP4cake4Prot3fooFT_T_"
+            key.usr: "s:4cake4ProtP3fooyyF"
           },
           {
             key.kind: source.lang.swift.ref.function.method.instance,
             key.name: "foo()",
-            key.usr: "s:FP4cake4Prot3fooFT_T_"
+            key.usr: "s:4cake4ProtP3fooyyF"
           }
         ]
       },
       {
         key.kind: source.lang.swift.decl.function.subscript,
         key.name: "subscript(_:)",
-        key.usr: "s:iC4cake2C19subscriptFSiSi",
+        key.usr: "s:4cake2C1C9subscriptSiSici",
         key.offset: 85,
         key.length: 38,
         key.fully_annotated_decl: "<decl.function.subscript><syntaxtype.keyword>subscript</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.name>index</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:Si\">Int</ref.struct></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr=\"s:Si\">Int</ref.struct></decl.function.returntype> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.function.subscript>",
@@ -1238,7 +1238,7 @@
       {
         key.kind: source.lang.swift.decl.function.subscript,
         key.name: "subscript(index:)",
-        key.usr: "s:iC4cake2C19subscriptFT5indexSf_Si",
+        key.usr: "s:4cake2C1C9subscriptSiSf5index_tci",
         key.offset: 129,
         key.length: 40,
         key.fully_annotated_decl: "<decl.function.subscript><syntaxtype.keyword>subscript</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.argument_label>index</decl.var.parameter.argument_label> <decl.var.parameter.name>i</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:Sf\">Float</ref.struct></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr=\"s:Si\">Int</ref.struct></decl.function.returntype> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.function.subscript>",
@@ -1255,7 +1255,7 @@
       {
         key.kind: source.lang.swift.decl.enum,
         key.name: "C1Cases",
-        key.usr: "s:OC4cake2C17C1Cases",
+        key.usr: "s:4cake2C1C0B5CasesO",
         key.offset: 175,
         key.length: 46,
         key.fully_annotated_decl: "<decl.enum><syntaxtype.keyword>enum</syntaxtype.keyword> <decl.name>C1Cases</decl.name> : <ref.struct usr=\"s:Si\">Int</ref.struct></decl.enum>",
@@ -1270,7 +1270,7 @@
           {
             key.kind: source.lang.swift.decl.enumelement,
             key.name: "case1",
-            key.usr: "s:FOC4cake2C17C1Cases5case1FMS1_S1_",
+            key.usr: "s:4cake2C1C0B5CasesO5case1AeEmF",
             key.offset: 205,
             key.length: 10,
             key.fully_annotated_decl: "<decl.enumelement><syntaxtype.keyword>case</syntaxtype.keyword> <decl.name>case1</decl.name></decl.enumelement>"
@@ -1280,8 +1280,8 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "foo1()",
-        key.usr: "s:FE4cakePS_4Prot4foo1FT_T_::SYNTHESIZED::s:C4cake2C1",
-        key.original_usr: "s:FE4cakePS_4Prot4foo1FT_T_",
+        key.usr: "s:4cake4ProtPAAE4foo1yyF::SYNTHESIZED::s:4cake2C1C",
+        key.original_usr: "s:4cake4ProtPAAE4foo1yyF",
         key.offset: 227,
         key.length: 11,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>foo1</decl.name>()</decl.function.method.instance>"
@@ -1289,8 +1289,8 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "extfoo()",
-        key.usr: "s:Fe4cakeRxS_4Protwx7ElementzSirS0_6extfooFT_T_::SYNTHESIZED::s:C4cake2C1",
-        key.original_usr: "s:Fe4cakeRxS_4Protwx7ElementzSirS0_6extfooFT_T_",
+        key.usr: "s:4cake4ProtPAaaBRzSi7ElementRtzlE6extfooyyF::SYNTHESIZED::s:4cake2C1C",
+        key.original_usr: "s:4cake4ProtPAaaBRzSi7ElementRtzlE6extfooyyF",
         key.offset: 244,
         key.length: 13,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>extfoo</decl.name>()</decl.function.method.instance>"
@@ -1298,8 +1298,8 @@
       {
         key.kind: source.lang.swift.decl.function.subscript,
         key.name: "subscript(_:)",
-        key.usr: "s:iE4cakePS_4Prot9subscriptFSiSi::SYNTHESIZED::s:C4cake2C1",
-        key.original_usr: "s:iE4cakePS_4Prot9subscriptFSiSi",
+        key.usr: "s:4cake4ProtPAAE9subscriptSiSici::SYNTHESIZED::s:4cake2C1C",
+        key.original_usr: "s:4cake4ProtPAAE9subscriptSiSici",
         key.offset: 263,
         key.length: 38,
         key.fully_annotated_decl: "<decl.function.subscript><syntaxtype.keyword>subscript</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.name>index</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:Si\">Int</ref.struct></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr=\"s:Si\">Int</ref.struct></decl.function.returntype> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.function.subscript>",
@@ -1323,19 +1323,19 @@
       {
         key.kind: source.lang.swift.ref.protocol,
         key.name: "P4",
-        key.usr: "s:P4cake2P4"
+        key.usr: "s:4cake2P4P"
       }
     ],
     key.extends: {
       key.kind: source.lang.swift.ref.class,
       key.name: "C1",
-      key.usr: "s:C4cake2C1"
+      key.usr: "s:4cake2C1C"
     },
     key.entities: [
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "C1foo()",
-        key.usr: "s:FC4cake2C15C1fooFT_T_",
+        key.usr: "s:4cake2C1C5C1fooyyF",
         key.offset: 330,
         key.length: 12,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>C1foo</decl.name>()</decl.function.method.instance>"
@@ -1343,7 +1343,7 @@
       {
         key.kind: source.lang.swift.decl.struct,
         key.name: "C1S1",
-        key.usr: "s:VC4cake2C14C1S1",
+        key.usr: "s:4cake2C1C0B2S1V",
         key.offset: 348,
         key.length: 50,
         key.fully_annotated_decl: "<decl.struct><syntaxtype.keyword>struct</syntaxtype.keyword> <decl.name>C1S1</decl.name></decl.struct>",
@@ -1351,10 +1351,10 @@
           {
             key.kind: source.lang.swift.decl.function.method.instance,
             key.name: "C1S1foo(a:)",
-            key.usr: "s:FVC4cake2C14C1S17C1S1fooFT1aPS_2P4__T_",
+            key.usr: "s:4cake2C1C0B2S1V0B5S1fooyAA2P4_p1a_tF",
             key.offset: 371,
             key.length: 21,
-            key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>C1S1foo</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>a</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.protocol usr=\"s:P4cake2P4\">P4</ref.protocol></decl.var.parameter.type></decl.var.parameter>)</decl.function.method.instance>",
+            key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>C1S1foo</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>a</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.protocol usr=\"s:4cake2P4P\">P4</ref.protocol></decl.var.parameter.type></decl.var.parameter>)</decl.function.method.instance>",
             key.entities: [
               {
                 key.kind: source.lang.swift.decl.var.local,
@@ -1372,22 +1372,22 @@
   {
     key.kind: source.lang.swift.decl.class,
     key.name: "C2",
-    key.usr: "s:C4cake2C2",
+    key.usr: "s:4cake2C2C",
     key.offset: 402,
     key.length: 172,
-    key.fully_annotated_decl: "<decl.class><syntaxtype.keyword>class</syntaxtype.keyword> <decl.name>C2</decl.name> : <ref.class usr=\"s:C4cake2C1\">C1</ref.class></decl.class>",
+    key.fully_annotated_decl: "<decl.class><syntaxtype.keyword>class</syntaxtype.keyword> <decl.name>C2</decl.name> : <ref.class usr=\"s:4cake2C1C\">C1</ref.class></decl.class>",
     key.inherits: [
       {
         key.kind: source.lang.swift.ref.class,
         key.name: "C1",
-        key.usr: "s:C4cake2C1"
+        key.usr: "s:4cake2C1C"
       }
     ],
     key.entities: [
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "C2foo()",
-        key.usr: "s:FC4cake2C25C2fooFT_T_",
+        key.usr: "s:4cake2C2C5C2fooyyF",
         key.offset: 428,
         key.length: 12,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>C2foo</decl.name>()</decl.function.method.instance>"
@@ -1395,8 +1395,8 @@
       {
         key.kind: source.lang.swift.decl.enum,
         key.name: "C1Cases",
-        key.usr: "s:OC4cake2C17C1Cases::SYNTHESIZED::s:C4cake2C2",
-        key.original_usr: "s:OC4cake2C17C1Cases",
+        key.usr: "s:4cake2C1C0B5CasesO::SYNTHESIZED::s:4cake2C2C",
+        key.original_usr: "s:4cake2C1C0B5CasesO",
         key.offset: 446,
         key.length: 46,
         key.fully_annotated_decl: "<decl.enum><syntaxtype.keyword>enum</syntaxtype.keyword> <decl.name>C1Cases</decl.name> : <ref.struct usr=\"s:Si\">Int</ref.struct></decl.enum>",
@@ -1411,7 +1411,7 @@
           {
             key.kind: source.lang.swift.decl.enumelement,
             key.name: "case1",
-            key.usr: "s:FOC4cake2C17C1Cases5case1FMS1_S1_",
+            key.usr: "s:4cake2C1C0B5CasesO5case1AeEmF",
             key.offset: 476,
             key.length: 10,
             key.fully_annotated_decl: "<decl.enumelement><syntaxtype.keyword>case</syntaxtype.keyword> <decl.name>case1</decl.name></decl.enumelement>"
@@ -1421,8 +1421,8 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "foo1()",
-        key.usr: "s:FE4cakePS_4Prot4foo1FT_T_::SYNTHESIZED::s:C4cake2C2",
-        key.original_usr: "s:FE4cakePS_4Prot4foo1FT_T_",
+        key.usr: "s:4cake4ProtPAAE4foo1yyF::SYNTHESIZED::s:4cake2C2C",
+        key.original_usr: "s:4cake4ProtPAAE4foo1yyF",
         key.offset: 498,
         key.length: 11,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>foo1</decl.name>()</decl.function.method.instance>"
@@ -1430,8 +1430,8 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "extfoo()",
-        key.usr: "s:Fe4cakeRxS_4Protwx7ElementzSirS0_6extfooFT_T_::SYNTHESIZED::s:C4cake2C2",
-        key.original_usr: "s:Fe4cakeRxS_4Protwx7ElementzSirS0_6extfooFT_T_",
+        key.usr: "s:4cake4ProtPAaaBRzSi7ElementRtzlE6extfooyyF::SYNTHESIZED::s:4cake2C2C",
+        key.original_usr: "s:4cake4ProtPAaaBRzSi7ElementRtzlE6extfooyyF",
         key.offset: 515,
         key.length: 13,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>extfoo</decl.name>()</decl.function.method.instance>"
@@ -1439,8 +1439,8 @@
       {
         key.kind: source.lang.swift.decl.function.subscript,
         key.name: "subscript(_:)",
-        key.usr: "s:iE4cakePS_4Prot9subscriptFSiSi::SYNTHESIZED::s:C4cake2C2",
-        key.original_usr: "s:iE4cakePS_4Prot9subscriptFSiSi",
+        key.usr: "s:4cake4ProtPAAE9subscriptSiSici::SYNTHESIZED::s:4cake2C2C",
+        key.original_usr: "s:4cake4ProtPAAE9subscriptSiSici",
         key.offset: 534,
         key.length: 38,
         key.fully_annotated_decl: "<decl.function.subscript><syntaxtype.keyword>subscript</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.name>index</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:Si\">Int</ref.struct></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr=\"s:Si\">Int</ref.struct></decl.function.returntype> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.function.subscript>",
@@ -1464,20 +1464,20 @@
       {
         key.kind: source.lang.swift.ref.protocol,
         key.name: "P4",
-        key.usr: "s:P4cake2P4"
+        key.usr: "s:4cake2P4P"
       }
     ],
     key.extends: {
       key.kind: source.lang.swift.ref.class,
       key.name: "C2",
-      key.usr: "s:C4cake2C2"
+      key.usr: "s:4cake2C2C"
     },
     key.entities: [
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "C1foo()",
-        key.usr: "s:FC4cake2C15C1fooFT_T_::SYNTHESIZED::s:C4cake2C2",
-        key.original_usr: "s:FC4cake2C15C1fooFT_T_",
+        key.usr: "s:4cake2C1C5C1fooyyF::SYNTHESIZED::s:4cake2C2C",
+        key.original_usr: "s:4cake2C1C5C1fooyyF",
         key.offset: 601,
         key.length: 12,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>C1foo</decl.name>()</decl.function.method.instance>"
@@ -1485,8 +1485,8 @@
       {
         key.kind: source.lang.swift.decl.struct,
         key.name: "C1S1",
-        key.usr: "s:VC4cake2C14C1S1::SYNTHESIZED::s:C4cake2C2",
-        key.original_usr: "s:VC4cake2C14C1S1",
+        key.usr: "s:4cake2C1C0B2S1V::SYNTHESIZED::s:4cake2C2C",
+        key.original_usr: "s:4cake2C1C0B2S1V",
         key.offset: 619,
         key.length: 50,
         key.fully_annotated_decl: "<decl.struct><syntaxtype.keyword>struct</syntaxtype.keyword> <decl.name>C1S1</decl.name></decl.struct>",
@@ -1494,10 +1494,10 @@
           {
             key.kind: source.lang.swift.decl.function.method.instance,
             key.name: "C1S1foo(a:)",
-            key.usr: "s:FVC4cake2C14C1S17C1S1fooFT1aPS_2P4__T_",
+            key.usr: "s:4cake2C1C0B2S1V0B5S1fooyAA2P4_p1a_tF",
             key.offset: 642,
             key.length: 21,
-            key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>C1S1foo</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>a</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.protocol usr=\"s:P4cake2P4\">P4</ref.protocol></decl.var.parameter.type></decl.var.parameter>)</decl.function.method.instance>",
+            key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>C1S1foo</decl.name>(<decl.var.parameter><decl.var.parameter.argument_label>a</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.protocol usr=\"s:4cake2P4P\">P4</ref.protocol></decl.var.parameter.type></decl.var.parameter>)</decl.function.method.instance>",
             key.entities: [
               {
                 key.kind: source.lang.swift.decl.var.local,
@@ -1515,7 +1515,7 @@
   {
     key.kind: source.lang.swift.decl.enum,
     key.name: "MyEnum",
-    key.usr: "s:O4cake6MyEnum",
+    key.usr: "s:4cake6MyEnumO",
     key.offset: 673,
     key.length: 36,
     key.fully_annotated_decl: "<decl.enum><syntaxtype.keyword>enum</syntaxtype.keyword> <decl.name>MyEnum</decl.name> : <ref.struct usr=\"s:Si\">Int</ref.struct></decl.enum>",
@@ -1530,7 +1530,7 @@
       {
         key.kind: source.lang.swift.decl.enumelement,
         key.name: "Blah",
-        key.usr: "s:FO4cake6MyEnum4BlahFMS0_S0_",
+        key.usr: "s:4cake6MyEnumO4BlahAcCmF",
         key.offset: 698,
         key.length: 9,
         key.fully_annotated_decl: "<decl.enumelement><syntaxtype.keyword>case</syntaxtype.keyword> <decl.name>Blah</decl.name></decl.enumelement>"
@@ -1559,7 +1559,7 @@
   {
     key.kind: source.lang.swift.decl.protocol,
     key.name: "P3",
-    key.usr: "s:P4cake2P3",
+    key.usr: "s:4cake2P3P",
     key.offset: 766,
     key.length: 37,
     key.fully_annotated_decl: "<decl.protocol><syntaxtype.keyword>protocol</syntaxtype.keyword> <decl.name>P3</decl.name></decl.protocol>",
@@ -1567,7 +1567,7 @@
       {
         key.kind: source.lang.swift.decl.associatedtype,
         key.name: "T",
-        key.usr: "s:P4cake2P31T",
+        key.usr: "s:4cake2P3P1T",
         key.offset: 785,
         key.length: 16,
         key.fully_annotated_decl: "<decl.associatedtype><syntaxtype.keyword>associatedtype</syntaxtype.keyword> <decl.name>T</decl.name></decl.associatedtype>"
@@ -1577,7 +1577,7 @@
   {
     key.kind: source.lang.swift.decl.protocol,
     key.name: "P4",
-    key.usr: "s:P4cake2P4",
+    key.usr: "s:4cake2P4P",
     key.offset: 805,
     key.length: 15,
     key.fully_annotated_decl: "<decl.protocol><syntaxtype.keyword>protocol</syntaxtype.keyword> <decl.name>P4</decl.name></decl.protocol>"
@@ -1585,7 +1585,7 @@
   {
     key.kind: source.lang.swift.decl.protocol,
     key.name: "Prot",
-    key.usr: "s:P4cake4Prot",
+    key.usr: "s:4cake4ProtP",
     key.offset: 822,
     key.length: 102,
     key.fully_annotated_decl: "<decl.protocol><syntaxtype.keyword>protocol</syntaxtype.keyword> <decl.name>Prot</decl.name></decl.protocol>",
@@ -1593,7 +1593,7 @@
       {
         key.kind: source.lang.swift.decl.associatedtype,
         key.name: "Element",
-        key.usr: "s:P4cake4Prot7Element",
+        key.usr: "s:4cake4ProtP7Element",
         key.offset: 843,
         key.length: 22,
         key.fully_annotated_decl: "<decl.associatedtype><syntaxtype.keyword>associatedtype</syntaxtype.keyword> <decl.name>Element</decl.name></decl.associatedtype>"
@@ -1601,7 +1601,7 @@
       {
         key.kind: source.lang.swift.decl.var.instance,
         key.name: "p",
-        key.usr: "s:vP4cake4Prot1pSi",
+        key.usr: "s:4cake4ProtP1pSiv",
         key.offset: 871,
         key.length: 18,
         key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>p</decl.name>: <decl.var.type><ref.struct usr=\"s:Si\">Int</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.instance>"
@@ -1609,7 +1609,7 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "foo()",
-        key.usr: "s:FP4cake4Prot3fooFT_T_",
+        key.usr: "s:4cake4ProtP3fooyyF",
         key.offset: 895,
         key.length: 10,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>foo</decl.name>()</decl.function.method.instance>"
@@ -1617,7 +1617,7 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "foo1()",
-        key.usr: "s:FP4cake4Prot4foo1FT_T_",
+        key.usr: "s:4cake4ProtP4foo1yyF",
         key.offset: 911,
         key.length: 11,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>foo1</decl.name>()</decl.function.method.instance>"
@@ -1631,14 +1631,14 @@
     key.extends: {
       key.kind: source.lang.swift.ref.protocol,
       key.name: "Prot",
-      key.usr: "s:P4cake4Prot"
+      key.usr: "s:4cake4ProtP"
     },
     key.entities: [
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "foo1()",
-        key.usr: "s:FE4cakePS_4Prot4foo1FT_T_",
-        key.default_implementation_of: "s:FP4cake4Prot4foo1FT_T_",
+        key.usr: "s:4cake4ProtPAAE4foo1yyF",
+        key.default_implementation_of: "s:4cake4ProtP4foo1yyF",
         key.offset: 948,
         key.length: 11,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>foo1</decl.name>()</decl.function.method.instance>"
@@ -1646,7 +1646,7 @@
       {
         key.kind: source.lang.swift.decl.function.subscript,
         key.name: "subscript(_:)",
-        key.usr: "s:iE4cakePS_4Prot9subscriptFSiSi",
+        key.usr: "s:4cake4ProtPAAE9subscriptSiSici",
         key.offset: 965,
         key.length: 38,
         key.fully_annotated_decl: "<decl.function.subscript><syntaxtype.keyword>subscript</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.name>index</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr=\"s:Si\">Int</ref.struct></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><ref.struct usr=\"s:Si\">Int</ref.struct></decl.function.returntype> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.function.subscript>",
@@ -1674,13 +1674,13 @@
     key.extends: {
       key.kind: source.lang.swift.ref.protocol,
       key.name: "Prot",
-      key.usr: "s:P4cake4Prot"
+      key.usr: "s:4cake4ProtP"
     },
     key.entities: [
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "extfoo()",
-        key.usr: "s:Fe4cakeRxS_4Protwx7ElementzSirS0_6extfooFT_T_",
+        key.usr: "s:4cake4ProtPAaaBRzSi7ElementRtzlE6extfooyyF",
         key.offset: 1055,
         key.length: 13,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>extfoo</decl.name>()</decl.function.method.instance>"
@@ -1690,7 +1690,7 @@
   {
     key.kind: source.lang.swift.decl.struct,
     key.name: "S1",
-    key.usr: "s:V4cake2S1",
+    key.usr: "s:4cake2S1V",
     key.offset: 1072,
     key.length: 142,
     key.fully_annotated_decl: "<decl.struct><syntaxtype.keyword>struct</syntaxtype.keyword> <decl.name>S1</decl.name></decl.struct>",
@@ -1698,7 +1698,7 @@
       {
         key.kind: source.lang.swift.decl.enum,
         key.name: "SE",
-        key.usr: "s:OV4cake2S12SE",
+        key.usr: "s:4cake2S1V2SEO",
         key.offset: 1089,
         key.length: 63,
         key.fully_annotated_decl: "<decl.enum><syntaxtype.keyword>enum</syntaxtype.keyword> <decl.name>SE</decl.name></decl.enum>",
@@ -1706,7 +1706,7 @@
           {
             key.kind: source.lang.swift.decl.enumelement,
             key.name: "a",
-            key.usr: "s:FOV4cake2S12SE1aFMS1_S1_",
+            key.usr: "s:4cake2S1V2SEO1aAeEmF",
             key.offset: 1108,
             key.length: 6,
             key.fully_annotated_decl: "<decl.enumelement><syntaxtype.keyword>case</syntaxtype.keyword> <decl.name>a</decl.name></decl.enumelement>"
@@ -1714,7 +1714,7 @@
           {
             key.kind: source.lang.swift.decl.enumelement,
             key.name: "b",
-            key.usr: "s:FOV4cake2S12SE1bFMS1_S1_",
+            key.usr: "s:4cake2S1V2SEO1bAeEmF",
             key.offset: 1124,
             key.length: 6,
             key.fully_annotated_decl: "<decl.enumelement><syntaxtype.keyword>case</syntaxtype.keyword> <decl.name>b</decl.name></decl.enumelement>"
@@ -1722,7 +1722,7 @@
           {
             key.kind: source.lang.swift.decl.enumelement,
             key.name: "c",
-            key.usr: "s:FOV4cake2S12SE1cFMS1_S1_",
+            key.usr: "s:4cake2S1V2SEO1cAeEmF",
             key.offset: 1140,
             key.length: 6,
             key.fully_annotated_decl: "<decl.enumelement><syntaxtype.keyword>case</syntaxtype.keyword> <decl.name>c</decl.name></decl.enumelement>"
@@ -1732,7 +1732,7 @@
       {
         key.kind: source.lang.swift.decl.function.method.instance,
         key.name: "foo1()",
-        key.usr: "s:FV4cake2S14foo1FT_T_",
+        key.usr: "s:4cake2S1V4foo1yyF",
         key.offset: 1158,
         key.length: 11,
         key.fully_annotated_decl: "<decl.function.method.instance><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>foo1</decl.name>()</decl.function.method.instance>"
@@ -1740,7 +1740,7 @@
       {
         key.kind: source.lang.swift.decl.struct,
         key.name: "S2",
-        key.usr: "s:VV4cake2S12S2",
+        key.usr: "s:4cake2S1V2S2V",
         key.offset: 1175,
         key.length: 37,
         key.fully_annotated_decl: "<decl.struct><syntaxtype.keyword>struct</syntaxtype.keyword> <decl.name>S2</decl.name></decl.struct>",
@@ -1748,7 +1748,7 @@
           {
             key.kind: source.lang.swift.decl.var.instance,
             key.name: "b",
-            key.usr: "s:vVV4cake2S12S21bSi",
+            key.usr: "s:4cake2S1V2S2V1bSiv",
             key.offset: 1196,
             key.length: 10,
             key.fully_annotated_decl: "<decl.var.instance><syntaxtype.keyword>let</syntaxtype.keyword> <decl.name>b</decl.name>: <decl.var.type><ref.struct usr=\"s:Si\">Int</ref.struct></decl.var.type></decl.var.instance>"
@@ -1760,30 +1760,30 @@
   {
     key.kind: source.lang.swift.decl.struct,
     key.name: "S2",
-    key.usr: "s:V4cake2S2",
+    key.usr: "s:4cake2S2V",
     key.offset: 1216,
     key.length: 45,
-    key.fully_annotated_decl: "<decl.struct><syntaxtype.keyword>struct</syntaxtype.keyword> <decl.name>S2</decl.name> : <ref.protocol usr=\"s:P4cake2P3\">P3</ref.protocol></decl.struct>",
+    key.fully_annotated_decl: "<decl.struct><syntaxtype.keyword>struct</syntaxtype.keyword> <decl.name>S2</decl.name> : <ref.protocol usr=\"s:4cake2P3P\">P3</ref.protocol></decl.struct>",
     key.conforms: [
       {
         key.kind: source.lang.swift.ref.protocol,
         key.name: "P3",
-        key.usr: "s:P4cake2P3"
+        key.usr: "s:4cake2P3P"
       }
     ],
     key.entities: [
       {
         key.kind: source.lang.swift.decl.typealias,
         key.name: "T",
-        key.usr: "s:V4cake2S21T",
+        key.usr: "s:4cake2S2V1T",
         key.offset: 1238,
         key.length: 21,
-        key.fully_annotated_decl: "<decl.typealias><syntaxtype.keyword>typealias</syntaxtype.keyword> <decl.name>T</decl.name> = <ref.struct usr=\"s:V4cake2S2\">S2</ref.struct></decl.typealias>",
+        key.fully_annotated_decl: "<decl.typealias><syntaxtype.keyword>typealias</syntaxtype.keyword> <decl.name>T</decl.name> = <ref.struct usr=\"s:4cake2S2V\">S2</ref.struct></decl.typealias>",
         key.conforms: [
           {
             key.kind: source.lang.swift.ref.protocol,
             key.name: "P3",
-            key.usr: "s:P4cake2P3"
+            key.usr: "s:4cake2P3P"
           }
         ]
       }
@@ -1792,7 +1792,7 @@
   {
     key.kind: source.lang.swift.decl.function.free,
     key.name: "genfoo(x:y:)",
-    key.usr: "s:F4cake6genfoou0_RxS_4Prot_CS_2C1wx7ElementzSirFT1xx1yq__T_",
+    key.usr: "s:4cake6genfooyx1x_q_1ytAA4ProtRzAA2C1CRb_Si7ElementRtzr0_lF",
     key.generic_params: [
       {
         key.name: "T1"
@@ -1814,7 +1814,7 @@
     ],
     key.offset: 1263,
     key.length: 88,
-    key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>genfoo</decl.name>&lt;<decl.generic_type_param usr=\"s:tF4cake6genfoou0_RxS_4Prot_CS_2C1wx7ElementzSirFT1xx1yq__T_L_2T1Mx\"><decl.generic_type_param.name>T1</decl.generic_type_param.name></decl.generic_type_param>, <decl.generic_type_param usr=\"s:tF4cake6genfoou0_RxS_4Prot_CS_2C1wx7ElementzSirFT1xx1yq__T_L_2T2Mq_\"><decl.generic_type_param.name>T2</decl.generic_type_param.name></decl.generic_type_param>&gt;(<decl.var.parameter><decl.var.parameter.argument_label>x</decl.var.parameter.argument_label> <decl.var.parameter.name>ix</decl.var.parameter.name>: <decl.var.parameter.type>T1</decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>y</decl.var.parameter.argument_label> <decl.var.parameter.name>iy</decl.var.parameter.name>: <decl.var.parameter.type>T2</decl.var.parameter.type></decl.var.parameter>) <syntaxtype.keyword>where</syntaxtype.keyword> <decl.generic_type_requirement>T1 : <ref.protocol usr=\"s:P4cake4Prot\">Prot</ref.protocol></decl.generic_type_requirement>, <decl.generic_type_requirement>T2 : <ref.class usr=\"s:C4cake2C1\">C1</ref.class></decl.generic_type_requirement>, <decl.generic_type_requirement>T1.Element == <ref.struct usr=\"s:Si\">Int</ref.struct></decl.generic_type_requirement></decl.function.free>",
+    key.fully_annotated_decl: "<decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>genfoo</decl.name>&lt;<decl.generic_type_param usr=\"s:4cake6genfooyx1x_q_1ytAA4ProtRzAA2C1CRb_Si7ElementRtzr0_lF2T1L_xmfp\"><decl.generic_type_param.name>T1</decl.generic_type_param.name></decl.generic_type_param>, <decl.generic_type_param usr=\"s:4cake6genfooyx1x_q_1ytAA4ProtRzAA2C1CRb_Si7ElementRtzr0_lF2T2L_q_mfp\"><decl.generic_type_param.name>T2</decl.generic_type_param.name></decl.generic_type_param>&gt;(<decl.var.parameter><decl.var.parameter.argument_label>x</decl.var.parameter.argument_label> <decl.var.parameter.name>ix</decl.var.parameter.name>: <decl.var.parameter.type>T1</decl.var.parameter.type></decl.var.parameter>, <decl.var.parameter><decl.var.parameter.argument_label>y</decl.var.parameter.argument_label> <decl.var.parameter.name>iy</decl.var.parameter.name>: <decl.var.parameter.type>T2</decl.var.parameter.type></decl.var.parameter>) <syntaxtype.keyword>where</syntaxtype.keyword> <decl.generic_type_requirement>T1 : <ref.protocol usr=\"s:4cake4ProtP\">Prot</ref.protocol></decl.generic_type_requirement>, <decl.generic_type_requirement>T2 : <ref.class usr=\"s:4cake2C1C\">C1</ref.class></decl.generic_type_requirement>, <decl.generic_type_requirement>T1.Element == <ref.struct usr=\"s:Si\">Int</ref.struct></decl.generic_type_requirement></decl.function.free>",
     key.entities: [
       {
         key.kind: source.lang.swift.decl.var.local,
diff --git a/test/SourceKit/Indexing/Inputs/cycle-depend/A.response b/test/SourceKit/Indexing/Inputs/cycle-depend/A.response
index d43b8cc..7351d77 100644
--- a/test/SourceKit/Indexing/Inputs/cycle-depend/A.response
+++ b/test/SourceKit/Indexing/Inputs/cycle-depend/A.response
@@ -49,12 +49,12 @@
     {
       key.kind: source.lang.swift.decl.class,
       key.name: "A",
-      key.usr: "s:C1A1A",
+      key.usr: "s:1AAAC",
       key.entities: [
         {
           key.kind: source.lang.swift.decl.var.instance,
           key.name: "x",
-          key.usr: "s:vC1A1A1xC1B1B"
+          key.usr: "s:1AAAC1x1BADCv"
         }
       ]
     }
diff --git a/test/SourceKit/Indexing/Inputs/implicit-vis/a.index.response b/test/SourceKit/Indexing/Inputs/implicit-vis/a.index.response
index 34715e2..242aad7 100644
--- a/test/SourceKit/Indexing/Inputs/implicit-vis/a.index.response
+++ b/test/SourceKit/Indexing/Inputs/implicit-vis/a.index.response
@@ -13,21 +13,21 @@
     {
       key.kind: source.lang.swift.decl.class,
       key.name: "A",
-      key.usr: "s:C12implicit_vis1A",
+      key.usr: "s:12implicit_vis1AC",
       key.line: 1,
       key.column: 7,
       key.entities: [
         {
           key.kind: source.lang.swift.decl.var.instance,
           key.name: "b",
-          key.usr: "s:vC12implicit_vis1A1bCS_1B",
+          key.usr: "s:12implicit_vis1AC1bAA1BCv",
           key.line: 2,
           key.column: 6
         },
         {
           key.kind: source.lang.swift.ref.class,
           key.name: "B",
-          key.usr: "s:C12implicit_vis1B",
+          key.usr: "s:12implicit_vis1BC",
           key.line: 2,
           key.column: 9
         }
diff --git a/test/SourceKit/Indexing/Inputs/implicit-vis/b.index.response b/test/SourceKit/Indexing/Inputs/implicit-vis/b.index.response
index c2ab19f..633277f 100644
--- a/test/SourceKit/Indexing/Inputs/implicit-vis/b.index.response
+++ b/test/SourceKit/Indexing/Inputs/implicit-vis/b.index.response
@@ -13,21 +13,21 @@
     {
       key.kind: source.lang.swift.decl.class,
       key.name: "B",
-      key.usr: "s:C12implicit_vis1B",
+      key.usr: "s:12implicit_vis1BC",
       key.line: 1,
       key.column: 7,
       key.entities: [
         {
           key.kind: source.lang.swift.decl.var.instance,
           key.name: "a",
-          key.usr: "s:vC12implicit_vis1B1aCS_1A",
+          key.usr: "s:12implicit_vis1BC1aAA1ACv",
           key.line: 2,
           key.column: 6
         },
         {
           key.kind: source.lang.swift.ref.class,
           key.name: "A",
-          key.usr: "s:C12implicit_vis1A",
+          key.usr: "s:12implicit_vis1AC",
           key.line: 2,
           key.column: 9
         }
diff --git a/test/SourceKit/Indexing/Inputs/test_module.index.response b/test/SourceKit/Indexing/Inputs/test_module.index.response
index eca7ec1..53b8911 100644
--- a/test/SourceKit/Indexing/Inputs/test_module.index.response
+++ b/test/SourceKit/Indexing/Inputs/test_module.index.response
@@ -13,27 +13,27 @@
     {
       key.kind: source.lang.swift.decl.class,
       key.name: "C2",
-      key.usr: "s:C11test_module2C2"
+      key.usr: "s:11test_module2C2C"
     },
     {
       key.kind: source.lang.swift.decl.class,
       key.name: "ComputedProperty",
-      key.usr: "s:C11test_module16ComputedProperty",
+      key.usr: "s:11test_module16ComputedPropertyC",
       key.entities: [
         {
           key.kind: source.lang.swift.decl.var.instance,
           key.name: "value",
-          key.usr: "s:vC11test_module16ComputedProperty5valueSi",
+          key.usr: "s:11test_module16ComputedPropertyC5valueSiv",
           key.entities: [
             {
               key.kind: source.lang.swift.decl.function.accessor.getter,
               key.name: "getter:value",
-              key.usr: "s:FC11test_module16ComputedPropertyg5valueSi"
+              key.usr: "s:11test_module16ComputedPropertyC5valueSifg"
             },
             {
               key.kind: source.lang.swift.decl.function.accessor.setter,
               key.name: "setter:value",
-              key.usr: "s:FC11test_module16ComputedPropertys5valueSi"
+              key.usr: "s:11test_module16ComputedPropertyC5valueSifs"
             }
           ]
         }
@@ -42,76 +42,76 @@
     {
       key.kind: source.lang.swift.decl.protocol,
       key.name: "Prot1",
-      key.usr: "s:P11test_module5Prot1"
+      key.usr: "s:11test_module5Prot1P"
     },
     {
       key.kind: source.lang.swift.decl.protocol,
       key.name: "Prot2",
-      key.usr: "s:P11test_module5Prot2",
+      key.usr: "s:11test_module5Prot2P",
       key.related: [
         {
           key.kind: source.lang.swift.ref.protocol,
           key.name: "Prot1",
-          key.usr: "s:P11test_module5Prot1"
+          key.usr: "s:11test_module5Prot1P"
         }
       ]
     },
     {
       key.kind: source.lang.swift.decl.class,
       key.name: "TwoInts",
-      key.usr: "s:C11test_module7TwoInts",
+      key.usr: "s:11test_module7TwoIntsC",
       key.entities: [
         {
           key.kind: source.lang.swift.decl.var.instance,
           key.name: "x",
-          key.usr: "s:vC11test_module7TwoInts1xSi"
+          key.usr: "s:11test_module7TwoIntsC1xSiv"
         },
         {
           key.kind: source.lang.swift.decl.var.instance,
           key.name: "y",
-          key.usr: "s:vC11test_module7TwoInts1ySi"
+          key.usr: "s:11test_module7TwoIntsC1ySiv"
         },
         {
           key.kind: source.lang.swift.decl.function.constructor,
           key.name: "init(a:b:)",
-          key.usr: "s:FC11test_module7TwoIntscFT1aSi1bSi_S0_"
+          key.usr: "s:11test_module7TwoIntsCACSi1a_Si1btcfc"
         }
       ]
     },
     {
       key.kind: source.lang.swift.decl.protocol,
       key.name: "Prot3",
-      key.usr: "s:P11test_module5Prot3"
+      key.usr: "s:11test_module5Prot3P"
     },
     {
       key.kind: source.lang.swift.decl.function.free,
       key.name: "globalFunc()",
-      key.usr: "s:F11test_module10globalFuncFT_T_"
+      key.usr: "s:11test_module10globalFuncyyF"
     },
     {
       key.kind: source.lang.swift.decl.class,
       key.name: "Empty",
-      key.usr: "s:C11test_module5Empty"
+      key.usr: "s:11test_module5EmptyC"
     },
     {
       key.kind: source.lang.swift.decl.extension.class,
       key.name: "C2",
-      key.usr: "s:e:s:C11test_module2C2s:P11test_module5Prot3",
+      key.usr: "s:e:s:11test_module2C2Cs:11test_module5Prot3P",
       key.related: [
         {
           key.kind: source.lang.swift.ref.protocol,
           key.name: "Prot3",
-          key.usr: "s:P11test_module5Prot3"
+          key.usr: "s:11test_module5Prot3P"
         },
         {
           key.kind: source.lang.swift.ref.protocol,
           key.name: "Prot1",
-          key.usr: "s:P11test_module5Prot1"
+          key.usr: "s:11test_module5Prot1P"
         },
         {
           key.kind: source.lang.swift.ref.protocol,
           key.name: "Prot2",
-          key.usr: "s:P11test_module5Prot2"
+          key.usr: "s:11test_module5Prot2P"
         }
       ]
     }
diff --git a/test/SourceKit/Indexing/index.swift.response b/test/SourceKit/Indexing/index.swift.response
index 93d7c99..1845d2c 100644
--- a/test/SourceKit/Indexing/index.swift.response
+++ b/test/SourceKit/Indexing/index.swift.response
@@ -13,19 +13,19 @@
     {
       key.kind: source.lang.swift.decl.var.global,
       key.name: "globV",
-      key.usr: "s:v5index5globVSi",
+      key.usr: "s:5index5globVSiv",
       key.line: 4,
       key.column: 5,
       key.entities: [
         {
           key.kind: source.lang.swift.decl.function.accessor.getter,
-          key.usr: "s:F5indexg5globVSi",
+          key.usr: "s:5index5globVSifg",
           key.line: 4,
           key.column: 5
         },
         {
           key.kind: source.lang.swift.decl.function.accessor.setter,
-          key.usr: "s:F5indexs5globVSi",
+          key.usr: "s:5index5globVSifs",
           key.line: 4,
           key.column: 5
         }
@@ -41,42 +41,42 @@
     {
       key.kind: source.lang.swift.decl.class,
       key.name: "CC",
-      key.usr: "s:C5index2CC",
+      key.usr: "s:5index2CCC",
       key.line: 6,
       key.column: 7,
       key.entities: [
         {
           key.kind: source.lang.swift.decl.function.constructor,
           key.name: "init()",
-          key.usr: "s:FC5index2CCcFT_S0_",
+          key.usr: "s:5index2CCCACycfc",
           key.line: 7,
           key.column: 3
         },
         {
           key.kind: source.lang.swift.decl.var.instance,
           key.name: "instV",
-          key.usr: "s:vC5index2CC5instVS0_",
+          key.usr: "s:5index2CCC5instVACv",
           key.line: 8,
           key.column: 7
         },
         {
           key.kind: source.lang.swift.ref.class,
           key.name: "CC",
-          key.usr: "s:C5index2CC",
+          key.usr: "s:5index2CCC",
           key.line: 8,
           key.column: 14
         },
         {
           key.kind: source.lang.swift.decl.function.method.instance,
           key.name: "meth()",
-          key.usr: "s:FC5index2CC4methFT_T_",
+          key.usr: "s:5index2CCC4methyyF",
           key.line: 9,
           key.column: 8
         },
         {
           key.kind: source.lang.swift.decl.function.method.instance,
           key.name: "instanceFunc0(_:b:)",
-          key.usr: "s:FC5index2CC13instanceFunc0FTSi1bSf_Si",
+          key.usr: "s:5index2CCC13instanceFunc0SiSi_Sf1btF",
           key.line: 10,
           key.column: 8,
           key.entities: [
@@ -106,7 +106,7 @@
         {
           key.kind: source.lang.swift.decl.function.method.instance,
           key.name: "instanceFunc1(a:b:)",
-          key.usr: "s:FC5index2CC13instanceFunc1FT1aSi1bSf_Si",
+          key.usr: "s:5index2CCC13instanceFunc1SiSi1a_Sf1btF",
           key.line: 13,
           key.column: 8,
           key.entities: [
@@ -136,7 +136,7 @@
         {
           key.kind: source.lang.swift.decl.function.method.class,
           key.name: "smeth()",
-          key.usr: "s:ZFC5index2CC5smethFT_T_",
+          key.usr: "s:5index2CCC5smethyyFZ",
           key.line: 16,
           key.column: 14
         }
@@ -145,28 +145,28 @@
     {
       key.kind: source.lang.swift.decl.function.operator.infix,
       key.name: "+(_:_:)",
-      key.usr: "s:F5indexoi1pFTCS_2CCS0__S0_",
+      key.usr: "s:5index1poiAA2CCCAD_ADtF",
       key.line: 19,
       key.column: 6,
       key.entities: [
         {
           key.kind: source.lang.swift.ref.class,
           key.name: "CC",
-          key.usr: "s:C5index2CC",
+          key.usr: "s:5index2CCC",
           key.line: 19,
           key.column: 12
         },
         {
           key.kind: source.lang.swift.ref.class,
           key.name: "CC",
-          key.usr: "s:C5index2CC",
+          key.usr: "s:5index2CCC",
           key.line: 19,
           key.column: 19
         },
         {
           key.kind: source.lang.swift.ref.class,
           key.name: "CC",
-          key.usr: "s:C5index2CC",
+          key.usr: "s:5index2CCC",
           key.line: 19,
           key.column: 26
         }
@@ -175,21 +175,21 @@
     {
       key.kind: source.lang.swift.decl.struct,
       key.name: "S",
-      key.usr: "s:V5index1S",
+      key.usr: "s:5index1SV",
       key.line: 23,
       key.column: 8,
       key.entities: [
         {
           key.kind: source.lang.swift.decl.function.method.instance,
           key.name: "meth()",
-          key.usr: "s:FV5index1S4methFT_T_",
+          key.usr: "s:5index1SV4methyyF",
           key.line: 24,
           key.column: 8
         },
         {
           key.kind: source.lang.swift.decl.function.method.static,
           key.name: "smeth()",
-          key.usr: "s:ZFV5index1S5smethFT_T_",
+          key.usr: "s:5index1SV5smethyyFZ",
           key.line: 25,
           key.column: 15
         }
@@ -198,14 +198,14 @@
     {
       key.kind: source.lang.swift.decl.enum,
       key.name: "E",
-      key.usr: "s:O5index1E",
+      key.usr: "s:5index1EO",
       key.line: 28,
       key.column: 6,
       key.entities: [
         {
           key.kind: source.lang.swift.decl.enumelement,
           key.name: "EElem",
-          key.usr: "s:FO5index1E5EElemFMS0_S0_",
+          key.usr: "s:5index1EO5EElemAcCmF",
           key.line: 29,
           key.column: 8
         }
@@ -214,21 +214,21 @@
     {
       key.kind: source.lang.swift.decl.protocol,
       key.name: "Prot",
-      key.usr: "s:P5index4Prot",
+      key.usr: "s:5index4ProtP",
       key.line: 32,
       key.column: 10,
       key.entities: [
         {
           key.kind: source.lang.swift.decl.function.method.instance,
           key.name: "protMeth(_:)",
-          key.usr: "s:FP5index4Prot8protMethFPS0__T_",
+          key.usr: "s:5index4ProtP8protMethyAaB_pF",
           key.line: 33,
           key.column: 8,
           key.entities: [
             {
               key.kind: source.lang.swift.ref.protocol,
               key.name: "Prot",
-              key.usr: "s:P5index4Prot",
+              key.usr: "s:5index4ProtP",
               key.line: 33,
               key.column: 22
             }
@@ -239,34 +239,34 @@
     {
       key.kind: source.lang.swift.decl.function.free,
       key.name: "foo(_:b:)",
-      key.usr: "s:F5index3fooFTCS_2CC1bROS_1E_T_",
+      key.usr: "s:5index3fooyAA2CCC_AA1EOz1btF",
       key.line: 36,
       key.column: 6,
       key.entities: [
         {
           key.kind: source.lang.swift.ref.class,
           key.name: "CC",
-          key.usr: "s:C5index2CC",
+          key.usr: "s:5index2CCC",
           key.line: 36,
           key.column: 15
         },
         {
           key.kind: source.lang.swift.ref.enum,
           key.name: "E",
-          key.usr: "s:O5index1E",
+          key.usr: "s:5index1EO",
           key.line: 36,
           key.column: 28
         },
         {
           key.kind: source.lang.swift.ref.var.global,
           key.name: "globV",
-          key.usr: "s:v5index5globVSi",
+          key.usr: "s:5index5globVSiv",
           key.line: 37,
           key.column: 3,
           key.entities: [
             {
               key.kind: source.lang.swift.ref.function.accessor.setter,
-              key.usr: "s:F5indexs5globVSi",
+              key.usr: "s:5index5globVSifs",
               key.line: 37,
               key.column: 3
             }
@@ -275,23 +275,23 @@
         {
           key.kind: source.lang.swift.ref.function.operator.infix,
           key.name: "+(_:_:)",
-          key.usr: "s:F5indexoi1pFTCS_2CCS0__S0_",
+          key.usr: "s:5index1poiAA2CCCAD_ADtF",
           key.line: 38,
           key.column: 5
         },
         {
           key.kind: source.lang.swift.ref.var.instance,
           key.name: "instV",
-          key.usr: "s:vC5index2CC5instVS0_",
+          key.usr: "s:5index2CCC5instVACv",
           key.line: 38,
           key.column: 9,
           key.entities: [
             {
               key.kind: source.lang.swift.ref.function.accessor.getter,
-              key.usr: "s:FC5index2CCg5instVS0_",
+              key.usr: "s:5index2CCC5instVACfg",
               key.line: 38,
               key.column: 9,
-              key.receiver_usr: "s:C5index2CC",
+              key.receiver_usr: "s:5index2CCC",
               key.is_dynamic: 1
             }
           ]
@@ -299,45 +299,45 @@
         {
           key.kind: source.lang.swift.ref.function.method.instance,
           key.name: "meth()",
-          key.usr: "s:FC5index2CC4methFT_T_",
+          key.usr: "s:5index2CCC4methyyF",
           key.line: 39,
           key.column: 5,
-          key.receiver_usr: "s:C5index2CC",
+          key.receiver_usr: "s:5index2CCC",
           key.is_dynamic: 1
         },
         {
           key.kind: source.lang.swift.ref.class,
           key.name: "CC",
-          key.usr: "s:C5index2CC",
+          key.usr: "s:5index2CCC",
           key.line: 40,
           key.column: 3
         },
         {
           key.kind: source.lang.swift.ref.function.method.class,
           key.name: "smeth()",
-          key.usr: "s:ZFC5index2CC5smethFT_T_",
+          key.usr: "s:5index2CCC5smethyyFZ",
           key.line: 40,
           key.column: 6,
-          key.receiver_usr: "s:C5index2CC"
+          key.receiver_usr: "s:5index2CCC"
         },
         {
           key.kind: source.lang.swift.ref.enum,
           key.name: "E",
-          key.usr: "s:O5index1E",
+          key.usr: "s:5index1EO",
           key.line: 41,
           key.column: 7
         },
         {
           key.kind: source.lang.swift.ref.enumelement,
           key.name: "EElem",
-          key.usr: "s:FO5index1E5EElemFMS0_S0_",
+          key.usr: "s:5index1EO5EElemAcCmF",
           key.line: 41,
           key.column: 9
         },
         {
           key.kind: source.lang.swift.ref.class,
           key.name: "CC",
-          key.usr: "s:C5index2CC",
+          key.usr: "s:5index2CCC",
           key.line: 42,
           key.column: 14
         }
@@ -353,7 +353,7 @@
         {
           key.kind: source.lang.swift.ref.class,
           key.name: "CC",
-          key.usr: "s:C5index2CC",
+          key.usr: "s:5index2CCC",
           key.line: 47,
           key.column: 21
         }
@@ -362,14 +362,14 @@
     {
       key.kind: source.lang.swift.decl.extension.class,
       key.name: "CC",
-      key.usr: "s:e:s:FC5index2CC5meth2FS0_T_",
+      key.usr: "s:e:s:5index2CCC5meth2yACF",
       key.line: 49,
       key.column: 11,
       key.related: [
         {
           key.kind: source.lang.swift.ref.protocol,
           key.name: "Prot",
-          key.usr: "s:P5index4Prot",
+          key.usr: "s:5index4ProtP",
           key.line: 49,
           key.column: 16
         }
@@ -378,21 +378,21 @@
         {
           key.kind: source.lang.swift.ref.class,
           key.name: "CC",
-          key.usr: "s:C5index2CC",
+          key.usr: "s:5index2CCC",
           key.line: 49,
           key.column: 11
         },
         {
           key.kind: source.lang.swift.ref.protocol,
           key.name: "Prot",
-          key.usr: "s:P5index4Prot",
+          key.usr: "s:5index4ProtP",
           key.line: 49,
           key.column: 16
         },
         {
           key.kind: source.lang.swift.decl.function.method.instance,
           key.name: "meth2(_:)",
-          key.usr: "s:FC5index2CC5meth2FS0_T_",
+          key.usr: "s:5index2CCC5meth2yACF",
           key.line: 50,
           key.column: 8,
           key.entities: [
@@ -408,21 +408,21 @@
         {
           key.kind: source.lang.swift.decl.function.method.instance,
           key.name: "protMeth(_:)",
-          key.usr: "s:FC5index2CC8protMethFPS_4Prot_T_",
+          key.usr: "s:5index2CCC8protMethyAA4Prot_pF",
           key.line: 51,
           key.column: 8,
           key.related: [
             {
               key.kind: source.lang.swift.ref.function.method.instance,
               key.name: "protMeth(_:)",
-              key.usr: "s:FP5index4Prot8protMethFPS0__T_"
+              key.usr: "s:5index4ProtP8protMethyAaB_pF"
             }
           ],
           key.entities: [
             {
               key.kind: source.lang.swift.ref.protocol,
               key.name: "Prot",
-              key.usr: "s:P5index4Prot",
+              key.usr: "s:5index4ProtP",
               key.line: 51,
               key.column: 22
             }
@@ -431,14 +431,14 @@
         {
           key.kind: source.lang.swift.decl.var.instance,
           key.name: "extV",
-          key.usr: "s:vC5index2CC4extVSi",
+          key.usr: "s:5index2CCC4extVSiv",
           key.line: 52,
           key.column: 7,
           key.entities: [
             {
               key.kind: source.lang.swift.decl.function.accessor.getter,
               key.name: "getter:extV",
-              key.usr: "s:FC5index2CCg4extVSi",
+              key.usr: "s:5index2CCC4extVSifg",
               key.line: 52,
               key.column: 18
             }
@@ -456,21 +456,21 @@
     {
       key.kind: source.lang.swift.decl.class,
       key.name: "SubCC",
-      key.usr: "s:C5index5SubCC",
+      key.usr: "s:5index5SubCCC",
       key.line: 55,
       key.column: 7,
       key.related: [
         {
           key.kind: source.lang.swift.ref.class,
           key.name: "CC",
-          key.usr: "s:C5index2CC",
+          key.usr: "s:5index2CCC",
           key.line: 55,
           key.column: 15
         },
         {
           key.kind: source.lang.swift.ref.protocol,
           key.name: "Prot",
-          key.usr: "s:P5index4Prot",
+          key.usr: "s:5index4ProtP",
           key.line: 55,
           key.column: 19
         }
@@ -479,14 +479,14 @@
         {
           key.kind: source.lang.swift.ref.class,
           key.name: "CC",
-          key.usr: "s:C5index2CC",
+          key.usr: "s:5index2CCC",
           key.line: 55,
           key.column: 15
         },
         {
           key.kind: source.lang.swift.ref.protocol,
           key.name: "Prot",
-          key.usr: "s:P5index4Prot",
+          key.usr: "s:5index4ProtP",
           key.line: 55,
           key.column: 19
         }
@@ -495,19 +495,19 @@
     {
       key.kind: source.lang.swift.decl.var.global,
       key.name: "globV2",
-      key.usr: "s:v5index6globV2CS_5SubCC",
+      key.usr: "s:5index6globV2AA5SubCCCv",
       key.line: 57,
       key.column: 5,
       key.entities: [
         {
           key.kind: source.lang.swift.decl.function.accessor.getter,
-          key.usr: "s:F5indexg6globV2CS_5SubCC",
+          key.usr: "s:5index6globV2AA5SubCCCfg",
           key.line: 57,
           key.column: 5
         },
         {
           key.kind: source.lang.swift.decl.function.accessor.setter,
-          key.usr: "s:F5indexs6globV2CS_5SubCC",
+          key.usr: "s:5index6globV2AA5SubCCCfs",
           key.line: 57,
           key.column: 5
         }
@@ -516,35 +516,35 @@
     {
       key.kind: source.lang.swift.ref.class,
       key.name: "SubCC",
-      key.usr: "s:C5index5SubCC",
+      key.usr: "s:5index5SubCCC",
       key.line: 57,
       key.column: 13
     },
     {
       key.kind: source.lang.swift.decl.class,
       key.name: "ComputedProperty",
-      key.usr: "s:C5index16ComputedProperty",
+      key.usr: "s:5index16ComputedPropertyC",
       key.line: 59,
       key.column: 7,
       key.entities: [
         {
           key.kind: source.lang.swift.decl.var.instance,
           key.name: "value",
-          key.usr: "s:vC5index16ComputedProperty5valueSi",
+          key.usr: "s:5index16ComputedPropertyC5valueSiv",
           key.line: 60,
           key.column: 7,
           key.entities: [
             {
               key.kind: source.lang.swift.decl.function.accessor.getter,
               key.name: "getter:value",
-              key.usr: "s:FC5index16ComputedPropertyg5valueSi",
+              key.usr: "s:5index16ComputedPropertyC5valueSifg",
               key.line: 61,
               key.column: 5
             },
             {
               key.kind: source.lang.swift.decl.function.accessor.setter,
               key.name: "setter:value",
-              key.usr: "s:FC5index16ComputedPropertys5valueSi",
+              key.usr: "s:5index16ComputedPropertyC5valueSifs",
               key.line: 65,
               key.column: 5
             }
@@ -560,14 +560,14 @@
         {
           key.kind: source.lang.swift.decl.var.instance,
           key.name: "readOnly",
-          key.usr: "s:vC5index16ComputedProperty8readOnlySi",
+          key.usr: "s:5index16ComputedPropertyC8readOnlySiv",
           key.line: 70,
           key.column: 7,
           key.entities: [
             {
               key.kind: source.lang.swift.decl.function.accessor.getter,
               key.name: "getter:readOnly",
-              key.usr: "s:FC5index16ComputedPropertyg8readOnlySi",
+              key.usr: "s:5index16ComputedPropertyC8readOnlySifg",
               key.line: 70,
               key.column: 22
             }
@@ -585,21 +585,21 @@
     {
       key.kind: source.lang.swift.decl.class,
       key.name: "BC2",
-      key.usr: "s:C5index3BC2",
+      key.usr: "s:5index3BC2C",
       key.line: 73,
       key.column: 7,
       key.entities: [
         {
           key.kind: source.lang.swift.decl.function.method.instance,
           key.name: "protMeth(_:)",
-          key.usr: "s:FC5index3BC28protMethFPS_4Prot_T_",
+          key.usr: "s:5index3BC2C8protMethyAA4Prot_pF",
           key.line: 74,
           key.column: 8,
           key.entities: [
             {
               key.kind: source.lang.swift.ref.protocol,
               key.name: "Prot",
-              key.usr: "s:P5index4Prot",
+              key.usr: "s:5index4ProtP",
               key.line: 74,
               key.column: 22
             }
@@ -610,21 +610,21 @@
     {
       key.kind: source.lang.swift.decl.class,
       key.name: "SubC2",
-      key.usr: "s:C5index5SubC2",
+      key.usr: "s:5index5SubC2C",
       key.line: 76,
       key.column: 7,
       key.related: [
         {
           key.kind: source.lang.swift.ref.class,
           key.name: "BC2",
-          key.usr: "s:C5index3BC2",
+          key.usr: "s:5index3BC2C",
           key.line: 76,
           key.column: 15
         },
         {
           key.kind: source.lang.swift.ref.protocol,
           key.name: "Prot",
-          key.usr: "s:P5index4Prot",
+          key.usr: "s:5index4ProtP",
           key.line: 76,
           key.column: 20
         }
@@ -633,40 +633,40 @@
         {
           key.kind: source.lang.swift.ref.class,
           key.name: "BC2",
-          key.usr: "s:C5index3BC2",
+          key.usr: "s:5index3BC2C",
           key.line: 76,
           key.column: 15
         },
         {
           key.kind: source.lang.swift.ref.protocol,
           key.name: "Prot",
-          key.usr: "s:P5index4Prot",
+          key.usr: "s:5index4ProtP",
           key.line: 76,
           key.column: 20
         },
         {
           key.kind: source.lang.swift.decl.function.method.instance,
           key.name: "protMeth(_:)",
-          key.usr: "s:FC5index5SubC28protMethFPS_4Prot_T_",
+          key.usr: "s:5index5SubC2C8protMethyAA4Prot_pF",
           key.line: 77,
           key.column: 17,
           key.related: [
             {
               key.kind: source.lang.swift.ref.function.method.instance,
               key.name: "protMeth(_:)",
-              key.usr: "s:FC5index3BC28protMethFPS_4Prot_T_"
+              key.usr: "s:5index3BC2C8protMethyAA4Prot_pF"
             },
             {
               key.kind: source.lang.swift.ref.function.method.instance,
               key.name: "protMeth(_:)",
-              key.usr: "s:FP5index4Prot8protMethFPS0__T_"
+              key.usr: "s:5index4ProtP8protMethyAaB_pF"
             }
           ],
           key.entities: [
             {
               key.kind: source.lang.swift.ref.protocol,
               key.name: "Prot",
-              key.usr: "s:P5index4Prot",
+              key.usr: "s:5index4ProtP",
               key.line: 77,
               key.column: 31
             }
@@ -682,35 +682,35 @@
     {
       key.kind: source.lang.swift.decl.class,
       key.name: "CC2",
-      key.usr: "s:C5index3CC2",
+      key.usr: "s:5index3CC2C",
       key.line: 80,
       key.column: 7,
       key.entities: [
         {
           key.kind: source.lang.swift.decl.function.subscript,
           key.name: "subscript(_:)",
-          key.usr: "s:iC5index3CC29subscriptFSiSi",
+          key.usr: "s:5index3CC2C9subscriptSiSici",
           key.line: 81,
           key.column: 3,
           key.entities: [
             {
               key.kind: source.lang.swift.decl.function.accessor.getter,
               key.name: "getter:subscript(_:)",
-              key.usr: "s:FC5index3CC2g9subscriptFSiSi",
+              key.usr: "s:5index3CC2C9subscriptSiSicfg",
               key.line: 82,
               key.column: 5
             },
             {
               key.kind: source.lang.swift.decl.function.accessor.setter,
               key.name: "setter:subscript(_:)",
-              key.usr: "s:FC5index3CC2s9subscriptFSiSi",
+              key.usr: "s:5index3CC2C9subscriptSiSicfs",
               key.line: 85,
               key.column: 5,
               key.entities: [
                 {
                   key.kind: source.lang.swift.ref.function.operator.infix,
                   key.name: "+(_:_:)",
-                  key.usr: "s:Fsoi1pFTSiSi_Si",
+                  key.usr: "s:s1poiSiSi_SitF",
                   key.line: 86,
                   key.column: 8
                 }
@@ -723,37 +723,37 @@
     {
       key.kind: source.lang.swift.decl.function.free,
       key.name: "test1(_:sub:)",
-      key.usr: "s:F5index5test1FTCS_16ComputedProperty3subCS_3CC2_T_",
+      key.usr: "s:5index5test1yAA16ComputedPropertyC_AA3CC2C3subtF",
       key.line: 91,
       key.column: 6,
       key.entities: [
         {
           key.kind: source.lang.swift.ref.class,
           key.name: "ComputedProperty",
-          key.usr: "s:C5index16ComputedProperty",
+          key.usr: "s:5index16ComputedPropertyC",
           key.line: 91,
           key.column: 18
         },
         {
           key.kind: source.lang.swift.ref.class,
           key.name: "CC2",
-          key.usr: "s:C5index3CC2",
+          key.usr: "s:5index3CC2C",
           key.line: 91,
           key.column: 41
         },
         {
           key.kind: source.lang.swift.ref.var.instance,
           key.name: "value",
-          key.usr: "s:vC5index16ComputedProperty5valueSi",
+          key.usr: "s:5index16ComputedPropertyC5valueSiv",
           key.line: 92,
           key.column: 14,
           key.entities: [
             {
               key.kind: source.lang.swift.ref.function.accessor.getter,
-              key.usr: "s:FC5index16ComputedPropertyg5valueSi",
+              key.usr: "s:5index16ComputedPropertyC5valueSifg",
               key.line: 92,
               key.column: 14,
-              key.receiver_usr: "s:C5index16ComputedProperty",
+              key.receiver_usr: "s:5index16ComputedPropertyC",
               key.is_dynamic: 1
             }
           ]
@@ -761,16 +761,16 @@
         {
           key.kind: source.lang.swift.ref.var.instance,
           key.name: "readOnly",
-          key.usr: "s:vC5index16ComputedProperty8readOnlySi",
+          key.usr: "s:5index16ComputedPropertyC8readOnlySiv",
           key.line: 93,
           key.column: 10,
           key.entities: [
             {
               key.kind: source.lang.swift.ref.function.accessor.getter,
-              key.usr: "s:FC5index16ComputedPropertyg8readOnlySi",
+              key.usr: "s:5index16ComputedPropertyC8readOnlySifg",
               key.line: 93,
               key.column: 10,
-              key.receiver_usr: "s:C5index16ComputedProperty",
+              key.receiver_usr: "s:5index16ComputedPropertyC",
               key.is_dynamic: 1
             }
           ]
@@ -778,16 +778,16 @@
         {
           key.kind: source.lang.swift.ref.var.instance,
           key.name: "value",
-          key.usr: "s:vC5index16ComputedProperty5valueSi",
+          key.usr: "s:5index16ComputedPropertyC5valueSiv",
           key.line: 94,
           key.column: 6,
           key.entities: [
             {
               key.kind: source.lang.swift.ref.function.accessor.setter,
-              key.usr: "s:FC5index16ComputedPropertys5valueSi",
+              key.usr: "s:5index16ComputedPropertyC5valueSifs",
               key.line: 94,
               key.column: 6,
-              key.receiver_usr: "s:C5index16ComputedProperty",
+              key.receiver_usr: "s:5index16ComputedPropertyC",
               key.is_dynamic: 1
             }
           ]
@@ -795,31 +795,31 @@
         {
           key.kind: source.lang.swift.ref.function.operator.prefix,
           key.name: "++(_:)",
-          key.usr: "s:Fsop2ppFRSiSi",
+          key.usr: "s:s2ppopSiSizF",
           key.line: 95,
           key.column: 3
         },
         {
           key.kind: source.lang.swift.ref.var.instance,
           key.name: "value",
-          key.usr: "s:vC5index16ComputedProperty5valueSi",
+          key.usr: "s:5index16ComputedPropertyC5valueSiv",
           key.line: 95,
           key.column: 8,
           key.entities: [
             {
               key.kind: source.lang.swift.ref.function.accessor.getter,
-              key.usr: "s:FC5index16ComputedPropertyg5valueSi",
+              key.usr: "s:5index16ComputedPropertyC5valueSifg",
               key.line: 95,
               key.column: 8,
-              key.receiver_usr: "s:C5index16ComputedProperty",
+              key.receiver_usr: "s:5index16ComputedPropertyC",
               key.is_dynamic: 1
             },
             {
               key.kind: source.lang.swift.ref.function.accessor.setter,
-              key.usr: "s:FC5index16ComputedPropertys5valueSi",
+              key.usr: "s:5index16ComputedPropertyC5valueSifs",
               key.line: 95,
               key.column: 8,
-              key.receiver_usr: "s:C5index16ComputedProperty",
+              key.receiver_usr: "s:5index16ComputedPropertyC",
               key.is_dynamic: 1
             }
           ]
@@ -827,16 +827,16 @@
         {
           key.kind: source.lang.swift.ref.function.subscript,
           key.name: "subscript(_:)",
-          key.usr: "s:iC5index3CC29subscriptFSiSi",
+          key.usr: "s:5index3CC2C9subscriptSiSici",
           key.line: 96,
           key.column: 10,
           key.entities: [
             {
               key.kind: source.lang.swift.ref.function.accessor.getter,
-              key.usr: "s:FC5index3CC2g9subscriptFSiSi",
+              key.usr: "s:5index3CC2C9subscriptSiSicfg",
               key.line: 96,
               key.column: 10,
-              key.receiver_usr: "s:C5index3CC2",
+              key.receiver_usr: "s:5index3CC2C",
               key.is_dynamic: 1
             }
           ]
@@ -844,16 +844,16 @@
         {
           key.kind: source.lang.swift.ref.function.subscript,
           key.name: "subscript(_:)",
-          key.usr: "s:iC5index3CC29subscriptFSiSi",
+          key.usr: "s:5index3CC2C9subscriptSiSici",
           key.line: 97,
           key.column: 6,
           key.entities: [
             {
               key.kind: source.lang.swift.ref.function.accessor.setter,
-              key.usr: "s:FC5index3CC2s9subscriptFSiSi",
+              key.usr: "s:5index3CC2C9subscriptSiSicfs",
               key.line: 97,
               key.column: 6,
-              key.receiver_usr: "s:C5index3CC2",
+              key.receiver_usr: "s:5index3CC2C",
               key.is_dynamic: 1
             }
           ]
@@ -861,31 +861,31 @@
         {
           key.kind: source.lang.swift.ref.function.operator.prefix,
           key.name: "++(_:)",
-          key.usr: "s:Fsop2ppFRSiSi",
+          key.usr: "s:s2ppopSiSizF",
           key.line: 98,
           key.column: 3
         },
         {
           key.kind: source.lang.swift.ref.function.subscript,
           key.name: "subscript(_:)",
-          key.usr: "s:iC5index3CC29subscriptFSiSi",
+          key.usr: "s:5index3CC2C9subscriptSiSici",
           key.line: 98,
           key.column: 8,
           key.entities: [
             {
               key.kind: source.lang.swift.ref.function.accessor.getter,
-              key.usr: "s:FC5index3CC2g9subscriptFSiSi",
+              key.usr: "s:5index3CC2C9subscriptSiSicfg",
               key.line: 98,
               key.column: 8,
-              key.receiver_usr: "s:C5index3CC2",
+              key.receiver_usr: "s:5index3CC2C",
               key.is_dynamic: 1
             },
             {
               key.kind: source.lang.swift.ref.function.accessor.setter,
-              key.usr: "s:FC5index3CC2s9subscriptFSiSi",
+              key.usr: "s:5index3CC2C9subscriptSiSicfs",
               key.line: 98,
               key.column: 8,
-              key.receiver_usr: "s:C5index3CC2",
+              key.receiver_usr: "s:5index3CC2C",
               key.is_dynamic: 1
             }
           ]
@@ -895,14 +895,14 @@
     {
       key.kind: source.lang.swift.decl.struct,
       key.name: "S2",
-      key.usr: "s:V5index2S2",
+      key.usr: "s:5index2S2V",
       key.line: 101,
       key.column: 8,
       key.entities: [
         {
           key.kind: source.lang.swift.decl.function.method.instance,
           key.name: "sfoo()",
-          key.usr: "s:FV5index2S24sfooFT_T_",
+          key.usr: "s:5index2S2V4sfooyyF",
           key.line: 102,
           key.column: 8
         }
@@ -911,21 +911,21 @@
     {
       key.kind: source.lang.swift.decl.var.global,
       key.name: "globReadOnly",
-      key.usr: "s:v5index12globReadOnlyVS_2S2",
+      key.usr: "s:5index12globReadOnlyAA2S2Vv",
       key.line: 105,
       key.column: 5,
       key.entities: [
         {
           key.kind: source.lang.swift.decl.function.accessor.getter,
           key.name: "getter:globReadOnly",
-          key.usr: "s:F5indexg12globReadOnlyVS_2S2",
+          key.usr: "s:5index12globReadOnlyAA2S2Vfg",
           key.line: 106,
           key.column: 3,
           key.entities: [
             {
               key.kind: source.lang.swift.ref.struct,
               key.name: "S2",
-              key.usr: "s:V5index2S2",
+              key.usr: "s:5index2S2V",
               key.line: 107,
               key.column: 12
             }
@@ -936,27 +936,27 @@
     {
       key.kind: source.lang.swift.ref.struct,
       key.name: "S2",
-      key.usr: "s:V5index2S2",
+      key.usr: "s:5index2S2V",
       key.line: 105,
       key.column: 20
     },
     {
       key.kind: source.lang.swift.decl.function.free,
       key.name: "test2()",
-      key.usr: "s:F5index5test2FT_T_",
+      key.usr: "s:5index5test2yyF",
       key.line: 111,
       key.column: 6,
       key.entities: [
         {
           key.kind: source.lang.swift.ref.var.global,
           key.name: "globReadOnly",
-          key.usr: "s:v5index12globReadOnlyVS_2S2",
+          key.usr: "s:5index12globReadOnlyAA2S2Vv",
           key.line: 112,
           key.column: 3,
           key.entities: [
             {
               key.kind: source.lang.swift.ref.function.accessor.getter,
-              key.usr: "s:F5indexg12globReadOnlyVS_2S2",
+              key.usr: "s:5index12globReadOnlyAA2S2Vfg",
               key.line: 112,
               key.column: 3
             }
@@ -965,24 +965,24 @@
         {
           key.kind: source.lang.swift.ref.function.method.instance,
           key.name: "sfoo()",
-          key.usr: "s:FV5index2S24sfooFT_T_",
+          key.usr: "s:5index2S2V4sfooyyF",
           key.line: 112,
           key.column: 16,
-          key.receiver_usr: "s:V5index2S2"
+          key.receiver_usr: "s:5index2S2V"
         }
       ]
     },
     {
       key.kind: source.lang.swift.decl.class,
       key.name: "B1",
-      key.usr: "s:C5index2B1",
+      key.usr: "s:5index2B1C",
       key.line: 115,
       key.column: 7,
       key.entities: [
         {
           key.kind: source.lang.swift.decl.function.method.instance,
           key.name: "foo()",
-          key.usr: "s:FC5index2B13fooFT_T_",
+          key.usr: "s:5index2B1C3fooyyF",
           key.line: 116,
           key.column: 8
         }
@@ -991,14 +991,14 @@
     {
       key.kind: source.lang.swift.decl.class,
       key.name: "SB1",
-      key.usr: "s:C5index3SB1",
+      key.usr: "s:5index3SB1C",
       key.line: 119,
       key.column: 7,
       key.related: [
         {
           key.kind: source.lang.swift.ref.class,
           key.name: "B1",
-          key.usr: "s:C5index2B1",
+          key.usr: "s:5index2B1C",
           key.line: 119,
           key.column: 13
         }
@@ -1007,49 +1007,49 @@
         {
           key.kind: source.lang.swift.ref.class,
           key.name: "B1",
-          key.usr: "s:C5index2B1",
+          key.usr: "s:5index2B1C",
           key.line: 119,
           key.column: 13
         },
         {
           key.kind: source.lang.swift.decl.function.method.instance,
           key.name: "foo()",
-          key.usr: "s:FC5index3SB13fooFT_T_",
+          key.usr: "s:5index3SB1C3fooyyF",
           key.line: 120,
           key.column: 17,
           key.related: [
             {
               key.kind: source.lang.swift.ref.function.method.instance,
               key.name: "foo()",
-              key.usr: "s:FC5index2B13fooFT_T_"
+              key.usr: "s:5index2B1C3fooyyF"
             }
           ],
           key.entities: [
             {
               key.kind: source.lang.swift.ref.function.method.instance,
               key.name: "foo()",
-              key.usr: "s:FC5index3SB13fooFT_T_",
+              key.usr: "s:5index3SB1C3fooyyF",
               key.line: 121,
               key.column: 5,
-              key.receiver_usr: "s:C5index3SB1",
+              key.receiver_usr: "s:5index3SB1C",
               key.is_dynamic: 1
             },
             {
               key.kind: source.lang.swift.ref.function.method.instance,
               key.name: "foo()",
-              key.usr: "s:FC5index3SB13fooFT_T_",
+              key.usr: "s:5index3SB1C3fooyyF",
               key.line: 122,
               key.column: 10,
-              key.receiver_usr: "s:C5index3SB1",
+              key.receiver_usr: "s:5index3SB1C",
               key.is_dynamic: 1
             },
             {
               key.kind: source.lang.swift.ref.function.method.instance,
               key.name: "foo()",
-              key.usr: "s:FC5index2B13fooFT_T_",
+              key.usr: "s:5index2B1C3fooyyF",
               key.line: 123,
               key.column: 11,
-              key.receiver_usr: "s:C5index2B1"
+              key.receiver_usr: "s:5index2B1C"
             }
           ],
           key.attributes: [
@@ -1063,68 +1063,68 @@
     {
       key.kind: source.lang.swift.decl.function.free,
       key.name: "test3(_:s:)",
-      key.usr: "s:F5index5test3FTCS_3SB11sVS_2S2_T_",
+      key.usr: "s:5index5test3yAA3SB1C_AA2S2V1stF",
       key.line: 127,
       key.column: 6,
       key.entities: [
         {
           key.kind: source.lang.swift.ref.class,
           key.name: "SB1",
-          key.usr: "s:C5index3SB1",
+          key.usr: "s:5index3SB1C",
           key.line: 127,
           key.column: 17
         },
         {
           key.kind: source.lang.swift.ref.struct,
           key.name: "S2",
-          key.usr: "s:V5index2S2",
+          key.usr: "s:5index2S2V",
           key.line: 127,
           key.column: 25
         },
         {
           key.kind: source.lang.swift.ref.function.free,
           key.name: "test2()",
-          key.usr: "s:F5index5test2FT_T_",
+          key.usr: "s:5index5test2yyF",
           key.line: 128,
           key.column: 3
         },
         {
           key.kind: source.lang.swift.ref.function.method.instance,
           key.name: "foo()",
-          key.usr: "s:FC5index3SB13fooFT_T_",
+          key.usr: "s:5index3SB1C3fooyyF",
           key.line: 129,
           key.column: 5,
-          key.receiver_usr: "s:C5index3SB1",
+          key.receiver_usr: "s:5index3SB1C",
           key.is_dynamic: 1
         },
         {
           key.kind: source.lang.swift.ref.function.method.instance,
           key.name: "sfoo()",
-          key.usr: "s:FV5index2S24sfooFT_T_",
+          key.usr: "s:5index2S2V4sfooyyF",
           key.line: 130,
           key.column: 5,
-          key.receiver_usr: "s:V5index2S2"
+          key.receiver_usr: "s:5index2S2V"
         }
       ]
     },
     {
       key.kind: source.lang.swift.decl.function.method.instance,
       key.name: "meth()",
-      key.usr: "s:F5index4methERR",
+      key.usr: "s:5index4methXeF",
       key.line: 134,
       key.column: 8
     },
     {
       key.kind: source.lang.swift.decl.class,
       key.name: "CC4",
-      key.usr: "s:C5index3CC4",
+      key.usr: "s:5index3CC4C",
       key.line: 137,
       key.column: 7,
       key.entities: [
         {
           key.kind: source.lang.swift.decl.function.constructor,
           key.name: "init(x:)",
-          key.usr: "s:FC5index3CC4cFT1xSi_S0_",
+          key.usr: "s:5index3CC4CACSi1x_tcfc",
           key.line: 138,
           key.column: 15,
           key.entities: [
@@ -1138,10 +1138,10 @@
             {
               key.kind: source.lang.swift.ref.function.constructor,
               key.name: "init(x:)",
-              key.usr: "s:FC5index3CC4cFT1xSi_S0_",
+              key.usr: "s:5index3CC4CACSi1x_tcfc",
               key.line: 139,
               key.column: 10,
-              key.receiver_usr: "s:C5index3CC4",
+              key.receiver_usr: "s:5index3CC4C",
               key.is_dynamic: 1
             }
           ],
@@ -1156,14 +1156,14 @@
     {
       key.kind: source.lang.swift.decl.class,
       key.name: "SubCC4",
-      key.usr: "s:C5index6SubCC4",
+      key.usr: "s:5index6SubCC4C",
       key.line: 143,
       key.column: 7,
       key.related: [
         {
           key.kind: source.lang.swift.ref.class,
           key.name: "CC4",
-          key.usr: "s:C5index3CC4",
+          key.usr: "s:5index3CC4C",
           key.line: 143,
           key.column: 16
         }
@@ -1172,21 +1172,21 @@
         {
           key.kind: source.lang.swift.ref.class,
           key.name: "CC4",
-          key.usr: "s:C5index3CC4",
+          key.usr: "s:5index3CC4C",
           key.line: 143,
           key.column: 16
         },
         {
           key.kind: source.lang.swift.decl.function.constructor,
           key.name: "init(x:)",
-          key.usr: "s:FC5index6SubCC4cFT1xSi_S0_",
+          key.usr: "s:5index6SubCC4CACSi1x_tcfc",
           key.line: 144,
           key.column: 3,
           key.related: [
             {
               key.kind: source.lang.swift.ref.function.constructor,
               key.name: "init(x:)",
-              key.usr: "s:FC5index3CC4cFT1xSi_S0_"
+              key.usr: "s:5index3CC4CACSi1x_tcfc"
             }
           ],
           key.entities: [
@@ -1200,10 +1200,10 @@
             {
               key.kind: source.lang.swift.ref.function.constructor,
               key.name: "init(x:)",
-              key.usr: "s:FC5index3CC4cFT1xSi_S0_",
+              key.usr: "s:5index3CC4CACSi1x_tcfc",
               key.line: 145,
               key.column: 11,
-              key.receiver_usr: "s:C5index3CC4"
+              key.receiver_usr: "s:5index3CC4C"
             }
           ]
         }
@@ -1212,35 +1212,35 @@
     {
       key.kind: source.lang.swift.decl.class,
       key.name: "Observing",
-      key.usr: "s:C5index9Observing",
+      key.usr: "s:5index9ObservingC",
       key.line: 149,
       key.column: 7,
       key.entities: [
         {
           key.kind: source.lang.swift.decl.function.constructor,
           key.name: "init()",
-          key.usr: "s:FC5index9ObservingcFT_S0_",
+          key.usr: "s:5index9ObservingCACycfc",
           key.line: 150,
           key.column: 3
         },
         {
           key.kind: source.lang.swift.decl.var.instance,
           key.name: "globObserving",
-          key.usr: "s:vC5index9Observing13globObservingSi",
+          key.usr: "s:5index9ObservingC04globB0Siv",
           key.line: 151,
           key.column: 7,
           key.entities: [
             {
               key.kind: source.lang.swift.decl.function.accessor.willset,
               key.name: "willSet:globObserving",
-              key.usr: "s:FC5index9Observingw13globObservingSi",
+              key.usr: "s:5index9ObservingC04globB0Sifw",
               key.line: 152,
               key.column: 5,
               key.entities: [
                 {
                   key.kind: source.lang.swift.ref.function.free,
                   key.name: "test2()",
-                  key.usr: "s:F5index5test2FT_T_",
+                  key.usr: "s:5index5test2yyF",
                   key.line: 153,
                   key.column: 7
                 }
@@ -1254,14 +1254,14 @@
             {
               key.kind: source.lang.swift.decl.function.accessor.didset,
               key.name: "didSet:globObserving",
-              key.usr: "s:FC5index9ObservingW13globObservingSi",
+              key.usr: "s:5index9ObservingC04globB0SifW",
               key.line: 155,
               key.column: 5,
               key.entities: [
                 {
                   key.kind: source.lang.swift.ref.function.free,
                   key.name: "test2()",
-                  key.usr: "s:F5index5test2FT_T_",
+                  key.usr: "s:5index5test2yyF",
                   key.line: 156,
                   key.column: 7
                 }
@@ -1286,21 +1286,21 @@
     {
       key.kind: source.lang.swift.decl.class,
       key.name: "rdar18640140",
-      key.usr: "s:C5index12rdar18640140",
+      key.usr: "s:5index12rdar18640140C",
       key.line: 162,
       key.column: 7,
       key.entities: [
         {
           key.kind: source.lang.swift.decl.var.instance,
           key.name: "S1",
-          key.usr: "s:vC5index12rdar186401402S1Si",
+          key.usr: "s:5index12rdar18640140C2S1Siv",
           key.line: 164,
           key.column: 7,
           key.entities: [
             {
               key.kind: source.lang.swift.decl.function.accessor.didset,
               key.name: "didSet:S1",
-              key.usr: "s:FC5index12rdar18640140W2S1Si",
+              key.usr: "s:5index12rdar18640140C2S1SifW",
               key.line: 170,
               key.column: 5,
               key.attributes: [
@@ -1323,28 +1323,28 @@
     {
       key.kind: source.lang.swift.decl.protocol,
       key.name: "rdar18640140Protocol",
-      key.usr: "s:P5index20rdar18640140Protocol",
+      key.usr: "s:5index20rdar18640140ProtocolP",
       key.line: 175,
       key.column: 10,
       key.entities: [
         {
           key.kind: source.lang.swift.decl.var.instance,
           key.name: "S1",
-          key.usr: "s:vP5index20rdar18640140Protocol2S1Si",
+          key.usr: "s:5index20rdar18640140ProtocolP2S1Siv",
           key.line: 176,
           key.column: 7,
           key.entities: [
             {
               key.kind: source.lang.swift.decl.function.accessor.getter,
               key.name: "getter:S1",
-              key.usr: "s:FP5index20rdar18640140Protocolg2S1Si",
+              key.usr: "s:5index20rdar18640140ProtocolP2S1Sifg",
               key.line: 179,
               key.column: 5
             },
             {
               key.kind: source.lang.swift.decl.function.accessor.setter,
               key.name: "setter:S1",
-              key.usr: "s:FP5index20rdar18640140Protocols2S1Si",
+              key.usr: "s:5index20rdar18640140ProtocolP2S1Sifs",
               key.line: 178,
               key.column: 5
             }
@@ -1362,7 +1362,7 @@
     {
       key.kind: source.lang.swift.decl.class,
       key.name: "ConditionalUnavailableClass1",
-      key.usr: "s:C5index28ConditionalUnavailableClass1",
+      key.usr: "s:5index28ConditionalUnavailableClass1C",
       key.line: 188,
       key.column: 7,
       key.attributes: [
@@ -1374,7 +1374,7 @@
     {
       key.kind: source.lang.swift.decl.class,
       key.name: "ConditionalUnavailableClass2",
-      key.usr: "s:C5index28ConditionalUnavailableClass2",
+      key.usr: "s:5index28ConditionalUnavailableClass2C",
       key.line: 192,
       key.column: 7,
       key.attributes: [
diff --git a/test/SourceKit/Indexing/index_bad_modulename.swift.response b/test/SourceKit/Indexing/index_bad_modulename.swift.response
index e9d56ba..72fb193 100644
--- a/test/SourceKit/Indexing/index_bad_modulename.swift.response
+++ b/test/SourceKit/Indexing/index_bad_modulename.swift.response
@@ -13,19 +13,19 @@
     {
       key.kind: source.lang.swift.decl.var.global,
       key.name: "v",
-      key.usr: "s:v4main1vGSqCSo8NSObject_",
+      key.usr: "s:4main1vSo8NSObjectCSgv",
       key.line: 7,
       key.column: 5,
       key.entities: [
         {
           key.kind: source.lang.swift.decl.function.accessor.getter,
-          key.usr: "s:F4maing1vGSqCSo8NSObject_",
+          key.usr: "s:4main1vSo8NSObjectCSgfg",
           key.line: 7,
           key.column: 5
         },
         {
           key.kind: source.lang.swift.decl.function.accessor.setter,
-          key.usr: "s:F4mains1vGSqCSo8NSObject_",
+          key.usr: "s:4main1vSo8NSObjectCSgfs",
           key.line: 7,
           key.column: 5
         }
diff --git a/test/SourceKit/Indexing/index_big_array.swift.response b/test/SourceKit/Indexing/index_big_array.swift.response
index a9af906..dfee985 100644
--- a/test/SourceKit/Indexing/index_big_array.swift.response
+++ b/test/SourceKit/Indexing/index_big_array.swift.response
@@ -13,19 +13,19 @@
     {
       key.kind: source.lang.swift.decl.var.global,
       key.name: "gCubeVertexData",
-      key.usr: "s:v9big_array15gCubeVertexDataGSaSf_",
+      key.usr: "s:9big_array15gCubeVertexDataSaySfGv",
       key.line: 1,
       key.column: 5,
       key.entities: [
         {
           key.kind: source.lang.swift.decl.function.accessor.getter,
-          key.usr: "s:F9big_arrayg15gCubeVertexDataGSaSf_",
+          key.usr: "s:9big_array15gCubeVertexDataSaySfGfg",
           key.line: 1,
           key.column: 5
         },
         {
           key.kind: source.lang.swift.decl.function.accessor.setter,
-          key.usr: "s:F9big_arrays15gCubeVertexDataGSaSf_",
+          key.usr: "s:9big_array15gCubeVertexDataSaySfGfs",
           key.line: 1,
           key.column: 5
         }
diff --git a/test/SourceKit/Indexing/index_enum_case.swift.response b/test/SourceKit/Indexing/index_enum_case.swift.response
index 3faa56b..f3fb244 100644
--- a/test/SourceKit/Indexing/index_enum_case.swift.response
+++ b/test/SourceKit/Indexing/index_enum_case.swift.response
@@ -13,21 +13,21 @@
     {
       key.kind: source.lang.swift.decl.enum,
       key.name: "E",
-      key.usr: "s:O15index_enum_case1E",
+      key.usr: "s:15index_enum_case1EO",
       key.line: 4,
       key.column: 13,
       key.entities: [
         {
           key.kind: source.lang.swift.decl.enumelement,
           key.name: "one",
-          key.usr: "s:FO15index_enum_case1E3oneFMS0_S0_",
+          key.usr: "s:15index_enum_case1EO3oneAcCmF",
           key.line: 6,
           key.column: 10
         },
         {
           key.kind: source.lang.swift.decl.enumelement,
           key.name: "two",
-          key.usr: "s:FO15index_enum_case1E3twoFMS0_FT1aSS_S0_",
+          key.usr: "s:15index_enum_case1EO3twoACSS1a_tcACmF",
           key.line: 6,
           key.column: 15,
           key.entities: [
@@ -43,42 +43,42 @@
         {
           key.kind: source.lang.swift.decl.enumelement,
           key.name: "three",
-          key.usr: "s:FO15index_enum_case1E5threeFMS0_S0_",
+          key.usr: "s:15index_enum_case1EO5threeAcCmF",
           key.line: 6,
           key.column: 31
         },
         {
           key.kind: source.lang.swift.decl.var.instance,
           key.name: "text",
-          key.usr: "s:vO15index_enum_case1E4textSS",
+          key.usr: "s:15index_enum_case1EO4textSSv",
           key.line: 8,
           key.column: 9,
           key.entities: [
             {
               key.kind: source.lang.swift.decl.function.accessor.getter,
               key.name: "getter:text",
-              key.usr: "s:FO15index_enum_case1Eg4textSS",
+              key.usr: "s:15index_enum_case1EO4textSSfg",
               key.line: 8,
               key.column: 22,
               key.entities: [
                 {
                   key.kind: source.lang.swift.ref.enumelement,
                   key.name: "one",
-                  key.usr: "s:FO15index_enum_case1E3oneFMS0_S0_",
+                  key.usr: "s:15index_enum_case1EO3oneAcCmF",
                   key.line: 10,
                   key.column: 15
                 },
                 {
                   key.kind: source.lang.swift.ref.enumelement,
                   key.name: "two",
-                  key.usr: "s:FO15index_enum_case1E3twoFMS0_FT1aSS_S0_",
+                  key.usr: "s:15index_enum_case1EO3twoACSS1a_tcACmF",
                   key.line: 12,
                   key.column: 15
                 },
                 {
                   key.kind: source.lang.swift.ref.enumelement,
                   key.name: "three",
-                  key.usr: "s:FO15index_enum_case1E5threeFMS0_S0_",
+                  key.usr: "s:15index_enum_case1EO5threeAcCmF",
                   key.line: 14,
                   key.column: 15
                 }
@@ -98,19 +98,19 @@
     {
       key.kind: source.lang.swift.decl.var.global,
       key.name: "e",
-      key.usr: "s:v15index_enum_case1eOS_1E",
+      key.usr: "s:15index_enum_case1eAA1EOv",
       key.line: 21,
       key.column: 5,
       key.entities: [
         {
           key.kind: source.lang.swift.decl.function.accessor.getter,
-          key.usr: "s:F15index_enum_caseg1eOS_1E",
+          key.usr: "s:15index_enum_case1eAA1EOfg",
           key.line: 21,
           key.column: 5
         },
         {
           key.kind: source.lang.swift.decl.function.accessor.setter,
-          key.usr: "s:F15index_enum_cases1eOS_1E",
+          key.usr: "s:15index_enum_case1eAA1EOfs",
           key.line: 21,
           key.column: 5
         }
@@ -119,35 +119,35 @@
     {
       key.kind: source.lang.swift.ref.enum,
       key.name: "E",
-      key.usr: "s:O15index_enum_case1E",
+      key.usr: "s:15index_enum_case1EO",
       key.line: 21,
       key.column: 8
     },
     {
       key.kind: source.lang.swift.ref.enumelement,
       key.name: "two",
-      key.usr: "s:FO15index_enum_case1E3twoFMS0_FT1aSS_S0_",
+      key.usr: "s:15index_enum_case1EO3twoACSS1a_tcACmF",
       key.line: 21,
       key.column: 13
     },
     {
       key.kind: source.lang.swift.decl.function.free,
       key.name: "brokenEnums()",
-      key.usr: "s:F15index_enum_case11brokenEnumsFT_T_",
+      key.usr: "s:15index_enum_case11brokenEnumsyyF",
       key.line: 23,
       key.column: 6,
       key.entities: [
         {
           key.kind: source.lang.swift.ref.enum,
           key.name: "E",
-          key.usr: "s:O15index_enum_case1E",
+          key.usr: "s:15index_enum_case1EO",
           key.line: 28,
           key.column: 10
         },
         {
           key.kind: source.lang.swift.ref.enumelement,
           key.name: "one",
-          key.usr: "s:FO15index_enum_case1E3oneFMS0_S0_",
+          key.usr: "s:15index_enum_case1EO3oneAcCmF",
           key.line: 28,
           key.column: 12
         }
diff --git a/test/SourceKit/Indexing/index_forbid_typecheck.swift.response b/test/SourceKit/Indexing/index_forbid_typecheck.swift.response
index 2cae250..f6b0b58 100644
--- a/test/SourceKit/Indexing/index_forbid_typecheck.swift.response
+++ b/test/SourceKit/Indexing/index_forbid_typecheck.swift.response
@@ -13,19 +13,19 @@
     {
       key.kind: source.lang.swift.decl.var.global,
       key.name: "globalPrim",
-      key.usr: "s:v18forbid_typecheck_210globalPrimSi",
+      key.usr: "s:18forbid_typecheck_210globalPrimSiv",
       key.line: 1,
       key.column: 5,
       key.entities: [
         {
           key.kind: source.lang.swift.decl.function.accessor.getter,
-          key.usr: "s:F18forbid_typecheck_2g10globalPrimSi",
+          key.usr: "s:18forbid_typecheck_210globalPrimSifg",
           key.line: 1,
           key.column: 5
         },
         {
           key.kind: source.lang.swift.decl.function.accessor.setter,
-          key.usr: "s:F18forbid_typecheck_2s10globalPrimSi",
+          key.usr: "s:18forbid_typecheck_210globalPrimSifs",
           key.line: 1,
           key.column: 5
         }
@@ -34,35 +34,35 @@
     {
       key.kind: source.lang.swift.ref.var.global,
       key.name: "globalSec",
-      key.usr: "s:v18forbid_typecheck_29globalSecSi",
+      key.usr: "s:18forbid_typecheck_29globalSecSiv",
       key.line: 1,
       key.column: 18
     },
     {
       key.kind: source.lang.swift.decl.function.free,
       key.name: "primFn()",
-      key.usr: "s:F18forbid_typecheck_26primFnFT_T_",
+      key.usr: "s:18forbid_typecheck_26primFnyyF",
       key.line: 3,
       key.column: 6,
       key.entities: [
         {
           key.kind: source.lang.swift.ref.function.free,
           key.name: "secFn()",
-          key.usr: "s:F18forbid_typecheck_25secFnFT_T_",
+          key.usr: "s:18forbid_typecheck_25secFnyyF",
           key.line: 4,
           key.column: 3
         },
         {
           key.kind: source.lang.swift.ref.class,
           key.name: "ClsSec",
-          key.usr: "s:C18forbid_typecheck_26ClsSec",
+          key.usr: "s:18forbid_typecheck_26ClsSecC",
           key.line: 5,
           key.column: 11
         },
         {
           key.kind: source.lang.swift.ref.var.instance,
           key.name: "member",
-          key.usr: "s:vC18forbid_typecheck_26ClsSec6memberSi",
+          key.usr: "s:18forbid_typecheck_26ClsSecC6memberSiv",
           key.line: 5,
           key.column: 20
         }
diff --git a/test/SourceKit/Indexing/index_func_import.swift.response b/test/SourceKit/Indexing/index_func_import.swift.response
index 4a120de..353f897 100644
--- a/test/SourceKit/Indexing/index_func_import.swift.response
+++ b/test/SourceKit/Indexing/index_func_import.swift.response
@@ -28,21 +28,21 @@
     {
       key.kind: source.lang.swift.ref.function.free,
       key.name: "globalFunc()",
-      key.usr: "s:F11test_module10globalFuncFT_T_",
+      key.usr: "s:11test_module10globalFuncyyF",
       key.line: 8,
       key.column: 25
     },
     {
       key.kind: source.lang.swift.decl.function.free,
       key.name: "test()",
-      key.usr: "s:F17index_func_import4testFT_T_",
+      key.usr: "s:17index_func_import4testyyF",
       key.line: 10,
       key.column: 6,
       key.entities: [
         {
           key.kind: source.lang.swift.ref.function.free,
           key.name: "globalFunc()",
-          key.usr: "s:F11test_module10globalFuncFT_T_",
+          key.usr: "s:11test_module10globalFuncyyF",
           key.line: 11,
           key.column: 3
         }
diff --git a/test/SourceKit/Indexing/index_is_test_candidate_objc.swift.response b/test/SourceKit/Indexing/index_is_test_candidate_objc.swift.response
index 9dfb1ee..fc8ec15 100644
--- a/test/SourceKit/Indexing/index_is_test_candidate_objc.swift.response
+++ b/test/SourceKit/Indexing/index_is_test_candidate_objc.swift.response
@@ -13,21 +13,21 @@
     {
       key.kind: source.lang.swift.decl.function.free,
       key.name: "test_takesNoParams_andReturnsVoid_butIsNotAnInstanceMethod()",
-      key.usr: "s:F28index_is_test_candidate_objc58test_takesNoParams_andReturnsVoid_butIsNotAnInstanceMethodFT_T_",
+      key.usr: "s:28index_is_test_candidate_objc0C54_takesNoParams_andReturnsVoid_butIsNotAnInstanceMethodyyF",
       key.line: 9,
       key.column: 6
     },
     {
       key.kind: source.lang.swift.decl.struct,
       key.name: "MyStruct",
-      key.usr: "s:V28index_is_test_candidate_objc8MyStruct",
+      key.usr: "s:28index_is_test_candidate_objc8MyStructV",
       key.line: 11,
       key.column: 8,
       key.entities: [
         {
           key.kind: source.lang.swift.decl.function.method.instance,
           key.name: "test_startsWithTest_takesNoParams_returnsVoid_butIsDefinedOnAStruct()",
-          key.usr: "s:FV28index_is_test_candidate_objc8MyStruct67test_startsWithTest_takesNoParams_returnsVoid_butIsDefinedOnAStructFT_T_",
+          key.usr: "s:28index_is_test_candidate_objc8MyStructV0C63_startsWithTest_takesNoParams_returnsVoid_butIsDefinedOnAStructyyF",
           key.line: 12,
           key.column: 8
         }
@@ -36,21 +36,21 @@
     {
       key.kind: source.lang.swift.decl.class,
       key.name: "XCTestCase",
-      key.usr: "s:C28index_is_test_candidate_objc10XCTestCase",
+      key.usr: "s:28index_is_test_candidate_objc10XCTestCaseC",
       key.line: 14,
       key.column: 7
     },
     {
       key.kind: source.lang.swift.decl.class,
       key.name: "MyPrivateClass",
-      key.usr: "s:C28index_is_test_candidate_objcP33_32FED72643814BE1A523406CD2E729AA14MyPrivateClass",
+      key.usr: "s:28index_is_test_candidate_objc14MyPrivateClass33_32FED72643814BE1A523406CD2E729AALLC",
       key.line: 15,
       key.column: 15,
       key.related: [
         {
           key.kind: source.lang.swift.ref.class,
           key.name: "XCTestCase",
-          key.usr: "s:C28index_is_test_candidate_objc10XCTestCase",
+          key.usr: "s:28index_is_test_candidate_objc10XCTestCaseC",
           key.line: 15,
           key.column: 32
         }
@@ -59,14 +59,14 @@
         {
           key.kind: source.lang.swift.ref.class,
           key.name: "XCTestCase",
-          key.usr: "s:C28index_is_test_candidate_objc10XCTestCase",
+          key.usr: "s:28index_is_test_candidate_objc10XCTestCaseC",
           key.line: 15,
           key.column: 32
         },
         {
           key.kind: source.lang.swift.decl.function.method.instance,
           key.name: "test_startsWithTest_takesNoParams_returnsVoid_andIsPrivate()",
-          key.usr: "s:FC28index_is_test_candidate_objcP33_32FED72643814BE1A523406CD2E729AA14MyPrivateClass58test_startsWithTest_takesNoParams_returnsVoid_andIsPrivateFT_T_",
+          key.usr: "s:28index_is_test_candidate_objc14MyPrivateClass33_32FED72643814BE1A523406CD2E729AALLC0c47_startsWithTest_takesNoParams_returnsVoid_andIsG0yyF",
           key.line: 16,
           key.column: 8,
           key.is_test_candidate: 1
@@ -76,14 +76,14 @@
     {
       key.kind: source.lang.swift.decl.class,
       key.name: "MyClass",
-      key.usr: "s:C28index_is_test_candidate_objc7MyClass",
+      key.usr: "s:28index_is_test_candidate_objc7MyClassC",
       key.line: 19,
       key.column: 14,
       key.related: [
         {
           key.kind: source.lang.swift.ref.class,
           key.name: "XCTestCase",
-          key.usr: "s:C28index_is_test_candidate_objc10XCTestCase",
+          key.usr: "s:28index_is_test_candidate_objc10XCTestCaseC",
           key.line: 19,
           key.column: 24
         }
@@ -92,21 +92,21 @@
         {
           key.kind: source.lang.swift.ref.class,
           key.name: "XCTestCase",
-          key.usr: "s:C28index_is_test_candidate_objc10XCTestCase",
+          key.usr: "s:28index_is_test_candidate_objc10XCTestCaseC",
           key.line: 19,
           key.column: 24
         },
         {
           key.kind: source.lang.swift.decl.function.method.instance,
           key.name: "doesNotStartWithTest()",
-          key.usr: "s:FC28index_is_test_candidate_objc7MyClass20doesNotStartWithTestFT_T_",
+          key.usr: "s:28index_is_test_candidate_objc7MyClassC20doesNotStartWithTestyyF",
           key.line: 20,
           key.column: 8
         },
         {
           key.kind: source.lang.swift.decl.function.method.instance,
           key.name: "test_startsWithTest_butTakesAParam(param:)",
-          key.usr: "s:FC28index_is_test_candidate_objc7MyClass34test_startsWithTest_butTakesAParamFT5paramSi_T_",
+          key.usr: "s:28index_is_test_candidate_objc7MyClassC0C30_startsWithTest_butTakesAParamySi5param_tF",
           key.line: 21,
           key.column: 8,
           key.entities: [
@@ -122,7 +122,7 @@
         {
           key.kind: source.lang.swift.decl.function.method.instance,
           key.name: "test_startsWithTest_andTakesNoParams_butReturnsNonVoid()",
-          key.usr: "s:FC28index_is_test_candidate_objc7MyClass54test_startsWithTest_andTakesNoParams_butReturnsNonVoidFT_Si",
+          key.usr: "s:28index_is_test_candidate_objc7MyClassC0C50_startsWithTest_andTakesNoParams_butReturnsNonVoidSiyF",
           key.line: 22,
           key.column: 8,
           key.entities: [
@@ -138,7 +138,7 @@
         {
           key.kind: source.lang.swift.decl.function.method.instance,
           key.name: "test_startsWithTest_takesNoParams_returnsVoid_andIsPrivate()",
-          key.usr: "s:FC28index_is_test_candidate_objc7MyClassP33_32FED72643814BE1A523406CD2E729AA58test_startsWithTest_takesNoParams_returnsVoid_andIsPrivateFT_T_",
+          key.usr: "s:28index_is_test_candidate_objc7MyClassC0C54_startsWithTest_takesNoParams_returnsVoid_andIsPrivate33_32FED72643814BE1A523406CD2E729AALLyyF",
           key.line: 23,
           key.column: 16,
           key.is_test_candidate: 1
@@ -146,7 +146,7 @@
         {
           key.kind: source.lang.swift.decl.function.method.instance,
           key.name: "test_startsWithTest_takesNoParams_returnsVoid()",
-          key.usr: "s:FC28index_is_test_candidate_objc7MyClass45test_startsWithTest_takesNoParams_returnsVoidFT_T_",
+          key.usr: "s:28index_is_test_candidate_objc7MyClassC0C41_startsWithTest_takesNoParams_returnsVoidyyF",
           key.line: 24,
           key.column: 8,
           key.is_test_candidate: 1
@@ -154,7 +154,7 @@
         {
           key.kind: source.lang.swift.decl.function.method.instance,
           key.name: "test_startsWithTest_takesNoParams_returnsVoid_andThrows()",
-          key.usr: "s:FC28index_is_test_candidate_objc7MyClass55test_startsWithTest_takesNoParams_returnsVoid_andThrowsFzT_T_",
+          key.usr: "s:28index_is_test_candidate_objc7MyClassC0C51_startsWithTest_takesNoParams_returnsVoid_andThrowsyyKF",
           key.line: 25,
           key.column: 8,
           key.is_test_candidate: 1
diff --git a/test/SourceKit/Indexing/index_with_swift_module.swift b/test/SourceKit/Indexing/index_with_swift_module.swift
index 0921f35..d5911fb 100644
--- a/test/SourceKit/Indexing/index_with_swift_module.swift
+++ b/test/SourceKit/Indexing/index_with_swift_module.swift
@@ -24,7 +24,7 @@
 
 // CHECK:      key.kind: source.lang.swift.ref.class
 // CHECK-NEXT: key.name: "TwoInts"
-// CHECK-NEXT: key.usr: "s:C11test_module7TwoInts"
+// CHECK-NEXT: key.usr: "s:11test_module7TwoIntsC"
 
 // RUN: %sourcekitd-test -req=index %S/Inputs/Swift.swiftmodule | %FileCheck %s -check-prefix=CHECK-SWIFT1
 // CHECK-SWIFT1-DAG: key.groupname: "Bool"
diff --git a/test/SourceKit/Indexing/rdar_21602898.swift.response b/test/SourceKit/Indexing/rdar_21602898.swift.response
index 96695e2..320f151 100644
--- a/test/SourceKit/Indexing/rdar_21602898.swift.response
+++ b/test/SourceKit/Indexing/rdar_21602898.swift.response
@@ -13,14 +13,14 @@
     {
       key.kind: source.lang.swift.decl.protocol,
       key.name: "P",
-      key.usr: "s:P13rdar_216028981P",
+      key.usr: "s:13rdar_216028981PP",
       key.line: 4,
       key.column: 10
     },
     {
       key.kind: source.lang.swift.decl.class,
       key.name: "C",
-      key.usr: "s:C13rdar_216028981C",
+      key.usr: "s:13rdar_216028981CC",
       key.line: 5,
       key.column: 7
     }
diff --git a/test/SourceKit/Indexing/sr_3815.swift.response b/test/SourceKit/Indexing/sr_3815.swift.response
index dd37a88..8fc891f 100644
--- a/test/SourceKit/Indexing/sr_3815.swift.response
+++ b/test/SourceKit/Indexing/sr_3815.swift.response
@@ -13,14 +13,14 @@
     {
       key.kind: source.lang.swift.decl.protocol,
       key.name: "P",
-      key.usr: "s:P7sr_38151P",
+      key.usr: "s:7sr_38151PP",
       key.line: 4,
       key.column: 10,
       key.entities: [
         {
           key.kind: source.lang.swift.decl.typealias,
           key.name: "Index",
-          key.usr: "s:P7sr_38151P5Index",
+          key.usr: "s:7sr_38151PP5Index",
           key.line: 5,
           key.column: 13,
           key.entities: [
@@ -36,7 +36,7 @@
         {
           key.kind: source.lang.swift.decl.function.method.instance,
           key.name: "f()",
-          key.usr: "s:FP7sr_38151P1fFT_T_",
+          key.usr: "s:7sr_38151PP1fyyF",
           key.line: 6,
           key.column: 8
         }
@@ -45,14 +45,14 @@
     {
       key.kind: source.lang.swift.decl.struct,
       key.name: "S",
-      key.usr: "s:V7sr_38151S",
+      key.usr: "s:7sr_38151SV",
       key.line: 9,
       key.column: 8,
       key.related: [
         {
           key.kind: source.lang.swift.ref.protocol,
           key.name: "P",
-          key.usr: "s:P7sr_38151P",
+          key.usr: "s:7sr_38151PP",
           key.line: 9,
           key.column: 12
         }
@@ -61,14 +61,14 @@
         {
           key.kind: source.lang.swift.ref.protocol,
           key.name: "P",
-          key.usr: "s:P7sr_38151P",
+          key.usr: "s:7sr_38151PP",
           key.line: 9,
           key.column: 12
         },
         {
           key.kind: source.lang.swift.decl.typealias,
           key.name: "Index",
-          key.usr: "s:V7sr_38151S5Index",
+          key.usr: "s:7sr_38151SV5Index",
           key.line: 10,
           key.column: 13,
           key.entities: [
@@ -84,14 +84,14 @@
         {
           key.kind: source.lang.swift.decl.function.method.instance,
           key.name: "f()",
-          key.usr: "s:FV7sr_38151S1fFT_T_",
+          key.usr: "s:7sr_38151SV1fyyF",
           key.line: 12,
           key.column: 8,
           key.related: [
             {
               key.kind: source.lang.swift.ref.function.method.instance,
               key.name: "f()",
-              key.usr: "s:FP7sr_38151P1fFT_T_"
+              key.usr: "s:7sr_38151PP1fyyF"
             }
           ]
         }
diff --git a/test/SourceKit/InterfaceGen/gen_stdlib.swift b/test/SourceKit/InterfaceGen/gen_stdlib.swift
index bbb1803..c4fe9d6 100644
--- a/test/SourceKit/InterfaceGen/gen_stdlib.swift
+++ b/test/SourceKit/InterfaceGen/gen_stdlib.swift
@@ -38,7 +38,7 @@
 // CHECK1-NEXT: <Group>Math/Integers</Group>
 // CHECK1-NEXT: /<interface-gen>{{$}}
 // CHECK1-NEXT: SYSTEM
-// CHECK1-NEXT: <Declaration>struct Int : <Type usr="s:Ps13SignedInteger">SignedInteger</Type>{{.*}}{{.*}}<Type usr="s:Ps10Comparable">Comparable</Type>{{.*}}<Type usr="s:Ps9Equatable">Equatable</Type>{{.*}}</Declaration>
+// CHECK1-NEXT: <Declaration>struct Int : <Type usr="s:s13SignedIntegerP">SignedInteger</Type>{{.*}}{{.*}}<Type usr="s:s10ComparableP">Comparable</Type>{{.*}}<Type usr="s:s9EquatableP">Equatable</Type>{{.*}}</Declaration>
 
 // RUN: %sourcekitd-test -req=module-groups -module Swift | %FileCheck -check-prefix=GROUP1 %s
 // GROUP1: <GROUPS>
diff --git a/test/SourceKit/InterfaceGen/gen_swift_module.swift b/test/SourceKit/InterfaceGen/gen_swift_module.swift
index 92e751c..026db7c 100644
--- a/test/SourceKit/InterfaceGen/gen_swift_module.swift
+++ b/test/SourceKit/InterfaceGen/gen_swift_module.swift
@@ -16,12 +16,12 @@
 
 // RUN: %swift -emit-module -o %t.mod/swift_mod_syn.swiftmodule %S/Inputs/swift_mod_syn.swift -parse-as-library
 // RUN: %sourcekitd-test -req=interface-gen-open -module swift_mod_syn -- -I %t.mod == -req=cursor -pos=4:7 %s -- %s -I %t.mod | %FileCheck -check-prefix=SYNTHESIZED-USR1 %s
-// SYNTHESIZED-USR1: s:FesRxs17MutableCollectionxs22RandomAccessCollectionWxPs10Collection8Iterator7Element_s10ComparablerS_4sortFT_T_::SYNTHESIZED::s:Sa
+// SYNTHESIZED-USR1: s:s17MutableCollectionPssAARzs012RandomAccessB0Rzs10Comparable8Iterators0B0P_7ElementRPzlE4sortyyF::SYNTHESIZED::s:Sa
 
 // RUN: %sourcekitd-test -req=interface-gen-open -module Swift -synthesized-extension \
-// RUN: 	== -req=find-usr -usr "s:FesRxs17MutableCollectionxs22RandomAccessCollectionWxPs10Collection8Iterator7Element_s10ComparablerS_4sortFT_T_::SYNTHESIZED::s:Sa" | %FileCheck -check-prefix=SYNTHESIZED-USR2 %s
+// RUN: 	== -req=find-usr -usr "s:s17MutableCollectionPssAARzs012RandomAccessB0Rzs10Comparable8Iterators0B0P_7ElementRPzlE4sortyyF::SYNTHESIZED::s:Sa" | %FileCheck -check-prefix=SYNTHESIZED-USR2 %s
 // SYNTHESIZED-USR2-NOT: USR NOT FOUND
 
 // RUN: %sourcekitd-test -req=interface-gen-open -module Swift \
-// RUN: 	== -req=find-usr -usr "s:FesRxs17MutableCollectionxs22RandomAccessCollectionWxPs10Collection8Iterator7Element_s10ComparablerS_4sortFT_T_::SYNTHESIZED::USRDOESNOTEXIST" | %FileCheck -check-prefix=SYNTHESIZED-USR3 %s
+// RUN: 	== -req=find-usr -usr "s:s17MutableCollectionPssAARzs012RandomAccessB0Rzs10Comparable8Iterators0B0P_7ElementRPzlE4sortyyF::SYNTHESIZED::USRDOESNOTEXIST" | %FileCheck -check-prefix=SYNTHESIZED-USR3 %s
 // SYNTHESIZED-USR3-NOT: USR NOT FOUND
diff --git a/test/SourceKit/InterfaceGen/gen_swift_source.swift b/test/SourceKit/InterfaceGen/gen_swift_source.swift
index 56303a1..4d3f9cf 100644
--- a/test/SourceKit/InterfaceGen/gen_swift_source.swift
+++ b/test/SourceKit/InterfaceGen/gen_swift_source.swift
@@ -6,7 +6,7 @@
 // The cursor points to 'FooOverlayClassBase' inside the list of base classes, see 'gen_swift_source.swift.response'
 
 // CHECK1: FooOverlayClassBase
-// CHECK1: s:C4Foo219FooOverlayClassBase
+// CHECK1: s:4Foo219FooOverlayClassBaseC
 // CHECK1: FooOverlayClassBase.Type
 
 // RUN: %sourcekitd-test -req=interface-gen %S/Inputs/UnresolvedExtension.swift -- %S/Inputs/UnresolvedExtension.swift | %FileCheck -check-prefix=CHECK2 %s
diff --git a/test/SourceKit/Mixed/cursor_mixed.swift b/test/SourceKit/Mixed/cursor_mixed.swift
index 021178d..9fdd032 100644
--- a/test/SourceKit/Mixed/cursor_mixed.swift
+++ b/test/SourceKit/Mixed/cursor_mixed.swift
@@ -11,4 +11,4 @@
 // CHECK: c:objc(cs)Base(im)doIt:
 // CHECK: (Base) -> (Int32) -> ()
 // CHECK: Mixed
-// CHECK: <Declaration>func doIt(_ arg: <Type usr="s:Vs5Int32">Int32</Type>)</Declaration>
+// CHECK: <Declaration>func doIt(_ arg: <Type usr="s:s5Int32V">Int32</Type>)</Declaration>
diff --git a/test/SourceKit/Mixed/cursor_mixed_header.swift b/test/SourceKit/Mixed/cursor_mixed_header.swift
index 5cfa6c4..5198681 100644
--- a/test/SourceKit/Mixed/cursor_mixed_header.swift
+++ b/test/SourceKit/Mixed/cursor_mixed_header.swift
@@ -14,4 +14,4 @@
 // CHECK: doIt(_:)
 // CHECK: c:objc(cs)BaseInHead(im)doIt:
 // CHECK: (BaseInHead) -> (Int32) -> ()
-// CHECK: <Declaration>func doIt(_ arg: <Type usr="s:Vs5Int32">Int32</Type>)</Declaration>
+// CHECK: <Declaration>func doIt(_ arg: <Type usr="s:s5Int32V">Int32</Type>)</Declaration>
diff --git a/test/api-digester/Outputs/cake.json b/test/api-digester/Outputs/cake.json
index c19e01d..f6c973a 100644
--- a/test/api-digester/Outputs/cake.json
+++ b/test/api-digester/Outputs/cake.json
@@ -8,7 +8,7 @@
       "name": "S1",
       "printedName": "S1",
       "declKind": "Struct",
-      "usr": "s:V4cake2S1",
+      "usr": "s:4cake2S1V",
       "location": "",
       "moduleName": "cake",
       "children": [
@@ -17,7 +17,7 @@
           "name": "foo1",
           "printedName": "foo1()",
           "declKind": "Func",
-          "usr": "s:ZFV4cake2S14foo1FT_T_",
+          "usr": "s:4cake2S1V4foo1yyFZ",
           "location": "",
           "moduleName": "cake",
           "static": true,
@@ -34,7 +34,7 @@
           "name": "foo2",
           "printedName": "foo2()",
           "declKind": "Func",
-          "usr": "s:FV4cake2S14foo2FT_T_",
+          "usr": "s:4cake2S1V4foo2yyF",
           "location": "",
           "moduleName": "cake",
           "mutating": true,
@@ -51,7 +51,7 @@
           "name": "foo6",
           "printedName": "foo6()",
           "declKind": "Func",
-          "usr": "s:FV4cake2S14foo6FT_T_",
+          "usr": "s:4cake2S1V4foo6yyF",
           "location": "",
           "moduleName": "cake",
           "children": [
@@ -74,7 +74,7 @@
           "name": "init",
           "printedName": "init()",
           "declKind": "Constructor",
-          "usr": "s:FV4cake2S1cFT_S0_",
+          "usr": "s:4cake2S1VACycfc",
           "location": "",
           "moduleName": "cake",
           "children": [
@@ -92,7 +92,7 @@
       "name": "C1",
       "printedName": "C1",
       "declKind": "Class",
-      "usr": "s:C4cake2C1",
+      "usr": "s:4cake2C1C",
       "location": "",
       "moduleName": "cake",
       "children": [
@@ -101,7 +101,7 @@
           "name": "foo1",
           "printedName": "foo1()",
           "declKind": "Func",
-          "usr": "s:ZFC4cake2C14foo1FT_T_",
+          "usr": "s:4cake2C1C4foo1yyFZ",
           "location": "",
           "moduleName": "cake",
           "static": true,
@@ -118,7 +118,7 @@
           "name": "Ins",
           "printedName": "Ins",
           "declKind": "Var",
-          "usr": "s:vC4cake2C13InsXwGSqS0__",
+          "usr": "s:4cake2C1C3InsACSgXwv",
           "location": "",
           "moduleName": "cake",
           "ownership": 1,
@@ -133,7 +133,7 @@
               "name": "_",
               "printedName": "_()",
               "declKind": "Func",
-              "usr": "s:FC4cake2C1g3InsXwGSqS0__",
+              "usr": "s:4cake2C1C3InsACSgXwfg",
               "location": "",
               "moduleName": "cake",
               "children": [
@@ -161,7 +161,7 @@
               "name": "_",
               "printedName": "_()",
               "declKind": "Func",
-              "usr": "s:FC4cake2C1s3InsXwGSqS0__",
+              "usr": "s:4cake2C1C3InsACSgXwfs",
               "location": "",
               "moduleName": "cake",
               "children": [
@@ -196,7 +196,7 @@
           "name": "Ins2",
           "printedName": "Ins2",
           "declKind": "Var",
-          "usr": "s:vC4cake2C14Ins2XoS0_",
+          "usr": "s:4cake2C1C4Ins2ACXov",
           "location": "",
           "moduleName": "cake",
           "ownership": 2,
@@ -211,7 +211,7 @@
               "name": "_",
               "printedName": "_()",
               "declKind": "Func",
-              "usr": "s:FC4cake2C1g4Ins2XoS0_",
+              "usr": "s:4cake2C1C4Ins2ACXofg",
               "location": "",
               "moduleName": "cake",
               "children": [
@@ -232,7 +232,7 @@
               "name": "_",
               "printedName": "_()",
               "declKind": "Func",
-              "usr": "s:FC4cake2C1s4Ins2XoS0_",
+              "usr": "s:4cake2C1C4Ins2ACXofs",
               "location": "",
               "moduleName": "cake",
               "children": [
@@ -260,7 +260,7 @@
           "name": "init",
           "printedName": "init()",
           "declKind": "Constructor",
-          "usr": "s:FC4cake2C1cFT_S0_",
+          "usr": "s:4cake2C1CACycfc",
           "location": "",
           "moduleName": "cake",
           "children": [
diff --git a/test/decl/class/override.swift b/test/decl/class/override.swift
index 26be350..2396c86 100644
--- a/test/decl/class/override.swift
+++ b/test/decl/class/override.swift
@@ -277,3 +277,30 @@
   override func foo(ok: Ty) { }
   override func foo(ok: SubTy) { }
 }
+
+
+// Generic subscripts
+
+class GenericSubscriptBase {
+  var dict: [AnyHashable : Any] = [:]
+
+  subscript<T : Hashable, U>(t: T) -> U {
+    get {
+      return dict[t] as! U
+    }
+    set {
+      dict[t] = newValue
+    }
+  }
+}
+
+class GenericSubscriptDerived : GenericSubscriptBase {
+  override subscript<K : Hashable, V>(t: K) -> V {
+    get {
+      return super[t]
+    }
+    set {
+      super[t] = newValue
+    }
+  }
+}
diff --git a/test/decl/protocol/req/properties.swift b/test/decl/protocol/req/properties.swift
new file mode 100644
index 0000000..08f6746
--- /dev/null
+++ b/test/decl/protocol/req/properties.swift
@@ -0,0 +1,54 @@
+// RUN: %target-typecheck-verify-swift
+
+//===----------------------------------------------------------------------===//
+// Get-only property requirements
+//===----------------------------------------------------------------------===//
+
+protocol PropertyGet {
+  var x : Int { get }   // expected-note {{protocol requires property 'x' with type 'Int'}}
+}
+  
+class PropertyGet_Stored : PropertyGet {
+  var x : Int = 0  // ok
+}
+
+class PropertyGet_Immutable : PropertyGet {
+  let x : Int = 0 // ok.
+}
+
+class PropertyGet_ComputedGetSet : PropertyGet {
+  var x : Int { get { return 0 } set {} }  // ok
+}
+
+class PropertyGet_ComputedGet : PropertyGet {
+  var x : Int { return 0 }  // ok
+}
+
+struct PropertyGet_StaticVar : PropertyGet {  // expected-error {{type 'PropertyGet_StaticVar' does not conform to protocol 'PropertyGet'}}
+  static var x : Int = 42  // expected-note {{candidate operates on a type, not an instance as required}}
+}
+
+
+//===----------------------------------------------------------------------===//
+// Get-Set property requirements
+//===----------------------------------------------------------------------===//
+
+protocol PropertyGetSet {
+  var x : Int { get set }  // expected-note 2{{protocol requires property 'x' with type 'Int'}}
+}
+  
+class PropertyGetSet_Stored : PropertyGetSet {
+  var x : Int = 0  // ok
+}
+
+class PropertyGetSet_Immutable : PropertyGetSet {  // expected-error {{type 'PropertyGetSet_Immutable' does not conform to protocol 'PropertyGetSet'}}
+  let x : Int = 0  // expected-note {{candidate is not settable, but protocol requires it}}
+}
+
+class PropertyGetSet_ComputedGetSet : PropertyGetSet {
+  var x : Int { get { return 42 } set {} }  // ok
+}
+
+class PropertyGetSet_ComputedGet : PropertyGetSet {  // expected-error {{type 'PropertyGetSet_ComputedGet' does not conform to protocol 'PropertyGetSet'}}
+  var x : Int { return 42 }  // expected-note {{candidate is not settable, but protocol requires it}}
+}
diff --git a/test/decl/protocol/req/subscript.swift b/test/decl/protocol/req/subscript.swift
index 96cc801..dbe67b3 100644
--- a/test/decl/protocol/req/subscript.swift
+++ b/test/decl/protocol/req/subscript.swift
@@ -33,58 +33,6 @@
 
 
 //===----------------------------------------------------------------------===//
-// Get-only property requirements
-//===----------------------------------------------------------------------===//
-
-protocol PropertyGet {
-  var x : Int { get }   // expected-note {{protocol requires property 'x' with type 'Int'}}
-}
-  
-class PropertyGet_Stored : PropertyGet {
-  var x : Int = 0  // ok
-}
-
-class PropertyGet_Immutable : PropertyGet {
-  let x : Int = 0 // ok.
-}
-
-class PropertyGet_ComputedGetSet : PropertyGet {
-  var x : Int { get { return 0 } set {} }  // ok
-}
-
-class PropertyGet_ComputedGet : PropertyGet {
-  var x : Int { return 0 }  // ok
-}
-
-struct PropertyGet_StaticVar : PropertyGet {  // expected-error {{type 'PropertyGet_StaticVar' does not conform to protocol 'PropertyGet'}}
-  static var x : Int = 42  // expected-note {{candidate operates on a type, not an instance as required}}
-}
-
-//===----------------------------------------------------------------------===//
-// Get-Set property requirements
-//===----------------------------------------------------------------------===//
-
-protocol PropertyGetSet {
-  var x : Int { get set }  // expected-note 2{{protocol requires property 'x' with type 'Int'}}
-}
-  
-class PropertyGetSet_Stored : PropertyGetSet {
-  var x : Int = 0  // ok
-}
-
-class PropertyGetSet_Immutable : PropertyGetSet {  // expected-error {{type 'PropertyGetSet_Immutable' does not conform to protocol 'PropertyGetSet'}}
-  let x : Int = 0  // expected-note {{candidate is not settable, but protocol requires it}}
-}
-
-class PropertyGetSet_ComputedGetSet : PropertyGetSet {
-  var x : Int { get { return 42 } set {} }  // ok
-}
-
-class PropertyGetSet_ComputedGet : PropertyGetSet {  // expected-error {{type 'PropertyGetSet_ComputedGet' does not conform to protocol 'PropertyGetSet'}}
-  var x : Int { return 42 }  // expected-note {{candidate is not settable, but protocol requires it}}
-}
-
-//===----------------------------------------------------------------------===//
 // Get-only subscript requirements
 //===----------------------------------------------------------------------===//
 
@@ -119,3 +67,28 @@
   subscript(a : Int) -> Int { get { return 42 } set {} }  // ok
 }
 
+//===----------------------------------------------------------------------===//
+// Generic subscript requirements
+//===----------------------------------------------------------------------===//
+
+protocol Initable {
+  init()
+}
+
+protocol GenericSubscriptProtocol {
+  subscript<T : Initable>(t: T.Type) -> T { get set }
+  // expected-note@-1 {{protocol requires subscript with type '<T where T : Initable> (T.Type) -> T'; do you want to add a stub?}}
+}
+
+struct GenericSubscriptWitness : GenericSubscriptProtocol {
+  subscript<T : Initable>(t: T.Type) -> T {
+    get {
+      return t.init()
+    }
+
+    set { }
+  }
+}
+
+struct GenericSubscriptNoWitness : GenericSubscriptProtocol {}
+// expected-error@-1 {{type 'GenericSubscriptNoWitness' does not conform to protocol 'GenericSubscriptProtocol'}}
diff --git a/test/decl/subscript/generic.swift b/test/decl/subscript/generic.swift
new file mode 100644
index 0000000..da83c6f
--- /dev/null
+++ b/test/decl/subscript/generic.swift
@@ -0,0 +1,35 @@
+// RUN: %target-typecheck-verify-swift
+
+protocol Initable {
+  init()
+}
+
+struct ConcreteType {
+  let c: [Int]
+
+  // Generic index type
+  subscript<C : Collection>(indices: C) -> [Int]
+    where C.Iterator.Element == Int {
+    return indices.map { c[$0] }
+  }
+
+  // Generic element type
+  subscript<I : Initable>(factory: I.Type) -> I {
+    return factory.init()
+  }
+}
+
+struct GenericType<T : Collection> {
+  let c: T
+
+  // Generic index type
+  subscript<C : Collection>(indices: C) -> [T.Iterator.Element]
+    where C.Iterator.Element == T.Index {
+    return indices.map { c[$0] }
+  }
+
+  // Generic element type
+  subscript<I : Initable>(factory: I.Type) -> I {
+    return factory.init()
+  }
+}
diff --git a/unittests/Syntax/CMakeLists.txt b/unittests/Syntax/CMakeLists.txt
index f310da5..bdb109f 100644
--- a/unittests/Syntax/CMakeLists.txt
+++ b/unittests/Syntax/CMakeLists.txt
@@ -5,6 +5,7 @@
   RawSyntaxTests.cpp
   StmtSyntaxTests.cpp
   ThreadSafeCachingTests.cpp
+  TriviaTests.cpp
   TypeSyntaxTests.cpp)
 
 target_link_libraries(SwiftSyntaxTests
diff --git a/unittests/Syntax/TriviaTests.cpp b/unittests/Syntax/TriviaTests.cpp
new file mode 100644
index 0000000..beca54f
--- /dev/null
+++ b/unittests/Syntax/TriviaTests.cpp
@@ -0,0 +1,263 @@
+#include "swift/Syntax/Trivia.h"
+#include "llvm/ADT/SmallString.h"
+#include "gtest/gtest.h"
+
+using namespace swift;
+using namespace swift::syntax;
+
+TEST(TriviaTests, Empty) {
+  {
+    llvm::SmallString<1> Scratch;
+    llvm::raw_svector_ostream OS(Scratch);
+    Trivia::spaces(0).print(OS);
+    ASSERT_EQ(OS.str().str(), "");
+  }
+  {
+    llvm::SmallString<1> Scratch;
+    llvm::raw_svector_ostream OS(Scratch);
+    Trivia::tabs(0).print(OS);
+    ASSERT_EQ(OS.str().str(), "");
+  }
+  {
+    llvm::SmallString<1> Scratch;
+    llvm::raw_svector_ostream OS(Scratch);
+    Trivia::newlines(0).print(OS);
+    ASSERT_EQ(OS.str().str(), "");
+  }
+#ifndef NDEBUG
+  ASSERT_DEATH({
+    llvm::SmallString<1> Scratch;
+    llvm::raw_svector_ostream OS(Scratch);
+    Trivia::lineComment("").print(OS);
+    ASSERT_EQ(OS.str().str(), "");
+  }, "");
+  ASSERT_DEATH({
+    llvm::SmallString<1> Scratch;
+    llvm::raw_svector_ostream OS(Scratch);
+    Trivia::blockComment("").print(OS);
+    ASSERT_EQ(OS.str().str(), "");
+  }, "");
+  ASSERT_DEATH({
+    llvm::SmallString<1> Scratch;
+    llvm::raw_svector_ostream OS(Scratch);
+    Trivia::docLineComment("").print(OS);
+    ASSERT_EQ(OS.str().str(), "");
+  }, "");
+  ASSERT_DEATH({
+    llvm::SmallString<1> Scratch;
+    llvm::raw_svector_ostream OS(Scratch);
+    Trivia::docBlockComment("").print(OS);
+    ASSERT_EQ(OS.str().str(), "");
+  }, "");
+#endif
+  {
+    llvm::SmallString<1> Scratch;
+    llvm::raw_svector_ostream OS(Scratch);
+    Trivia().print(OS);
+    ASSERT_EQ(OS.str().str(), "");
+  }
+}
+
+TEST(TriviaTests, EmptyEquivalence) {
+  ASSERT_EQ(Trivia(), Trivia::spaces(0));
+  ASSERT_TRUE(Trivia().empty());
+  ASSERT_TRUE((Trivia() + Trivia()).empty());
+  ASSERT_EQ(Trivia(), Trivia::tabs(0));
+  ASSERT_EQ(Trivia(), Trivia::newlines(0));
+  ASSERT_EQ(Trivia() + Trivia(), Trivia());
+}
+
+TEST(TriviaTests, Backtick) {
+  llvm::SmallString<1> Scratch;
+  llvm::raw_svector_ostream OS(Scratch);
+  Trivia::backtick().print(OS);
+  ASSERT_EQ(OS.str().str(), "`");
+}
+
+TEST(TriviaTests, PrintingSpaces) {
+  llvm::SmallString<4> Scratch;
+  llvm::raw_svector_ostream OS(Scratch);
+  Trivia::spaces(4).print(OS);
+  ASSERT_EQ(OS.str().str(), "    ");
+}
+
+TEST(TriviaTests, PrintingTabs) {
+  llvm::SmallString<4> Scratch;
+  llvm::raw_svector_ostream OS(Scratch);
+  Trivia::tabs(4).print(OS);
+  ASSERT_EQ(OS.str().str(), "\t\t\t\t");
+}
+
+TEST(TriviaTests, PrintingNewlines) {
+  llvm::SmallString<4> Scratch;
+  llvm::raw_svector_ostream OS(Scratch);
+  Trivia::newlines(4).print(OS);
+  ASSERT_EQ(OS.str().str(), "\n\n\n\n");
+}
+
+TEST(TriviaTests, PrintingLineComments) {
+  llvm::SmallString<256> Scratch;
+  llvm::raw_svector_ostream OS(Scratch);
+  auto Lines = Trivia::lineComment("// Line 1") +
+               Trivia::newlines(1) +
+               Trivia::lineComment("// Line 2");
+  Lines.print(OS);
+  ASSERT_EQ(OS.str().str(), "// Line 1\n// Line 2");
+}
+
+TEST(TriviaTests, PrintingBlockComments) {
+  llvm::SmallString<256> Scratch;
+  llvm::raw_svector_ostream OS(Scratch);
+  Trivia::blockComment("/* Block Line 1\n\n  Block Line 2 */").print(OS);
+  ASSERT_EQ(OS.str().str(), "/* Block Line 1\n\n  Block Line 2 */");
+}
+
+TEST(TriviaTests, PrintingDocLineComments) {
+  llvm::SmallString<256> Scratch;
+  llvm::raw_svector_ostream OS(Scratch);
+  auto Lines = Trivia::lineComment("/// Line 1") +
+  Trivia::newlines(1) +
+  Trivia::lineComment("/// Line 2");
+  Lines.print(OS);
+  ASSERT_EQ(OS.str().str(), "/// Line 1\n/// Line 2");
+}
+
+TEST(TriviaTests, PrintingDocBlockComments) {
+  llvm::SmallString<256> Scratch;
+  llvm::raw_svector_ostream OS(Scratch);
+  Trivia::blockComment("/** Block Line 1\n\n  Block Line 2 */").print(OS);
+  ASSERT_EQ(OS.str().str(), "/** Block Line 1\n\n  Block Line 2 */");
+}
+
+TEST(TriviaTests, PrintingCombinations) {
+  {
+    llvm::SmallString<4> Scratch;
+    llvm::raw_svector_ostream OS(Scratch);
+    (Trivia() + Trivia()).print(OS);
+    ASSERT_EQ(OS.str().str(), "");
+  }
+
+  {
+    llvm::SmallString<4> Scratch;
+    llvm::raw_svector_ostream OS(Scratch);
+    (Trivia::newlines(2) + Trivia::spaces(2)).print(OS);
+    ASSERT_EQ(OS.str().str(), "\n\n  ");
+  }
+
+  {
+    llvm::SmallString<48> Scratch;
+    llvm::raw_svector_ostream OS(Scratch);
+    auto CCCCombo = Trivia::spaces(1) +
+      Trivia::tabs(1) +
+      Trivia::newlines(1) +
+      Trivia::backtick();
+    CCCCombo.print(OS);
+    ASSERT_EQ(OS.str().str(), " \t\n`");
+  }
+
+  {
+    // Combos with comments
+  }
+}
+
+TEST(TriviaTests, Contains) {
+  ASSERT_FALSE(Trivia().contains(TriviaKind::Backtick));
+  ASSERT_FALSE(Trivia().contains(TriviaKind::BlockComment));
+  ASSERT_FALSE(Trivia().contains(TriviaKind::DocBlockComment));
+  ASSERT_FALSE(Trivia().contains(TriviaKind::DocLineComment));
+  ASSERT_FALSE(Trivia().contains(TriviaKind::Formfeed));
+  ASSERT_FALSE(Trivia().contains(TriviaKind::LineComment));
+  ASSERT_FALSE(Trivia().contains(TriviaKind::Newline));
+  ASSERT_FALSE(Trivia().contains(TriviaKind::Space));
+
+  ASSERT_TRUE(Trivia::backtick().contains(TriviaKind::Backtick));
+  ASSERT_TRUE(Trivia::blockComment("/**/").contains(TriviaKind::BlockComment));
+  ASSERT_TRUE(Trivia::docBlockComment("/***/")
+              .contains(TriviaKind::DocBlockComment));
+  ASSERT_TRUE(Trivia::docLineComment("///")
+              .contains(TriviaKind::DocLineComment));
+  ASSERT_TRUE(Trivia::lineComment("//").contains(TriviaKind::LineComment));
+  ASSERT_TRUE(Trivia::newlines(1).contains(TriviaKind::Newline));
+  ASSERT_TRUE(Trivia::spaces(1).contains(TriviaKind::Space));
+
+  auto Combo = Trivia::spaces(1) + Trivia::backtick() + Trivia::newlines(3)
+    + Trivia::spaces(1);
+
+  ASSERT_TRUE(Combo.contains(TriviaKind::Space));
+  ASSERT_TRUE(Combo.contains(TriviaKind::Newline));
+  ASSERT_TRUE(Combo.contains(TriviaKind::Backtick));
+  ASSERT_FALSE(Combo.contains(TriviaKind::Tab));
+  ASSERT_FALSE(Combo.contains(TriviaKind::LineComment));
+  ASSERT_FALSE(Combo.contains(TriviaKind::Formfeed));
+}
+
+TEST(TriviaTests, Iteration) {
+
+  llvm::SmallString<6> WholeScratch;
+  llvm::raw_svector_ostream WholeOS(WholeScratch);
+  auto Triv = Trivia::spaces(2) + Trivia::newlines(2) + Trivia::spaces(2);
+  Triv.print(WholeOS);
+
+  llvm::SmallString<6> PiecesScratch;
+  llvm::raw_svector_ostream PiecesOS(PiecesScratch);
+  for (const auto &Piece : Triv) {
+    Piece.print(PiecesOS);
+  }
+
+  ASSERT_EQ(WholeOS.str().str(), PiecesOS.str().str());
+}
+
+TEST(TriviaTests, push_back) {
+  llvm::SmallString<3> Scratch;
+  llvm::raw_svector_ostream OS(Scratch);
+  Trivia Triv;
+  Triv.push_back(TriviaPiece::backtick());
+  Triv.push_back(TriviaPiece::backtick());
+  Triv.push_back(TriviaPiece::backtick());
+  Triv.print(OS);
+  ASSERT_EQ(OS.str().str(), "```");
+}
+
+TEST(TriviaTests, push_front) {
+  llvm::SmallString<3> Scratch;
+  llvm::raw_svector_ostream OS(Scratch);
+  Trivia Triv;
+  Triv.push_back(TriviaPiece::backtick());
+  Triv.push_front(TriviaPiece::spaces(1));
+  Triv.push_back(TriviaPiece::spaces(1));
+  Triv.push_front(TriviaPiece::backtick());
+  Triv.print(OS);
+  ASSERT_EQ(OS.str().str(), "` ` ");
+}
+
+TEST(TriviaTests, front) {
+#ifndef NDEBUG
+  ASSERT_DEATH({
+    Trivia().front();
+  }, "");
+#endif
+
+  ASSERT_EQ(Trivia::spaces(1).front(), TriviaPiece::spaces(1));
+
+  ASSERT_EQ((Trivia::spaces(1) + Trivia::newlines(1)).front(),
+            TriviaPiece::spaces(1));
+}
+
+TEST(TriviaTests, back) {
+#ifndef NDEBUG
+  ASSERT_DEATH({
+    Trivia().back();
+  }, "");
+#endif
+  ASSERT_EQ(Trivia::spaces(1).back(), TriviaPiece::spaces(1));
+  ASSERT_EQ((Trivia::spaces(1) + Trivia::newlines(1)).back(),
+            TriviaPiece::newlines(1));
+}
+
+TEST(TriviaTests, size) {
+  ASSERT_EQ(Trivia().size(), 0);
+  ASSERT_EQ(Trivia::spaces(1).size(), 1);
+
+  // Trivia doesn't currently coalesce on its own.
+  ASSERT_EQ((Trivia::spaces(1) + Trivia::spaces(1)).size(), 2);
+}
diff --git a/utils/update-checkout b/utils/update-checkout
index d91aa66..8d6c88d 100755
--- a/utils/update-checkout
+++ b/utils/update-checkout
@@ -50,7 +50,7 @@
                  '--before=' + timestamp]
     # Prefer the most-recent change _made by swift-ci_ before the timestamp,
     # falling back to most-recent in general if there is none by swift-ci.
-    rev = shell.capture(base_args + [ '--author', 'swift-ci', refspec]).strip()
+    rev = shell.capture(base_args + ['--author', 'swift-ci', refspec]).strip()
     if rev:
         return rev
     rev = shell.capture(base_args + [refspec]).strip()
@@ -184,6 +184,7 @@
         return shell.capture(["git", "log", "-1", "--format=%cI"],
                              echo=False).strip()
 
+
 def update_all_repositories(args, config, scheme_name, cross_repos_pr):
     scheme_map = None
     if scheme_name:
diff --git a/validation-test/Sema/type_checker_perf_failing/array_of_tuples.swift.gyb b/validation-test/Sema/type_checker_perf_failing/array_of_tuples.swift.gyb
new file mode 100644
index 0000000..8c693d9
--- /dev/null
+++ b/validation-test/Sema/type_checker_perf_failing/array_of_tuples.swift.gyb
@@ -0,0 +1,9 @@
+// RUN: not %scale-test -O --begin 1 --end 3 --step 1 --select incrementScopeCounter %s
+// REQUIRES: OS=macosx
+// REQUIRES: asserts
+
+let a = [
+%for i in range(0, N):
+  (1, 1),
+%end
+]
diff --git a/validation-test/Sema/type_checker_perf_failing/nil_coalescing.swift.gyb b/validation-test/Sema/type_checker_perf_failing/nil_coalescing.swift.gyb
new file mode 100644
index 0000000..b9c2162
--- /dev/null
+++ b/validation-test/Sema/type_checker_perf_failing/nil_coalescing.swift.gyb
@@ -0,0 +1,10 @@
+// RUN: not %scale-test -O --begin 1 --end 3 --step 1 --select incrementScopeCounter %s
+// REQUIRES: OS=macosx
+// REQUIRES: asserts
+
+func t(_ x: Int?) -> Int {
+  return (x ?? 0)
+%for i in range(1, N):
+         + (x ?? 0)
+%end
+}